FROZEN. This document is the project constitution. Code serves it, not the reverse. Any modification requires a
philosophy-amendmentissue + maintainer sign-off + 30-day cooling period.
Standalone · Lean · Agnostic · Structured · Hybrid · Edgeless · Deterministic
Each letter is a non-negotiable design constraint. Where CSS imposes physical limitations, the pragmatic workaround is documented — not hidden.
One <link> tag. No build step. No dependencies. No CLI. No configuration.
<link> to a static HTML file? → YES.Every byte ships with purpose. Small, fast, signal-dense.
The essential bundle (tokens + core) is the framework’s frozen source-of-truth surface — design tokens plus reset, base elements, layout primitives, a11y and print. Everything needed to author BEM blocks against the design system. Utilities, components, decorative helpers, animations and viewport breakpoints ship as optional addons and travel together in slashed-full.css. Utilities support BEM, not replace it — decoration lives in optional addons.
Works on any platform that can serve a CSS file. The essential bundle assumes nothing about your stack. Integration layers are separate opt-in files — companions, never requirements.
.html opened from the filesystem? → YES.Visible, predictable architecture.
Layers enforce specificity: reset → base → layout → components → utilities → visual → animations → a11y → overrides
BEM is the methodology: .block__element--modifier. No element-in-element. No camelCase. No arbitrary names.
Tokens in three tiers:
--sf-space-m, --sf-radius-l)--sf-color-bg, --sf-color-border)--sf-card-padding, --sf-btn-bg)Multiple methodologies work together, not against each other.
CSS renders. JavaScript enhances. Both first-class, neither dependent on the other.
The framework gets out of your way. Conventions and guardrails, but no walls.
!important needed.style="--sf-card-padding: 2rem".slashed.overrides layer is empty by design — your escape hatch.If a developer reaches for !important to override the framework — that’s a framework bug.
Same inputs → same outputs. Predictable, auditable, no surprises.
:root overrides alone.| Decision | Rationale |
|---|---|
| No Sass / Less / PostCSS | Buildless is a feature |
| No JIT / class scanning | Same reason |
| No JS component framework | SLASHED is CSS. HTML-first. |
| No paid tier | MIT, all features, forever |
| No 21-shade color scale | 11 stops + alpha variants suffice |
| Layer order is frozen | 9-layer stack is the architecture |
| BEM naming is mandatory | No alternative convention |
| Mobile-first is the default | min-width breakpoints, optimized path |
cheatsheet.html.2xs → 3xl); numeric only for sequences.| File | Role | Optionality |
|---|---|---|
Essential (tokens + core) |
The framework’s frozen source-of-truth surface. BEM authoring foundation. | Required. |
| Utilities | Layout, spacing and typography utility classes. Support BEM, never replace it. | Optional. |
| Components | Pre-baked .sf-* UI blocks. |
Optional. |
| Animations | Transition/animation helpers. | Optional. |
| Viewport utilities | Breakpoint-prefixed classes (sm:, md:, lg:, xl:). |
Most optional. |
| Visual utilities | Decorative classes. Tailwind/Bootstrap most-used-class parity. | Most optional. |
Full (slashed-full.css) |
Essential + every optional addon bundled into a single <link>. |
One-link convenience. |
| Experimental | Bleeding-edge CSS without full browser support. | Most optional. |
bin/check-philosophy-drift.sh — automated violation scanner..github/workflows/philosophy-guard.yml — CI blocks merge on violation.SLASHED is opinionated by design. These opinions are the product.