////
/// @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 
.osbp-steel {
  @include addons;
  @include osbp-steel;
}

/* temporary WORKAROUND 
popup is rendered outside of "osbp" stylename and needs unrelated style definition 
for now! */
/* @include os-suggesttext-popup; */