# 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 1,900 lines of annotated CSS keep their `git blame` that way, and because `src/static_assets.rs` embeds `static/` wholesale with `include_dir!`, so the built sheet has to exist on disk at compile time. Edit a part, never the output. The parts live here rather than under `static/` for the same `include_dir!` reason: anything under `static/` ships, so parts kept there would be served as well as embedded. This sheet uses no `@layer`, so the join is the whole of it and every file here is standalone-valid CSS on its own. ## The parts | Part | What it holds | |---|---| | `00-foundations.css` | The five `@font-face` blocks, the `:root` palette, reset, base, signature dot, layout. The makeover conversion's whole target: everything it replaces is in this file and nothing else is | | `10-chrome.css` | Site header and nav, hamburger toggle | | `20-controls.css` | Buttons, forms | | `30-listings.css` | Directory and data tables, thread and member columns, pinned rows, badges, breadcrumbs. Badges and breadcrumbs sit here because every one of them is worn by a row in those tables | | `40-threads.css` | Post item, post actions, deleted posts, OP indicator, draft indicator, reply form, page header | | `50-furniture.css` | Toast, settings, accessibility, pagination, error pages, empty state, footer, footnotes, immutable posts, mentions, tracking settings, info pages, utility classes. A grab bag of thirteen small sections, none worth its own file | | `60-search.css` | Link previews, search modal, post endorsements | | `70-chat.css` | The chat room: scrolling log against a non-growing composer, dimmed un-echoed send, named-reader tint, delete and failed-send retry | | `90-responsive.css` | The 768px and 480px blocks | `90-responsive.css` stays one file. Distributing the two blocks into the feature files is legal, but each reaches across six of the eight other parts, so it means splitting each into six fragments and re-proving order for every one, to end up with eight files instead of nine. Both breakpoints are also off the makeover size classes (768/480 against the server's 839/599), and this is where that gets reconciled when the conversion lands. ## 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.