Pre-launch — Gluecron is in final validation. Public signups and git hosting for non-owner users open after launch review.
Commited6e438unknown_key

polish(global): page entrance animation + accent focus ring (session 1.4)

polish(global): page entrance animation + accent focus ring (session 1.4)

Phase 1.4 — global UX polish that propagates to every page. Cheap to
ship, visible everywhere, makes the site feel alive instead of static.

Changes to src/views/layout.tsx:

  1. Page entrance animation on <main>:
       gxMainEnter — 360ms ease-out fade-up of 4px
       cubic-bezier(0.22, 1, 0.36, 1) is the 'fast-out, slow-in'
       curve used by Linear / Vercel / Stripe — feels intentional,
       never sluggish.

     Result: navigating to ANY page produces a soft 'land' that
     signals 'this loaded for you' instead of a hard pop-in.
     Honors prefers-reduced-motion: reduce.

  2. Accent-tinted focus ring across all focusable elements:
       2px outline in rgba(140, 109, 255, 0.55) with 2px offset
       :focus-visible only (mouse users never see it; keyboard
       users get a clean accent-coloured indicator).

     Replaces the browser default blue ring that fights the violet
     brand palette. Keyboard navigation now feels intentional.

Tests: 2003/2003 pass.

End of Phase 1 polish session — what shipped:
  3a5755e — web fonts + animated hero + bigger headline
  13ac035 — pricing 'bundle math vs GitHub' comparison block
  98f45b4 — login/register premium gateway feel
  98f45b4..HEAD — global page entrance + accent focus ring

Total: 4 commits, ~140 lines of polish across landing, pricing,
auth, layout, and global CSS. The deploy will fire shortly; the
visible transformation is concentrated where new visitors form
their first impression (landing hero, pricing) and where existing
users live (every page via main entrance animation + nav focus).

Phase 2 work for next session (queued): dashboard hero rebuild,
repo home page polish, PR/issue UI modernization, empty/error
state pass.
Claude committed on May 17, 2026Parent: 98f45b4
1 file changed+290ed6e43883275f90ef86d59276a61a5de908d4ef3
1 changed file+29−0
Modifiedsrc/views/layout.tsx+29−0View fileUnifiedSplit
14551455 padding: 36px 24px 80px;
14561456 flex: 1;
14571457 width: 100%;
1458 /* 2026 polish — subtle entrance animation on every page load.
1459 Content fades up 4px over 360ms, giving the site that "alive"
1460 quality that 2026 SaaS expects. Honors prefers-reduced-motion. */
1461 animation: gxMainEnter 360ms cubic-bezier(0.22, 1, 0.36, 1) both;
1462 }
1463 @keyframes gxMainEnter {
1464 from { opacity: 0; transform: translateY(4px); }
1465 to { opacity: 1; transform: translateY(0); }
1466 }
1467 @media (prefers-reduced-motion: reduce) {
1468 main { animation: none; }
1469 }
1470 /* 2026 polish — accent focus ring across all focusable elements.
1471 The default browser ring is utilitarian; this is the same width
1472 but tinted to the brand accent so keyboard navigation feels
1473 intentional, not jarring. :focus-visible only — mouse users
1474 never see it. */
1475 :focus-visible {
1476 outline: none;
1477 }
1478 a:focus-visible,
1479 button:focus-visible,
1480 input:focus-visible,
1481 select:focus-visible,
1482 textarea:focus-visible,
1483 [tabindex]:focus-visible {
1484 outline: 2px solid rgba(140, 109, 255, 0.55);
1485 outline-offset: 2px;
1486 border-radius: 4px;
14581487 }
14591488
14601489 /* Editorial footer: link grid + tagline row */
14611490