From fd60461db2702cbe73cc400bc098b112e1f19e5c Mon Sep 17 00:00:00 2001
From: hex4
every week, you'll have workshops and AMAs with founders, artists, - and builders that were once at the same place you are now - staring - an idea that feels impossible, and building it anyway. hang out with - other HCers doing the same exhilarating, terrifying thing as you, - make lifelong friends, and grow as a person and as a hacker. + and builders who were once at the same place you are now - staring + at an idea that feels impossible, and building it anyway. hang out + with other HCers doing the same exhilarating, terrifying thing as + you, make lifelong friends, and grow as a person and as a hacker.
+ +
+ this isn't a bootcamp. we're not gonna teach you how to call an API + or open FL Studio. we're also not gonna strictly track your hours or + tell you what to build. instead, we'll give you the structure, the + community, the resources, and the deadline for you to ship something + real. +
+ ++ both of these summers will end. only one will matter. +
+ ++ ꕥ unfold is the program to make your idea real. summer 2026 :) +
+ + + applications open now → + ++ and, if all this resonates with you, we're looking for team members + to help build unfold alongside us. artists, hackers, writers, + makers, and anyone else that'd like to help out - drop a message in #unfold-bts. we'd love to see what you're interested in building. +
@@ -170,6 +211,24 @@ import Scribble from "../components/Scribble.astro"; const CONTENT_DELAY = 2000; // ms after click before first element fades in const STAGGER = 700; // ms between each element + const pendingTimeouts: number[] = []; + let animating = false; + + const skipAnimation = () => { + if (!animating) return; + // clear any pending fade-ins + for (const id of pendingTimeouts) clearTimeout(id); + pendingTimeouts.length = 0; + // flush all elements to visible immediately + const elements = main.children; + for (let i = 0; i < elements.length; i++) { + elements[i].classList.remove("opacity-0"); + elements[i].classList.add("opacity-100"); + } + animating = false; + window.removeEventListener("click", skipAnimation); + }; + intro.addEventListener("click", () => { // 1. fade out the intro overlay intro.classList.add("opacity-0", "pointer-events-none"); @@ -188,15 +247,26 @@ import Scribble from "../components/Scribble.astro"; // 4. fade in each direct child of