Futuristic - #44
Merged
Merged
Conversation
Rebuild the design language around HSL channel tokens that compose with alpha, plus the small set of primitives every page shares. - styles.css: light/dark token sets, the .panel glass surface, .eyebrow, .chip, .hairline, .micro-label, .ring-gradient, .text-gradient, the blueprint grid and aurora keyframes, scroll-reveal, and print and reduced-motion overrides - ui/: Reveal, SectionHeading (+ Eyebrow), Tag (+ toneText), Button, Timeline, Clause - siteConfig: one source for email, phone, resume path, socials, role and location, which were previously hardcoded in up to 11 places Light-mode accent and cyan are deliberately held dark enough that accent text on accent/10 fills and white text on the gradient button clear WCAG AA; both were measured under 4.5:1 before being darkened. Markdown is excluded from Tailwind's source scan because class names written in prose were being emitted as real CSS rules. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Every route now nests under a single Layout that owns the header, footer, ambient backdrop, scroll-progress bar, skip link and scroll reset, so pages render only their own sections instead of repeating the chrome. - Header: glass sticky bar that tightens on scroll, animated nav indicator with aria-current, and a mobile sheet that locks page scroll and inerts the content behind it. It closes itself when the viewport crosses md, because the sheet and its close button are both md:hidden and the scroll lock would otherwise have no visible control to release it. - Footer: three-column layout, live copyright year, nav list reused from Header rather than duplicated. - Backdrop: drifting aurora blobs behind a masked grid. Translate-only, so a blur(90px) layer isn't rescaled every frame. - ScrollProgress: writes scaleX straight to the node instead of routing a per-frame value through React state. - Layout: scroll reset uses behavior 'instant'; 'auto' defers to scroll-behavior: smooth and would animate a full-page scroll on every navigation. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Content is unchanged throughout — copy, dates, bullets, links, alt text and images all carry over verbatim. - Home: hero with a gradient-framed portrait, About, segmented skill meters, and a Latest Update teaser built from the existing entries - Resume: contact grid plus a glowing-node timeline shared by experience, education and volunteering - Projects: scrimmed featured panel with a light/dark screenshot swap, hover-lift grid below - Updates: dated timeline feed with a segmented category filter - Terms, Privacy, 404: same system, deliberately quieter Types now separate data from presentation: UpdateEntry vs UpdateCardProps and JobRecord vs JobProps, so presentation-only flags can't leak into the content files and a filter flag no longer forces a meaningless value on the education entry. Update categories derive from a single tone map, making a typo in the data a type error and keeping the filter row in sync. Also drops Radix UI from the BioSite card's technology list; it isn't a dependency of this project. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The favicon is now the nav monogram rather than an unrelated mark. The Z and M are real Space Grotesk Bold glyph outlines embedded as vector paths, so the letterforms render identically without depending on the font being installed, carrying the same accent-cyan-violet gradient as .text-gradient and the same fading rim as .ring-gradient. - favicon.svg (1.2 KB) as the primary, favicon.ico (16-128px) for legacy, apple-touch-icon.png at 180px - Letters sized to ~66% of the circle rather than the nav tile's ~53%, which is unreadable at 16px index.html also preconnects and loads Inter, Space Grotesk and JetBrains Mono, replacing a render-blocking CSS @import, and carries a single theme-color meta that the bootstrap script and ThemeToggle keep in sync. A media-query pair would have been wrong here, since the theme is driven by a class in localStorage rather than the OS preference. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- sitemap: drop the trailing slashes so each loc matches its route in App.tsx exactly, and bump lastmod now that every page has changed - biome.json: schema 2.5.4 -> 2.5.7, via `biome migrate` - CLAUDE.md: document the layout route, the ui/ primitives, the design system class inventory, siteConfig and the layout conventions. Corrects stale claims that Radix UI Themes wrapped the app and that Lora and Space Mono were configured; neither was true. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.