A free starter theme for Concrete CMS 9: Bootstrap 5 on Bedrock, a light skin and a dark skin, editable areas on every template, and documentation written for people still learning the CMS. MIT licensed. It makes no CDN calls and has no paid tier.
Drop the cast folder into packages/, then install it under Extend Concrete in the Dashboard, or from the command line:
./vendor/bin/concrete c5:package:install cast
./vendor/bin/concrete concrete:theme:activate cast
The SCSS sources ship with the theme. Dart Sass is the only build dependency:
cd packages/cast
npm install
npm run build
The build resolves Bedrock and Bootstrap from the core install, so there is nothing to vendor. Compiled skins are committed too, because the theme has to work when someone unzips it into packages/ without Node installed.
The theme sets every base SCSS value before importing bootstrap/scss/variables, because Bootstrap derives container padding, component radii and input sizing at import time. Override a base value after that import and the derived ones stay stale. That is how you get a 2rem grid gutter against 1.5rem container padding and a page that scrolls sideways on a phone.
Cast only claims features whose fallback is CSS-only. Features backed by fallback JavaScript are left unclaimed on purpose, so the core keeps shipping their behaviour and the theme restyles it. Claim one of those without bundling the equivalent JavaScript and the block stops working, with no error to say why.