feat(motion): add scroll reveals and micro-interactions

This commit is contained in:
2026-09-07 00:19:07 +03:30
parent fa98f70b51
commit b0c9ad1296
20 changed files with 420 additions and 24 deletions

View File

@@ -28,6 +28,7 @@
}
.nodeDot {
position: relative;
width: 0.875rem;
height: 0.875rem;
border-radius: 50%;
@@ -44,6 +45,28 @@
box-shadow: 0 0 0 4px rgba(61, 138, 250, 0.25);
}
.nodeCurrent::after {
content: '';
position: absolute;
inset: -0.375rem;
border: 1px solid var(--accent-default);
border-radius: 50%;
opacity: 0;
animation: currentRolePulse 2.4s var(--motion-ease-out) infinite;
}
@keyframes currentRolePulse {
0% {
opacity: 0.45;
transform: scale(0.7);
}
70%,
100% {
opacity: 0;
transform: scale(1.35);
}
}
.verticalLine {
position: absolute;
top: 1.25rem;
@@ -51,6 +74,16 @@
width: 2px;
background-color: var(--border-strong);
z-index: 1;
transform-origin: top center;
}
:global(html[data-motion-ready='true']) .timelineItem[data-reveal] .verticalLine {
transform: scaleY(0);
transition: transform 600ms var(--motion-ease-in-out) 120ms;
}
:global(html[data-motion-ready='true']) .timelineItem[data-visible='true'] .verticalLine {
transform: scaleY(1);
}
.itemContent {
@@ -61,6 +94,16 @@
gap: 2.25rem;
}
@media (prefers-reduced-motion: reduce) {
.nodeCurrent::after {
animation: none;
}
:global(html[data-motion-ready='true']) .timelineItem[data-reveal] .verticalLine {
transform: scaleY(1);
}
}
.identityCol {
width: 22.5rem;
flex-shrink: 0;