Making ysws.hackclub.com fit with the new site design!!#334
Merged
Conversation
Matches the redesigned hackclub/site (Next.js + Tailwind v4). Changes: - Typography: Phantom Sans + Zarathustra via Hack Club CDN (Outfit + Instrument Serif fallbacks) - Light-by-default theme with cream/ink dark mode (was a denser dark-only feel) - Translucent sticky navbar with backdrop blur, pill-shaped nav links - Hero: editorial display headline with animated rainbow gradient accent - Pill-style CTA button with sliding arrow on hover - Wave divider between hero and stats sections, scalloped edge above footer - Cards: clean paper feel, soft shadow, hover lift - Programs container: paper sheet over subtle dot-grid background - Filter / sort buttons: pill toggles, ink-on-active - Modal: cleaner light surface, rotate-on-hover close button - FAQ: borderless paper accordions, red expand state - Footer: solid black with cream type and scalloped wave above (matches new site) - Removed busy decorations: gradient blobs, circuit pattern, grid overlay - Preserved: all per-program brand treatments (Macondo, Horizons, Blueprint, Shipyard, Bauble, etc.) - Preserved: all script.js functionality (completion tracking, modal nav, timeline, search, filters)search, filters)
The dark-theme override flipped `--ink` to the cream colour, so the CTA button and active filter/sort pills resolved to cream-on-cream (a blank white blob). Fix: - Keep `--ink` constant (`#17171d`) in both light and dark modes — it is a brand colour, not a theme token. - Introduce `--invert-bg` / `--invert-fg` tokens that automatically flip with the theme: dark pill on light page in light mode, light pill on dark page in dark mode. - CTA button, hero-card-back, active filter / sort buttons, and modal-nav hover now use the inverted tokens so they always pop against their parent surface. - Drop the now-redundant `.dark-theme .filter-btn.active` override.rride.
The redesign forgot to style `.timeline-row` and `.timeline-block`, so the per-program date bars rendered with no row layout and no margins — they ran together as a single solid block. Added: - `.timeline-row` with flex layout, 10px gap between block and outside label, and 8px bottom margin so adjacent bars have breathing room. - `.timeline-block` with explicit 26px height, 12px horizontal padding, pill-end rounded corners (`0 999px 999px 0`), and a soft shadow. - Hover state on the row slides it 2px right and dims the block to 85%. - `.timeline-label` sticky-left positioning so the program name stays visible while scrolling, plus a faint text-shadow on inside labels for legibility on coloured bars. bars.
… view Stat cards: - Add `text-align: center`, flex-column with `align-items: center` so both the number and label are centered inside the card. Previously the redesign left them left-aligned. - Drop the redundant margin-bottom on the number; the flex `gap` handles spacing. Count-up animation: - Previously `loadGlobalStats` called `animateValue` immediately on DOMContentLoaded, so by the time the user scrolled to the stats section the animation had already finished off-screen. - Now `loadGlobalStats` only fetches and caches the data. A new IntersectionObserver on `.global-stats-section` fires `runGlobalStatsAnimation` the first time the section enters the viewport (threshold 0.15), then disconnects so it only plays once. - If the section is already on screen when data arrives (short page, hash anchor), it animates immediately. Browsers without `IntersectionObserver` fall back to running it on load so the numbers always appear.s appear.
The SVG path used `fill="var(--background)"` as an attribute. CSS variables only resolve inside CSS declarations, not raw SVG presentational attributes, so browsers fell back to the default fill (black-ish), producing a dark scalloped strip between the red hero and the stats section.
Fix:
- Drop the broken `fill` attribute on the wave SVG path.
- Set the fill via CSS: `.wave-divider svg path { fill: var(--background); }` — works in every browser and follows the dark/light theme.
- Promote the wave-divider positioning out of inline style into a `.hero-wave` class with explicit `position: absolute; bottom: -1px; height: 40px; z-index: 3;` so the path always renders at the right size above the hero gradient.ient.
MntRushmore
approved these changes
17 hours agoMay 28, 2026
Collaborator
|
dope! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Brings the YSWS Catalog visually in line with the redesigned hackclub/site same typography, same colors , same hero treatment, same wave dividers, same black footer. All catalog data, filters, search, modals, completion tracking, timeline, and per-program brand art are preserved.
Live demo: https://ysws-catalog.onrender.com/
What changed visuallyy
Typography Phantom Sans (body) + Zarathustra (display) loaded from the Hack Club font CDN, with Outfit + Instrument Serif as Google Fonts fallbacks. Editorial display serif on hero/section headlines; geometric sans for everything else..