Modular CSS Architecture

Overview

CSS is now organized by functionality rather than by page. Each page loads only the components it needs, reducing bloat and improving maintainability.

Available Modules

DataTables Components

Use when: Page has DataTable with enhanced search

Pills System

Use when: Page has pill-based filtering (levels, classes, archetypes)

Advanced Filters

Use when: Page has collapsible advanced filter panel (spells-specific)

Page-Specific

Use when: Building spells-like page with favorites/modals

Usage Examples

Simple DataTable Page (Equipment)

<!-- Example: equipment.html - basic DataTables with dark mode -->
<link rel="stylesheet" href="/assets/css/datatables-dark.css"/>

Impact: 2.3K CSS (vs 738 lines if using all spells modules)

<!-- For pages needing custom search field styling -->
<link rel="stylesheet" href="/assets/css/datatables-enhanced.css"/>
<link rel="stylesheet" href="/assets/css/datatables-dark.css"/>

Page with Pills Only

<link rel="stylesheet" href="/assets/css/pills.css"/>
<link rel="stylesheet" href="/assets/css/class-colors.css"/>
<link rel="stylesheet" href="/assets/css/pills-dark.css"/>

Full Spells Page

<!-- DataTables -->
<link rel="stylesheet" href="/assets/css/datatables-enhanced.css"/>
<!-- Pills -->
<link rel="stylesheet" href="/assets/css/pills.css"/>
<link rel="stylesheet" href="/assets/css/class-colors.css"/>
<!-- Advanced Filters -->
<link rel="stylesheet" href="/assets/css/filters-advanced.css"/>
<!-- Page-specific -->
<link rel="stylesheet" href="/assets/css/spells-page.css"/>

<!-- Dark mode overrides -->
<link rel="stylesheet" href="/assets/css/datatables-dark.css"/>
<link rel="stylesheet" href="/assets/css/pills-dark.css"/>
<link rel="stylesheet" href="/assets/css/filters-advanced-dark.css"/>
<link rel="stylesheet" href="/assets/css/spells-page-dark.css"/>

Questionnaire Page (if it used pills)

<link rel="stylesheet" href="/assets/css/pills.css"/>
<link rel="stylesheet" href="/assets/css/class-colors.css"/>
<link rel="stylesheet" href="/assets/css/pills-dark.css"/>
<!-- Plus questionnaire-specific CSS if needed -->

Architecture Benefits

1. Separation of Concerns ✅

2. Reduced Complexity ✅

3. Eliminated Waste ✅

4. Better Reusability ✅

File Size Comparison

Before refactoring:

After refactoring:

Migration Guide

To add pill filtering to a new page:

  1. Include pills.css for component styles
  2. Include class-colors.css if using class pills
  3. Include pills-dark.css for dark mode support
  4. Use existing pill classes: .level-pill, .class-pill, .archetype-pill, .filter-pill

To add DataTables to a new page:

  1. Include DataTables library CSS
  2. Include datatables-enhanced.css for improved search field
  3. Include datatables-dark.css for dark mode support

Maintenance

Future Improvements

Consider further splitting if: