diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 87f7dba7..fdd77d0a 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -103,5 +103,4 @@ jobs:
dist/slashed.full.flat.css
dist/slashed.full.flat.min.css
dist/slashed.full.flat.min.css.map
- dist/slashed.zip
fail_on_unmatched_files: true
diff --git a/.github/workflows/version-sync.yml b/.github/workflows/version-sync.yml
index 8bbb4bc7..417bfa18 100644
--- a/.github/workflows/version-sync.yml
+++ b/.github/workflows/version-sync.yml
@@ -1,24 +1,19 @@
name: Sync version artifacts
# Triggered whenever a GitHub release or pre-release is published.
-# Checks out main, aligns all non-JS version references to the release tag,
-# rebuilds CSS bundles, publishes them to the dist branch, captures the
-# resulting commit SHA, stores it in SLASHED_DIST_SHA (slashed.php),
-# SLASHED_BRICKS_DIST_SHA (slashed-bricks.php), and
-# SLASHED_GUTENBERG_DIST_SHA (slashed-gutenberg.php), then commits
-# everything back to main.
+# Checks out main, aligns non-JS version references (docs/roadmap.md) and
+# package.json to the release tag, then commits any changes back to main.
#
# CSS bundles are NOT committed to the main branch — they live only on the
-# dedicated `dist` branch and in GitHub Release assets. The dist-branch
-# commit SHA is stored in each integration entry point so the plugin can
-# construct an immutable jsDelivr CDN URL that never changes between releases.
+# dedicated `dist` branch (published by publish-dist.yml on every push to
+# main) and in GitHub Release assets.
#
# Full release pipeline:
# 1. Developer runs `npm run release` locally → bumps package.json, runs
# version-sync + build, commits chore(release): vX.Y.Z, pushes tag.
# 2. release.yml fires on the tag → uploads dist assets to the GitHub release.
-# 3. This workflow fires on the release.published event → rebuilds CSS,
-# publishes to dist branch, captures SHA, updates PHP, commits to main.
+# 3. This workflow fires on the release.published event → re-aligns version
+# references on main in case the release was cut outside `npm run release`.
on:
release:
@@ -64,76 +59,13 @@ jobs:
- name: Sync non-JS version references
run: node scripts/version-sync.js
- - name: Rebuild CSS bundles
- run: npm run build
-
- - name: Push CSS bundles to dist branch and capture SHA
- id: dist
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- RELEASE_TAG: ${{ steps.ver.outputs.tag }}
- GIT_AUTHOR_NAME: github-actions[bot]
- GIT_AUTHOR_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com
- GIT_COMMITTER_NAME: github-actions[bot]
- GIT_COMMITTER_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com
- run: |
- set -euo pipefail
-
- # Stage dist/ contents for the orphan dist branch.
- mkdir -p /tmp/sf-dist
- cp -R dist/. /tmp/sf-dist/
- {
- echo "source-commit: ${GITHUB_SHA}"
- echo "source-ref: refs/heads/main"
- echo "release-tag: ${RELEASE_TAG}"
- echo "built-at: $(date -u +%Y-%m-%dT%H:%M:%SZ)"
- echo "built-by: .github/workflows/version-sync.yml"
- } > /tmp/sf-dist/SOURCE.txt
- echo 'node_modules/' > /tmp/sf-dist/.gitignore
-
- git checkout --orphan dist-release
- git rm -rf . > /dev/null
- shopt -s dotglob
- cp -R /tmp/sf-dist/. .
- git add -A
- git commit -m "build: dist for ${RELEASE_TAG}"
-
- DIST_SHA=$(git rev-parse HEAD)
- echo "sha=${DIST_SHA}" >> "$GITHUB_OUTPUT"
-
- git push --force \
- "https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" \
- dist-release:dist
-
- - name: Switch back to main working tree
- run: git checkout main
-
- - name: Update DIST_SHA constants in PHP
- env:
- DIST_SHA: ${{ steps.dist.outputs.sha }}
- run: |
- # Write the captured SHA into the canonical constant, then let
- # version-sync.js propagate it to the two integration entry points.
- sed -i \
- "s|define( 'SLASHED_DIST_SHA', '[^']*' )|define( 'SLASHED_DIST_SHA', '${DIST_SHA}' )|" \
- plugins/SLASHED-for-WP/slashed.php
- # Hard-fail if the substitution did not land (sed exits 0 even on no-op,
- # e.g. if the define format ever changes) so we never propagate a stale SHA.
- if ! grep -Fq "define( 'SLASHED_DIST_SHA', '${DIST_SHA}' )" plugins/SLASHED-for-WP/slashed.php; then
- echo "Failed to update SLASHED_DIST_SHA in plugins/SLASHED-for-WP/slashed.php" >&2
- exit 1
- fi
- node scripts/version-sync.js
-
- name: Commit and push if anything changed
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
- # Stage only tracked files (dist/*.css are gitignored).
- git add plugins/SLASHED-for-WP/slashed.php plugins/SLASHED-for-WP/integrations/bricks/slashed-bricks.php plugins/SLASHED-for-WP/integrations/gutenberg/slashed-gutenberg.php package.json package-lock.json
- git add -u
+ git add package.json package-lock.json docs/roadmap.md
if git diff --cached --quiet; then
echo "Nothing to commit — all version artifacts already up to date."
else
diff --git a/.stylelintrc.json b/.stylelintrc.json
index 3ac85685..39a77ce1 100644
--- a/.stylelintrc.json
+++ b/.stylelintrc.json
@@ -1,6 +1,6 @@
{
"extends": ["stylelint-config-standard"],
- "ignoreFiles": ["dist/**", "node_modules/**", "plugins/SLASHED-for-WP/integrations/bricks/assets/admin-app/**", "plugins/SLASHED-for-WP/integrations/bricks/assets/editor-app/**", "plugins/SLASHED-for-WP/integrations/bricks/editor-app/**", "plugins/SLASHED-for-WP/integrations/gutenberg/assets/admin-app/**"],
+ "ignoreFiles": ["dist/**", "node_modules/**"],
"rules": {
"color-function-notation": "modern",
"alpha-value-notation": "number",
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95d51e00..82149f64 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -145,9 +145,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
- **New tokens**: `--sf-header-height-mobile`, `--sf-header-height-desktop`,
`--sf-sticky-offset-mobile`, `--sf-sticky-offset-desktop` — paired
mobile/desktop source tokens for the header height and sticky-offset
- computed tokens. The WordPress plugin admin (Layouts tab) exposes these
- as number fields and generates a fluid `clamp()` for
- `--sf-header-height` / `--sf-sticky-offset` when the two values differ.
+ computed tokens. `--sf-header-height` / `--sf-sticky-offset` fluidly
+ `clamp()` between the mobile and desktop endpoints when they differ.
- **Contextual color cascade** — `.sf-surface--*` variants now inherit a
full set of on-surface tokens (`--sf-color-text`, `--sf-color-heading`,
@@ -155,21 +154,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
CSS relative-color syntax inside an `@supports` guard. Requires Chrome
123 / Safari 17.5 / Firefox 128 (the existing framework floor).
-- **reBEMer** (`integrations/bricks/`) — Subtree-scoped BEM class manager
- for the Bricks Builder structure panel. Adds a "BEM" badge to every
- structure-panel item; clicking it opens a draggable modal that names a
- block + every descendant element + an optional modifier and applies the
- result as global classes in one transaction. Five operation modes
- (Add / Rename / Replace / Add Modifier / Migrate ID styles), a
- client-side reference-usage check (via `GET /rebemer/unused`) so destructive
- ops surface cross-element class usage before they run, snapshot + rollback for
- every apply, an in-panel undo ring buffer, and a reserved-name guard
- against SLASHED's own utility classes. Full design at
- [docs/rebemer.md](docs/rebemer.md). The editor app lives in
- `integrations/bricks/editor-app/` (Svelte 5 runes + Vite); the PHP side
- is `Slashed_Bricks_ReBEMer_{Policy,REST,Enqueue}` under
- `integrations/bricks/includes/`.
-
### ⚠️ Breaking Changes (pre-freeze cleanup)
The framework is in pre-freeze cleanup. No published consumer is affected.
@@ -416,9 +400,8 @@ See `docs/migration.md` for details.
between their `-mobile` and `-desktop` companion tokens across the
framework viewport range, instead of statically equalling the desktop
value. This wires up the previously-orphaned `--sf-header-height-mobile`,
- `--sf-sticky-offset-mobile`, and `--sf-sticky-offset-desktop` tokens and
- matches the clamp the WP plugin's CSS generator already emitted. Default
- endpoints (3.5rem mobile, 5rem desktop) are unchanged; the header is now
+ `--sf-sticky-offset-mobile`, and `--sf-sticky-offset-desktop` tokens.
+ Default endpoints (3.5rem mobile, 5rem desktop) are unchanged; the header is now
shorter on small viewports.
- **Shadows tint to the surface on `.sf-surface--*`** — `core/macros.css`
@@ -493,12 +476,7 @@ See `docs/migration.md` for details.
## [0.2.12] - 2026-05-23
-Release infrastructure and Bricks Builder integration.
-
-### Added
-
-- **Bricks Builder integration** — WordPress plugin for one-click SLASHED
- loading in Bricks Builder themes (PR #71)
+Release infrastructure.
### Changed
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 5c98ac04..c862fe8e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -69,12 +69,12 @@ release pipeline reads the matching `## [x.y.z]` section, so keep it accurate:
`## [x.y.z] - YYYY-MM-DD` heading and leave a fresh empty `## [Unreleased]`.
2. Run `npm run release` (patch), `npm run release:minor`, or
`npm run release:major`. This bumps `package.json`, runs
- `scripts/version-sync.js` (propagates the version to the PHP plugins,
- `docs/roadmap.md`, the Bricks README CDN example, and `readme.txt`'s
- `Stable tag`), rebuilds bundles, commits, tags, and pushes.
+ `scripts/version-sync.js` (propagates the version to `docs/roadmap.md`),
+ rebuilds bundles, commits, tags, and pushes.
3. The pushed tag triggers `release.yml` (GitHub Release + dist assets) and the
- release event triggers `version-sync.yml` (publishes the `dist` branch and
- writes the captured commit SHA into the `SLASHED_*_DIST_SHA` constants).
+ release event triggers `version-sync.yml` (re-aligns version references on
+ main). The `dist` branch is published by `publish-dist.yml` on every push to
+ main.
## Scope
diff --git a/README.md b/README.md
index 3b2a0323..09066d83 100644
--- a/README.md
+++ b/README.md
@@ -195,55 +195,10 @@ versions above — colors will collapse to `initial` on older engines.
| [Browser support](docs/browser-support.md) | the support floor and why |
| [Performance](docs/performance.md) | modern-CSS footguns to avoid |
| [Migration](docs/migration.md) | upgrading SLASHED versions + migrating from other frameworks |
-| [reBEMer](docs/rebemer.md) | BEM class manager for Bricks Builder |
-| [Bricks plugin](plugins/SLASHED-for-WP/integrations/bricks/README.md) | full Bricks Builder integration docs |
| [Contributing](CONTRIBUTING.md) | setup, conventions, tests |
-## WordPress plugin
-
-SLASHED ships a companion WordPress plugin (`plugins/SLASHED-for-WP/`) with two independent integrations that can each be activated as a standalone plugin or loaded together from the main `slashed.php` bootstrap.
-
-### Bricks Builder
-
-Activate `integrations/bricks/slashed-bricks.php` (requires Bricks 1.9.2+, WordPress 6.4+, PHP 7.4+).
-
-- **CSS loading** — enqueues the SLASHED bundle on the frontend and inside the Bricks editor iframe
-- **Variable pickers** — registers all `--sf-*` tokens (572 in `essential`, 812 in `optimal`/`full`) in the Bricks Global Variable Manager, organised by category
-- **Class autocomplete** — registers every `.sf-*` layout class and `.is-*` state class in the Bricks class input as locked entries
-- **Color System panel** — a floating in-builder browser for every `--sf-color-*` token; each swatch previews its light and dark value at once, and picking one applies the `var(--sf-color-*)` reference (never a baked hex) to the selected element
-- **Variable-picker swatches** — paints a colour square next to each `--sf-color-*` entry in the variable-picker dropdown, powered by server-resolved hex values so dark-mode stays framework-driven
-- **Dynamic detection** — parses the active CSS bundle at runtime; no hand-curated list to drift out of date
-- **reBEMer** — subtree-scoped BEM class manager inside the Bricks structure panel: rename, replace, or add modifiers across an element and its children in one transaction with reference-count checks (`GET /rebemer/unused`) and snapshot/rollback
-
-See [`integrations/bricks/README.md`](plugins/SLASHED-for-WP/integrations/bricks/README.md) and [`docs/rebemer.md`](docs/rebemer.md).
-
-### Gutenberg (block editor)
-
-Activate `integrations/gutenberg/slashed-gutenberg.php` (requires WordPress 6.4+, PHP 7.4+).
-
-- **CSS loading** — enqueues the SLASHED bundle in the block editor canvas and on the frontend
-- **Color palette** — syncs 20 `--sf-color-*` tokens (brand, status, surface, text, border, link) with the WordPress editor color palette
-- **Dark-mode bridge** — maps the `data-wp-dark-mode-active` attribute from the block editor's dark-mode toggle to SLASHED's `color-scheme` system
-
-### Filters
-
-Shared (fire in both integrations and standalone, when the unified `slashed.php` bootstrap is active):
-
-- `slashed/css_bundle_url` — override the resolved CSS bundle URL for every integration
-- `slashed/override_css` — replace/extend the generated token-override CSS
-
-Per integration:
-
-- `slashed_gutenberg/css_bundle_url` — override the bundle URL for the Gutenberg integration only
-- Bricks exposes a larger hook set (variables, classes, inventory, colour panel/swatches) — see the [Bricks plugin README](plugins/SLASHED-for-WP/integrations/bricks/README.md) and the in-admin **Hooks** tab.
-
-### Packaging
-
-```sh
-npm run build:plugin # packages the plugin as a ZIP in dist/
-```
-
----
+The WordPress plugin (Bricks Builder + Gutenberg integrations) lives in its own
+repository: [slashed-for-wp](https://github.com/codeslash-dev/slashed-for-wp).
## Development
diff --git a/docs/bricks-template-workflow.md b/docs/bricks-template-workflow.md
deleted file mode 100644
index 802389eb..00000000
--- a/docs/bricks-template-workflow.md
+++ /dev/null
@@ -1,290 +0,0 @@
-# Bricks template workflow
-
-A repeatable, step-by-step process for building and moving Bricks templates
-that look identical on every site running the SLASHED plugin.
-
----
-
-## Why templates break
-
-Bricks stores colour values in the template JSON in one of three ways:
-
-| Form | How it gets into the template | Portable? |
-|------|-------------------------------|-----------|
-| `var(--sf-color-primary)` | Picked from a SLASHED palette in the colour picker | ✅ Yes — works on any site with SLASHED |
-| `#4a90e2` | Typed by hand or picked from the colour wheel | ❌ Hard-coded — ignores brand tokens |
-| `bricks-color-abc123` | Picked from Bricks' "Global Colors" | ❌ Site-specific ID — renders transparent on another site |
-
-The same problem applies to:
-
-- **Spacing** — `padding: 24px` instead of `var(--sf-space-6)` doesn't scale.
-- **Typography** — `font-family: "Inter"` instead of `var(--sf-font-body)` ignores tokens.
-- **SLASHED tokens** — values from the admin panel (`slashed_bricks_tokens`) do
- **not** travel inside the Bricks JSON file; export them separately (see Phase 2).
-
----
-
-## Prerequisites
-
-On **both** the source and destination sites:
-
-- Bricks Builder ≥ 1.9.2
-- SLASHED Bricks plugin active
-- A chosen CSS bundle (Essential / Optimal / Full) — the same or higher on the destination
-- Fonts loaded via WordPress or Bricks (Google Fonts, self-hosted, …)
-
----
-
-## Phase 1 — Design the template (source site)
-
-### Rule 1: colours only from SLASHED palettes
-
-In the Bricks colour picker, expand the palette groups and use **only**:
-
-- `SLASHED · Primary`
-- `SLASHED · Secondary`
-- `SLASHED · Tertiary`
-- `SLASHED · Action`
-- `SLASHED · Neutral`
-- `SLASHED · Base`
-- `SLASHED · Status`
-- `SLASHED · Semantic`
-
-**Never** use:
-
-- The colour wheel (writes a hex `#rrggbb`).
-- Bricks' "Global Colors" section (writes a site-internal ID).
-- The colour text field with a hand-typed value.
-
-> **How to check:** inspect the element in DevTools. The colour should read like
-> `color: var(--sf-color-primary)`, not `color: #4a90e2`.
-
-### Rule 2: CSS variables in "Custom CSS" fields
-
-In an element's CSS tab, use tokens in every custom rule:
-
-```css
-/* ✅ Good */
-.my-element {
- background: var(--sf-color-primary);
- padding: var(--sf-space-4) var(--sf-space-6);
- font-size: var(--sf-text-base);
- font-family: var(--sf-font-body);
- border-radius: var(--sf-radius-md);
- box-shadow: var(--sf-shadow-md);
- transition: all var(--sf-duration-normal) var(--sf-ease-out);
-}
-
-/* ❌ Bad */
-.my-element {
- background: #4a90e2;
- padding: 16px 24px;
- font-size: 16px;
- font-family: "Inter", sans-serif;
-}
-```
-
-### Rule 3: `sf-*` classes for layout
-
-Use SLASHED layout classes instead of hand-written Flexbox/Grid values:
-
-| Instead of… | Use the class |
-|-------------|---------------|
-| `display: flex; gap: 16px; flex-wrap: wrap` | `sf-cluster` |
-| `display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px` | `sf-grid` |
-| `max-width: 1200px; margin: 0 auto` | `sf-center` |
-| `display: flex; flex-direction: column; gap: 16px` | `sf-stack` |
-
-The classes are available in the Bricks class manager (category "SLASHED Layout").
-
-### Rule 4: don't use Bricks Global Colors
-
-Bricks has its own "Global Colors" (a colour with a custom name, e.g. "Accent
-Blue"). These carry an internal ID specific to the WordPress install.
-**After importing the template on another site those IDs don't exist → the
-colour is invisible.** Use the SLASHED Color Palette instead.
-
----
-
-## Phase 2 — Export (source site)
-
-### Step 1: export SLASHED tokens
-
-1. Open **WordPress Admin → SLASHED → Design Tokens**.
-2. Go to the **Export / Import** tab.
-3. Click **Download token file**.
-4. Save `slashed-tokens-YYYY-MM-DD.json`.
-
-This file contains all your colour, typography, spacing, etc. overrides.
-
-### Step 2: export the Bricks template
-
-1. In Bricks, open the page/section you want to export.
-2. **Bricks → Templates → Export**, or save it as a template.
-3. Download the template JSON file.
-
-### Step 3: bundle both files together
-
-Suggested naming convention:
-
-```text
-my-template/
- ├── bricks-template-hero.json # Bricks template
- ├── slashed-tokens-2026-05-28.json # SLASHED tokens
- └── README.txt # optional: font / bundle notes
-```
-
----
-
-## Phase 3 — Import (destination site)
-
-### Step 1: check prerequisites
-
-- [ ] SLASHED Bricks plugin installed and active
-- [ ] CSS bundle the same or higher (Essential ≤ Optimal ≤ Full)
-- [ ] Bricks ≥ 1.9.2
-- [ ] Fonts configured (Google Fonts, Adobe Fonts, self-hosted)
-
-### Step 2: import the SLASHED tokens
-
-1. **Admin → SLASHED → Design Tokens → Export / Import**.
-2. Choose the `slashed-tokens-*.json` file.
-3. Click **Import token file**.
-4. Wait for "Imported N section(s) successfully".
-5. **Reload the page** — the tokens are now active.
-
-### Step 3: import the Bricks template
-
-1. **Bricks → Templates → Import**.
-2. Choose the `bricks-template-*.json` file.
-3. Import.
-
-### Step 4: check in the Bricks editor
-
-Open the page in the Bricks editor. The canvas should render the template with
-the correct colours.
-
----
-
-## Phase 4 — Verification
-
-### Visual checklist
-
-- [ ] Colours match the tokens (Primary, Secondary, etc.)
-- [ ] Dark mode switches correctly (`data-brx-theme="dark"`)
-- [ ] Spacing/gaps look proportional
-- [ ] Fonts load correctly (not the serif/sans-serif fallback)
-- [ ] Radii, shadows, and animations work
-
-### Technical check (DevTools)
-
-Open the inspector and run:
-
-```js
-// In the browser console, on the page with the template:
-getComputedStyle(document.documentElement).getPropertyValue('--sf-color-primary')
-// Should return an OKLCH colour, not an empty string
-```
-
-If the value is empty → the SLASHED CSS isn't loaded (see Troubleshooting).
-
----
-
-## Troubleshooting
-
-### Colours are wrong / don't change
-
-**Cause:** elements hold hard-coded hex values instead of `var()`.
-
-**Diagnosis:** in DevTools → Inspector → Computed, look for values that read like
-`#rrggbb` or `rgb(...)` instead of `var(--sf-color-*)`.
-
-**Fix:** re-style the element by picking a colour from a SLASHED palette, not the
-colour wheel.
-
----
-
-### Everything is colourless / grey
-
-**Cause:** the SLASHED CSS bundle isn't loaded on the page.
-
-**Diagnosis:**
-
-```js
-// In the console:
-document.querySelector('link[href*="slashed"]')
-// Should return a element. null = bundle not loaded.
-```
-
-**Fix:**
-
-1. Check the SLASHED Bricks plugin is active.
-2. Admin → SLASHED → Bundle — confirm a bundle is set.
-3. Check no other plugin is blocking the CSS.
-
----
-
-### Tokens are the defaults, not yours
-
-**Cause:** the token file wasn't imported, or the import failed.
-
-**Diagnosis:** Admin → SLASHED → Colors — the colours should show your overrides.
-If everything is the default (purple), the file didn't reach the database.
-
-**Fix:** repeat the token import (Phase 3, Step 2).
-
----
-
-### `sf-*` classes don't work (no styling)
-
-**Cause:** the CSS bundle doesn't include those classes (e.g. Essential was used
-instead of Optimal/Full).
-
-**Diagnosis:**
-
-```js
-// Check whether the CSS rule exists:
-[...document.styleSheets].flatMap(s => [...s.cssRules]).find(r => r.selectorText?.includes('sf-cluster'))
-// undefined = the rule isn't in the bundle
-```
-
-**Fix:** Admin → SLASHED → Bundle → switch to Optimal or Full.
-
----
-
-### Dark mode doesn't work
-
-**Cause:** Bricks uses `data-brx-theme` instead of SLASHED's `data-theme`. The
-plugin bridges the two attributes automatically, but only when the CSS is loaded.
-
-**Check** that the loaded CSS contains this rule:
-
-```css
-[data-brx-theme="dark"] { color-scheme: dark; --sf-is-dark: 1 }
-```
-
-If it's missing → check the plugin version (requires the current release or newer).
-
----
-
-## Quick cheatsheet
-
-```text
-Before designing:
- ✅ Colour → from a SLASHED palette group
- ✅ Custom CSS → var(--sf-*)
- ✅ Layout → sf-* class
- ❌ Colour → hex from the colour wheel
- ❌ Custom CSS → px / hex literal
- ❌ Colour → Bricks Global Colors
-
-Export (from this site):
- 1. Admin → SLASHED → Design Tokens → Export / Import → Download token file
- 2. Bricks → Export template
-
-Import (on the new site):
- 1. Admin → SLASHED → Design Tokens → Export / Import → Import token file
- 2. Bricks → Import template
- 3. Reload the page
- 4. Verify in the editor
-```
diff --git a/docs/rebemer.md b/docs/rebemer.md
deleted file mode 100644
index c44f0dd5..00000000
--- a/docs/rebemer.md
+++ /dev/null
@@ -1,803 +0,0 @@
-# reBEMer — design doc
-
-> A subtree-scoped BEM class manager for the Bricks Builder structure
-> panel, shipped as part of **SLASHED for Bricks**.
-
-Status: **v1 partial implementation in progress** — see §0 Implementation status.
-License: MIT, same as the host plugin.
-
----
-
-## 0. Implementation status
-
-Section bodies describe the full v1 design; this table tracks what has shipped
-in code. Spec-only rows (§7, §8, §10, §12, §13) describe accurate design that
-lands in follow-up PRs.
-
-| Capability | Status | Where |
-|---|---|---|
-| Badge injection in structure panel (§3.1) | ✅ shipped | `editor-app/src/main.js` + `BemBadge.svelte` |
-| Panel mount + close (§3.2) | ✅ shipped | `editor-app/src/main.js` + `BemPanel.svelte` |
-| Add / Rename / Replace / Add Modifier modes (§3.3) | ✅ shipped | `editor-app/src/lib/apply.js` |
-| Class-family picker in dedicated Rename & Replace (§3.3) | ✅ shipped | `Row.svelte` family `