A more complex public opinion scale would be pretty straightforward to simulate. You could do it by storing an array of 4 floats or integers for each issue. Each number represents the percentage of people who think the current law is "liberal enough" at a certain tier of the issue. For example:
Free Speech
| C+ | C | M | L |
| 10 | 24 | 53 | 80 |
This means that:
10% want C+
14% want C
29% want M
27% want L
20% want L+
This scheme is superior to storing the number of people in each bucket directly, because it doesn't suffer the risk that you'll have greater than or less than 100% of the population. You do need to guarantee that the numbers are higher than the previous number and lower than the next number, but that's an easier check. There's also an intuitive way to solve it -- just split the difference between the invalid numbers and set both numbers to that value. Or just swap them. You can also shift public opinion across the board just by nudging all the numbers up or down, rather than having to add to some and subtract from others.
It's also extremely easy to assess relative opinions people have on the current state of the issue. If you want to see how many people support the idea, take the entry for that one (L+ is 100) and subtract the entry one level more conservative (C+ subtracts 0). If you want to see how many people want to make the issue more conservative, just look at the score for one level more conservative. If you want to see how many people want to make the issue more liberal, subtract that issue's score from 100.
Using the example above:
If Free Speech is C+, 90% of the population votes to move to C.
If Free Speech is C, 10% votes to move to C+, 76% votes to move to M.
If Free Speech is M, 24% votes to move to C, 47% votes to move to L.
If Free Speech is L, 53% votes to move to M, 20% votes to move to L+.
If Free Speech is L+, 80% votes to move to L.
Storing these four numbers gives you the entire breakdown of the population, and exactly what laws how many people prefer.
Edit: If the CCS springs out later, they should also spring out stronger. Maybe they don't need the big ramp up of varying strength levels, where they're relatively impotent early on and scarier later. I had them coming out earlier and weaker. But that just seems to make them easier to kill and less threatening for more experienced players. Perhaps making them really quite scary but an endgame feature would be better.