////
/// @group root/styles-steel
////

/******************************************************************
 *                                                                *
 *  Copyright (C) - Sample Corp., Smalltown, Sampleland
 *                                                                *
 *  This source was generated via the OS.bee toolset!             *
 *                                                                *
 *  OS.bee is (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany *
 *                                                                *
 *================================================================*
 *                                                                *
 *  @file           $HeadURL$
 *  @version        $Revision$
 *  @date           $Date$
 *  @author         $Author$
 *                                                                *
 ******************************************************************/

@import "addons.scss";
@import "osbp-steel.scss";

/// This file prefixes all rules with the theme name to avoid causing conflicts with other themes. 
/// The actual styles should be defined in osbp-steel.scss 
/// DO NOT ADD STYLE DEFINITIONS HERE
.osbp-steel {
  @include addons;
  @include osbp-steel;
}
