Everything that may change the behavior and appearance of an entity should be declared after the standard properties and before the next entity :
In that order :
pseudo-selectors
state classes
mediaqueries
modifiers
.ga-button {padding:0.25rem 0.5rem; &:hover {/*...*/ } &.is-disabled {/*...*/ &:hover {/*...*/ } }@mediascreenand (min-width:200px) {/*...*/ } &--large {/* large modifier styles *//* then you can repeat the changes here if required */ @mediascreenand (min-width:200px) {/*...*/ } }/* then only we can style children elements */ &__icon {/* define icon *//* then you can repeat the changes here if required */ @mediascreenand (min-width:200px) {/*...*/ } &--spining {/* make the thing spin */ } }}
Order media queries in a mobile first fashion
.ga-button {/* small mobile and common code *//* large mobile */ @mediascreenand (min-width:340px) {/*...*/ }/* tablet */@mediascreenand (min-width:480px) {/*...*/ }/* desktop */@mediascreenand (min-width:1024px) {/*...*/ }/* large desktop */@mediascreenand (min-width:1480px) {/*...*/ } &__icon {/* small mobile and common code *//* large mobile */ @mediascreenand (min-width:340px) {/*...*/ }/* tablet */@mediascreenand (min-width:480px) {/*...*/ }/* desktop */@mediascreenand (min-width:1024px) {/*...*/ }/* large desktop */@mediascreenand (min-width:1480px) {/*...*/ } }}