Well that's because these mixins don't assume that you're going to use this approach. In fact it was just and accident that it works --I expected folks would only want to use blueprint on certain pages and so I added the ability to scope them according to body class.
Most of the ie hacks in blueprint are for typography and I'm not too worried about the source order, to be honest. The exception is that the container must be text-align left in ie. This introduces all kinds of annoyances as evidenced by the weird code smell that is this comment in the blueprint grid module:
// Note: If you use this mixin without the class and want to support ie6
// you must set text-align left on your container element in an IE stylesheet.
=container
:width = !blueprint_container_size
:margin 0 auto
+clearfix
We've discussed on the haml mailing list that there could be a way to direct sass into multiple css files from the same sass code by introducing a new selector syntax. Maybe:
>>suffix
So if you were in foo.sass:
.foo
font-weight: 300
>>ie
font-weight: bold
Would generate:
foo.css:
.foo { font-weight: 300;}
foo_ie.css
.foo { font-weight: bold;}
And then you'd be responsible for importing them using conditional comments.
The nice thing about this is that we could then set an ie selector constant in the blueprint framework:
!blueprint_ie_selector ||= ">>ie"
And if you wanted, you could override this in your base.sass:
!blueprint_ie_selector = "
body.ie &"
Then the blueprint container mixin could have a single implementation:
=container(!ie_selector = !blueprint_ie_selector)
:width = !blueprint_container_size
:margin 0 auto
+clearfix
#{!ie_selector}
:text-align left
So the thought experiment seems like a success... We'll see what sass 2.4 holds. Until then, sass has all the power you'd need to build your own stylesheets and mixins however you see fit -- it's just us framework designers that have to make tough decisions for now.
Chris