# The site stylesheet `static/style.css` is generated. It is the join of the files here, in name order, produced by `build.rs` and committed. Committed rather than gitignored because 11,000 lines of heavily annotated CSS keep their `git blame` that way, and because `scripts/lint-frontend.sh`, the `frontend_payload` test and `tests/workflows/discover.rs` all read the built sheet directly. The one door that leaves open, editing the output instead of a part, is closed by a reconcile rule in `lint-frontend.sh` that rebuilds the join and fails if it differs. The `@layer components {` opener and its closer are emitted by `build.rs` rather than written into a part, so every file here is standalone-valid CSS on its own. ## The parts | Part | What it holds | |---|---| | `00-preamble.css` | The charter. No rules. | | `05-core.css` | `:root` tokens, element base, and the design system proper: buttons, forms, tabs, tables, utilities, badges, tags, cards, stats, filter bar | | `10-pages-content.css` | Item, project, library, article and blog reader | | `20-dashboards.css` | Admin and health, import wizard, delete account, export | | `30-commerce.css` | Receipt, Fan+, purchase, project settings, cart | | `40-pages-misc.css` | Profile through scan pipeline, plus `.field-row`, the page h1/subtitle pair, and `.banner` | | `50-chrome.css` | Sections, navigation, header and footer, layout utilities | | `60-interaction.css` | Loading indicators, toasts, modals, editors, keyframes | | `70-marketing.css` | Landing, pricing calculator, documentation, use cases | | `80-git-browser.css` | The `/source/*` subapp | | `85-responsive.css` | The two viewport blocks that are not adjacent to what they narrow | | `90-discover.css` | Discover, collection picker, search box | | `95-partials.css` | One section per partial. A queue awaiting deletion by the described-screen conversion, which is why its line count is a progress meter rather than a problem | | `96-late-utilities.css` | Shared utilities that win their ties by sitting late | | `97-widgets.css` | Carousel, no-JS gallery fallback, grid cards | | `99-handoffs.css` | Layer handoffs, described modal, media picker. Must sort last: a handoff wins by source order | ## Contiguity is the guarantee Every part is a contiguous line range of the single file this used to be, and they load in the original order, so the join is byte-identical and the split changed no rendering. That also says what a safe edit is. CSS resolves ties by source order, so moving a rule between parts can change which of two equal-specificity rules wins. A move earlier in source order needs its own tie check and its own commit; adding a rule to the part it belongs in needs neither.