feat: ux enhancements (animations, dynamic backgrounds, micro-interactions)

This commit is contained in:
syntaxbullet
2026-01-07 13:05:42 +01:00
parent 43a003f641
commit 4640cd11a7
2 changed files with 102 additions and 34 deletions

View File

@@ -280,4 +280,106 @@ footer {
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}
/* Animations & Micro-Interactions */
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slideUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Entry Animations */
.fade-in {
animation: fadeIn 0.4s ease-out forwards;
}
/* Stagger animations for children using nth-child */
main>* {
opacity: 0;
/* Initially hidden */
animation: slideUp 0.5s ease-out forwards;
}
main>*:nth-child(1) {
animation-delay: 0.1s;
}
main>*:nth-child(2) {
animation-delay: 0.2s;
}
main>*:nth-child(3) {
animation-delay: 0.3s;
}
main>*:nth-child(4) {
animation-delay: 0.4s;
}
/* Dynamic Background */
body::before {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background:
radial-gradient(circle at 15% 50%, hsla(var(--primary-h), var(--primary-s), var(--primary-l), 0.08), transparent 25%),
radial-gradient(circle at 85% 30%, hsla(var(--secondary-h), var(--secondary-s), var(--secondary-l), 0.08), transparent 25%);
z-index: -1;
pointer-events: none;
}
/* Link Interactions */
a {
position: relative;
transition: color 0.2s ease, opacity 0.2s ease;
}
header nav a::after {
content: '';
position: absolute;
bottom: -4px;
left: 0;
width: 0%;
height: 2px;
background: var(--primary);
transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
header nav a:hover::after {
width: 100%;
}
/* Accessibility: Reduced Motion */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}