Files
markusgraf_ch/docs/SCSS_STYLING.md
gurixandClaude bf52fda68f feat: add custom Bootstrap styling with SCSS support
Implement SCSS-based custom styling system to enable Bootstrap customization while maintaining CDN delivery for core framework.

Changes:
- Add Hugo Pipes SCSS processing pipeline using css.Sass
- Create modular SCSS file structure (main.scss, _variables.scss, _custom.scss)
- Implement custom typography (base font size 1.25rem, adjusted heading sizes)
- Add custom link colors (#0b0089 primary, #0052a3 hover)
- Configure CSS minification and SHA-384 fingerprinting for cache busting
- Add comprehensive SCSS styling documentation

Technical details:
- Updated baseof.html to compile SCSS with Hugo Pipes
- CSS loads after Bootstrap CDN for proper cascade
- Minified output (~154 bytes)
- Supports live reload in development mode

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 22:04:52 +01:00

164 lines
3.9 KiB
Markdown

# Custom SCSS Styling
This document describes the SCSS-based custom styling system for the markusgraf.ch Hugo site.
## Overview
The site uses a hybrid approach for styling:
- **Bootstrap 5.3.2** loaded from CDN (core framework)
- **Custom SCSS** compiled via Hugo Pipes (overrides and custom styles)
This approach provides the benefits of Bootstrap's CDN (speed, caching) while allowing complete customization through SCSS.
## File Structure
```
assets/scss/
├── main.scss # Main entry point (imports all partials)
├── _variables.scss # Bootstrap variable overrides
└── _custom.scss # Custom component styles
```
### main.scss
The main entry point that Hugo processes. This file imports all SCSS partials in the correct order.
### _variables.scss
Bootstrap variable overrides for customizing design tokens:
- Heading font sizes (h1-h6)
- Link colors and hover states
- Spacing scale (optional)
- Any other Bootstrap variables
### _custom.scss
Custom component styles and utilities that extend Bootstrap or add new styles.
## How It Works
### Compilation Process
1. Hugo reads `assets/scss/main.scss`
2. Hugo processes SCSS with `css.Sass` function
3. Output is minified (`outputStyle: compressed`)
4. CSS is fingerprinted with SHA-384 for cache busting
5. Integrity hash is added to the `<link>` tag
### CSS Load Order
In `layouts/_default/baseof.html`:
```html
<!-- Bootstrap CDN CSS (base styles) -->
<link href="https://cdn.jsdelivr.net/.../bootstrap.min.css" rel="stylesheet">
<!-- Custom compiled CSS (overrides) -->
<link rel="stylesheet" href="/css/main.[fingerprint].css" integrity="sha384-...">
```
This order ensures custom styles cascade over Bootstrap defaults.
## Customization Guide
### Changing Heading Sizes
Edit `assets/scss/_variables.scss`:
```scss
$h1-font-size: 3rem; // Make h1 larger
$h2-font-size: 2.25rem; // Make h2 larger
```
### Changing Link Colors
Edit `assets/scss/_variables.scss`:
```scss
$link-color: #0066cc; // Primary link color
$link-hover-color: #0052a3; // Hover state color
```
### Adding Custom Component Styles
Edit `assets/scss/_custom.scss`:
```scss
.navbar-brand {
font-weight: 700;
letter-spacing: 0.05em;
}
.card {
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
```
### Adding New SCSS Partials
1. Create a new file: `assets/scss/_mypartial.scss`
2. Import it in `main.scss`: `@import 'mypartial';`
## Development Workflow
### Development Mode
```bash
hugo server
```
- SCSS changes trigger automatic recompilation
- Browser live-reloads with updated styles
- Source maps are available for debugging
### Production Build
```bash
hugo build
```
- SCSS is compiled with minification
- No source maps are included
- CSS is fingerprinted for cache busting
## Performance
- Custom CSS file size: ~154 bytes (current)
- Minified and compressed
- Cached via fingerprinting
- Minimal impact on page load
## Best Practices
1. **Keep it minimal** - Only override what you need
2. **Use SCSS features** - Variables, nesting, mixins when beneficial
3. **Organize by concern** - Use partials to separate different types of styles
4. **Comment your code** - Explain why specific overrides are needed
5. **Test in multiple browsers** - Ensure compatibility
## Troubleshooting
### SCSS Won't Compile
Check Hugo version supports `css.Sass` (v0.128.0+):
```bash
hugo version
```
### Styles Not Applying
1. Check CSS load order in browser DevTools
2. Verify fingerprinted CSS file exists in `public/css/`
3. Check for SCSS syntax errors in Hugo output
### Cache Issues
The fingerprinting ensures cache busting, but during development you can:
```bash
hugo server --disableFastRender
```
## References
- [Hugo Pipes SCSS Processing](https://gohugo.io/hugo-pipes/scss-sass/)
- [Bootstrap 5.3 Customization](https://getbootstrap.com/docs/5.3/customize/sass/)
- [SCSS Documentation](https://sass-lang.com/documentation)