I have done simple CSS rules such as “.btn + .btn”, etc but generally modules seem to be independent but they are placed in to rigid or slightly configurable layouts/grids/patterns.
Which is fine until those last minute tweaks from stakeholders come along or you iterate and the UX changes and then bam! Those layouts have to be refactored (possibly breaking things elsewhere) or worse, a new layout has to be coded up. Preferably just in Markup leveraging existing grid/layout CSS but could mean new mark-up and new CSS added to the codebase.
To some degree this is always going to be the case but as you say, sometimes some preplanning about how components live along side each other could head off a lot of those problems.