Skip to content

Conversation

recursionlab
Copy link
Owner

@recursionlab recursionlab commented Sep 20, 2025

This PR ports the Cathedral design system to the Jekyll site.

What’s included

  • HSL design tokens via CSS custom properties in assets/css/main.scss (:root + .dark)
  • Dark mode token overrides (opt-in via .dark class)
  • Sacred animations (fadeIn, sacredPulse), smooth scroll, and custom scrollbar
  • Theme overrides to apply tokens site-wide (body, links, code/pre/blockquote/table/hr)
  • Syntax highlighting remapped to Cathedral tokens in _sass/_syntax.scss
  • Sass variables: $brand-color mapped to Cathedral primary (HSL), preserving Sass color math compatibility
  • Small cleanups in _sass/_base.scss and _sass/_reset.scss to reduce hard-coded colors

Notes

  • Sass variables remain concrete where mix()/darken() are used; CSS variables aren’t used inside Sass color functions to avoid build errors.
  • Vendor Sass files emit deprecation warnings (pre-existing). They don’t block the build.

Verification

  • Local bundle exec jekyll build PASS.
  • Visual smoke check: background/foreground, link states, code/pre, blockquotes, and pagination respect tokens.

Follow-ups (optional)

  • Gradually replace remaining hard-coded colors in vendor or legacy partials with variables.
  • Consider migrating away from deprecated Sass imports/functions in the long term.

Summary by Sourcery

Port the Cathedral design system into the Jekyll site by introducing HSL-based CSS tokens, dark mode support, sacred geometry animations, custom scrollbar, and theme-wide style overrides, while refactoring Sass variables and syntax highlighting to adopt the new palette.

New Features:

  • Add HSL-based CSS custom properties for core palette, accents, gradients, shadows, and transitions
  • Introduce dark mode variants via a .dark class to override design tokens
  • Include sacred geometry animations (fadeIn, sacredPulse), smooth scroll behavior, and custom scrollbar styling

Enhancements:

  • Replace hard-coded colors across Sass files (base, reset, buttons, navigation, variables) with design tokens
  • Remap syntax highlighting rules to Cathedral tokens in _sass/_syntax.scss
  • Map the $brand-color Sass variable to the Cathedral primary hue to maintain legacy Sass color math

Chores:

  • Clean up minor style resets and standardize index.md description quoting

…ace a few hard-coded colors with variables, and keep SCSS colors concrete to pass build
…-based base overrides; fix YAML; prep for PR
Copy link

sourcery-ai bot commented Sep 20, 2025

Reviewer's Guide

This PR ports the Cathedral design system into the Jekyll site by introducing HSL-based CSS custom properties (with dark mode), adding sacred animations and UI enhancements, applying the new tokens site-wide, remapping syntax highlighting to use these variables, and modernizing Sass variables to eliminate hard-coded colors.

File-Level Changes

Change Details Files
Introduce CSS custom properties for Cathedral tokens and dark mode overrides
  • Defined HSL-based design tokens under :root
  • Added .dark class overrides for dark mode
assets/css/main.scss
Add sacred animations, smooth scrolling, and custom scrollbar
  • Defined @Keyframes fadeIn and sacredPulse with utility classes
  • Enabled html scroll-behavior: smooth and styled WebKit scrollbar
assets/css/main.scss
Apply theme overrides site-wide using tokens
  • Updated body, link, code/pre, blockquote, hr, and table styles
  • Replaced hard-coded values with CSS variables
assets/css/main.scss
Remap syntax highlighting to Cathedral tokens
  • Replaced Solarized color definitions with CSS variable references
  • Simplified highlight rules to use hsl(var(--…))
_sass/_syntax.scss
Modernize Sass variables and clean up hard-coded colors
  • Mapped $brand-color to Cathedral primary in HSL
  • Updated variables, base, reset, buttons, and navigation to use tokens
  • Removed hard-coded hex values in favor of variable-based colors
_sass/_variables.scss
_sass/_base.scss
_sass/_reset.scss
_sass/_buttons.scss
_sass/_navigation.scss

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@recursionlab recursionlab merged commit 0f2e309 into main Sep 20, 2025
1 of 2 checks passed
@recursionlab recursionlab deleted the feat/cathedral-color-theme branch September 20, 2025 17:50
Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey there - I've reviewed your changes - here's some feedback:

  • To automatically respect user preferences, consider adding @media (prefers-color-scheme: dark) rules alongside the .dark class for dark mode.
  • Centralize your CSS custom property lists into a dedicated theme partial or data map and import/iterate in SCSS to keep your root and .dark overrides DRY.
  • The syntax highlighting token mapping is very repetitive—consider consolidating duplicate assignments or generating the mappings programmatically to ease future updates.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- To automatically respect user preferences, consider adding @media (prefers-color-scheme: dark) rules alongside the .dark class for dark mode.
- Centralize your CSS custom property lists into a dedicated theme partial or data map and import/iterate in SCSS to keep your root and .dark overrides DRY.
- The syntax highlighting token mapping is very repetitive—consider consolidating duplicate assignments or generating the mappings programmatically to ease future updates.

## Individual Comments

### Comment 1
<location> `_sass/_base.scss:36` </location>
<code_context>
     font-size: .8em;
 }

-table td {
-    border-bottom: solid 2px #e6e6e6;
-}
+table td { border-bottom: solid 2px mix(#fff, $border-color, 60%); }

 .button-dark {
</code_context>

<issue_to_address>
**suggestion:** Mixing #fff with $border-color for table borders may reduce contrast in dark themes.

Consider using a variable or conditional logic to maintain adequate border contrast in both light and dark themes for accessibility.

Suggested implementation:

```
$table-border-color: mix(#fff, $border-color, 60%);

// If you have a dark theme, override $table-border-color for accessibility
// Example using a .dark-theme class (adjust to your theme logic)
.dark-theme {
  $table-border-color: mix(#000, $border-color, 60%);
}

table td { border-bottom: solid 2px $table-border-color; }

```

If your theme switching uses CSS custom properties (variables) or a different mechanism, you should adapt the variable assignment accordingly. For example, you might use `var(--table-border-color)` and set that property in your theme root or body selector. If you use SCSS maps or functions for theme management, update those instead.
</issue_to_address>

### Comment 2
<location> `_sass/_base.scss:167-171` </location>
<code_context>
   left: -0.2em;
   top: -0.2em;
-  color: #7a7a7a;
+  color: mix(#fff, $text-color, 50%);
 }

 blockquote cite {
-  color: #999999;
+  color: mix(#fff, $text-color, 60%);
   font-size: 0.9em;
   display: block;
</code_context>

<issue_to_address>
**suggestion:** Mixing #fff with $text-color for blockquote elements may not adapt well to dark mode.

Consider using theme variables or adjusting the mix ratio to ensure sufficient contrast and readability in dark mode.

Suggested implementation:

```
blockquote cite {
  color: var(--blockquote-cite-color, mix(#fff, $text-color, 80%));
  font-size: 0.9em;
  display: block;
  margin-top: 5px;

```

To fully implement this, you should:
1. Define `--blockquote-cite-color` in your CSS root or theme files for both light and dark modes, for example:
```css
:root {
  --blockquote-cite-color: #666; /* Light mode */
}
[data-theme="dark"] {
  --blockquote-cite-color: #bbb; /* Dark mode */
}
```
2. Adjust the fallback mix ratio (`80%`) if you find it does not provide enough contrast in your design.
</issue_to_address>

### Comment 3
<location> `_sass/_reset.scss:36` </location>
<code_context>
       }

       &.current {
-        color: #fff;
+        color: hsl(var(--primary-foreground));
         background: $theme-color;
</code_context>

<issue_to_address>
**issue:** Selection color and background may be confusing if $background-color is light.

Swapping the selection colors or choosing a more distinct highlight will improve legibility, especially with light backgrounds and dark text.
</issue_to_address>

### Comment 4
<location> `assets/css/main.scss:179` </location>
<code_context>
+::-webkit-scrollbar { width: 8px; }
+::-webkit-scrollbar-track { background: hsl(var(--muted)); }
+::-webkit-scrollbar-thumb { background: hsl(var(--primary)); border-radius: 4px; }
+::-webkit-scrollbar-thumb:hover { background: hsl(var(--primary) / 0.8); }
+
+/* Theme overrides to adopt Cathedral palette */
</code_context>

<issue_to_address>
**issue:** The use of hsl(var(--primary) / 0.8) may not be supported in all browsers.

Consider using rgba or providing a fallback to ensure compatibility with browsers that do not support this hsl alpha syntax.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

font-size: .8em;
}

table td {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Mixing #fff with $border-color for table borders may reduce contrast in dark themes.

Consider using a variable or conditional logic to maintain adequate border contrast in both light and dark themes for accessibility.

Suggested implementation:

$table-border-color: mix(#fff, $border-color, 60%);

// If you have a dark theme, override $table-border-color for accessibility
// Example using a .dark-theme class (adjust to your theme logic)
.dark-theme {
  $table-border-color: mix(#000, $border-color, 60%);
}

table td { border-bottom: solid 2px $table-border-color; }

If your theme switching uses CSS custom properties (variables) or a different mechanism, you should adapt the variable assignment accordingly. For example, you might use var(--table-border-color) and set that property in your theme root or body selector. If you use SCSS maps or functions for theme management, update those instead.

Comment on lines +167 to +171
color: mix(#fff, $text-color, 50%);
}

blockquote cite {
color: #999999;
color: mix(#fff, $text-color, 60%);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Mixing #fff with $text-color for blockquote elements may not adapt well to dark mode.

Consider using theme variables or adjusting the mix ratio to ensure sufficient contrast and readability in dark mode.

Suggested implementation:

blockquote cite {
  color: var(--blockquote-cite-color, mix(#fff, $text-color, 80%));
  font-size: 0.9em;
  display: block;
  margin-top: 5px;

To fully implement this, you should:

  1. Define --blockquote-cite-color in your CSS root or theme files for both light and dark modes, for example:
:root {
  --blockquote-cite-color: #666; /* Light mode */
}
[data-theme="dark"] {
  --blockquote-cite-color: #bbb; /* Dark mode */
}
  1. Adjust the fallback mix ratio (80%) if you find it does not provide enough contrast in your design.

/* Selected elements */

::-moz-selection {
color: #fff;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue: Selection color and background may be confusing if $background-color is light.

Swapping the selection colors or choosing a more distinct highlight will improve legibility, especially with light backgrounds and dark text.

::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: hsl(var(--muted)); }
::-webkit-scrollbar-thumb { background: hsl(var(--primary)); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: hsl(var(--primary) / 0.8); }
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue: The use of hsl(var(--primary) / 0.8) may not be supported in all browsers.

Consider using rgba or providing a fallback to ensure compatibility with browsers that do not support this hsl alpha syntax.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant