Merge nucleic/keen-willow-panda-3uc2 into main
Mirrored from corpo ca1549a.
This commit is contained in:
+29
-2
@@ -144,7 +144,7 @@ const canonical = new URL('/', Astro.site);
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<footer class="footer" data-footer>
|
||||
<p>© 2026 Blakeslee Research</p>
|
||||
<div class="footer-links">
|
||||
<a href="mailto:[email protected]">Contact</a>
|
||||
@@ -823,8 +823,18 @@ const canonical = new URL('/', Astro.site);
|
||||
.footer {
|
||||
padding-top: 1rem;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
|
||||
/* The stack is the journey to the site's closing information. Enhancement adds
|
||||
this class before first paint; until its final card is active the footer cannot
|
||||
visually signal that the page has already ended. */
|
||||
.footer.is-awaiting-final-card {
|
||||
opacity: 0;
|
||||
animation: fade-in 700ms 1.1s ease-out forwards;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.footer.is-footer-revealed {
|
||||
animation: fade-in 500ms ease-out forwards;
|
||||
}
|
||||
|
||||
.footer p {
|
||||
@@ -1095,6 +1105,7 @@ const canonical = new URL('/', Astro.site);
|
||||
|
||||
<script>
|
||||
const technologyStack = document.querySelector<HTMLElement>('[data-technology-stack]');
|
||||
const footer = document.querySelector<HTMLElement>('[data-footer]');
|
||||
const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
|
||||
|
||||
if (technologyStack && 'IntersectionObserver' in window && !reducedMotion.matches) {
|
||||
@@ -1111,6 +1122,9 @@ const canonical = new URL('/', Astro.site);
|
||||
heroLead?.classList.add('has-scroll-stack');
|
||||
hero?.classList.add('has-scroll-story');
|
||||
technologyStack.classList.add('is-scroll-stack');
|
||||
footer?.classList.add('is-awaiting-final-card');
|
||||
footer?.setAttribute('aria-hidden', 'true');
|
||||
footer?.setAttribute('inert', '');
|
||||
|
||||
let stackWrappedBelow = false;
|
||||
|
||||
@@ -1217,6 +1231,18 @@ const canonical = new URL('/', Astro.site);
|
||||
{ passive: true },
|
||||
);
|
||||
|
||||
let footerRevealed = false;
|
||||
|
||||
const revealFooter = () => {
|
||||
if (!footer || footerRevealed) return;
|
||||
|
||||
footerRevealed = true;
|
||||
footer.classList.remove('is-awaiting-final-card');
|
||||
footer.classList.add('is-footer-revealed');
|
||||
footer.removeAttribute('aria-hidden');
|
||||
footer.removeAttribute('inert');
|
||||
};
|
||||
|
||||
const activateTechnology = (index: number) => {
|
||||
cards.forEach((card, cardIndex) => {
|
||||
const isActive = cardIndex === index;
|
||||
@@ -1226,6 +1252,7 @@ const canonical = new URL('/', Astro.site);
|
||||
});
|
||||
|
||||
if (progressCurrent) progressCurrent.textContent = String(index + 1).padStart(2, '0');
|
||||
if (index === cards.length - 1) revealFooter();
|
||||
};
|
||||
|
||||
activateTechnology(0);
|
||||
|
||||
Reference in New Issue
Block a user