Modern re-design of the main Resume block.
Awards block icons are no longer tied to the 'brands' pack - any pack can be used and specified in the form `icon: <pack>/<icon>
Refactor Tailwind CSS theming to support full primary/secondary palettes
Refactors the theme system to correctly apply primary and secondary color palettes from theme packs.
Previously, Tailwind's build-time resolution of CSS variables in the `@theme` block caused theme pack colors to be overridden by the default blue theme.
This commit resolves the issue by adopting a best-practice, two-layer token system:
1. All theme packs now define `--hb-primary-*-rgb` and `--hb-secondary-*-rgb` variables with raw RGB values.
2. The core `theme.css` now defines `--color-primary-*` and `--color-secondary-*` inside the `@theme` block using a `rgb(var(...))` function. This makes Tailwind aware of the themeable color names so it can generate all necessary utilities (`bg-`, `text-`, `ring-`, etc.) while ensuring the final color value is resolved in the browser at runtime.
This change fixes the build error related to unknown utility classes (e.g., `ring-primary-500`) and ensures that the selected theme pack is correctly applied across all components.
- Fix dark mode code block styling in chroma.css (background stays bright issue)
- Resolve JavaScript errors with window.hbb object initialization
- Fix Mermaid.js color parsing errors with proper CSS variable fallbacks
- Move inline JavaScript to external files for CSP compliance
- Create dedicated hb-search.js for search functionality
- Add proper error handling and validation for PagefindUI initialization
- Update .stylelintrc.yaml to disable no-descending-specificity rule
- Fix remaining lint issues: flex-flow shorthand and kebab-case IDs
- Ensure theme toggler functionality works correctly
Resolves regressions introduced during Tailwind 3→4 migration.
All functionality now works in both light and dark modes.
Refactored from legacy layouts/partials/blox/* system to:
- blox/<block-id>/block.html source structure
- Hugo module mounts to layouts/partials/hbx/blocks/<block-id>/block.html
- Resolver-based lookup
- Support for data-driven pages and client islands
optimize site.AllPages with Site.Scratch guard and scope to pages only
- Add Site.Scratch guard to run init logic only once per build
- Limit .Content pre-warming to pages (Kind == 'page') to reduce overhead
- Preserve Hugo concurrency workaround for Page.Store and backlinks
- Maintain existing block configuration preloading for landing pages
Resolves#3123
## What Changed
**Avatar Quality Improvements:**
- Generate avatars at 2x resolution for crisp display on high-DPI screens
- Updated Hugo imaging config with quality: 90, lanczos resampling, and picture hint
- Improved WebP compression quality across all avatar locations
**New Customization Parameters:**
- Added design.avatar.size with 5 options: small (150px), medium (200px), large (320px), xl (400px), xxl (500px)
- Added design.avatar.shape with 3 options: circle (default), square, rounded
- Sizing aligned with 2025 social media standards (LinkedIn/X: 400px, Instagram: 320px, TikTok: 200px)
**Updated Templates:**
- Enhanced resume-biography.html and resume-biography-3.html with flexible parameter system
- Updated all starter templates (academic-cv, resume, blog, link-in-bio) with example configurations
- Improved avatar CSS for dynamic sizing control