////
/// @group root/styles-valo
////

/******************************************************************
 *                                                                *
 *  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-entrance.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-entrance.scss
/// DO NOT ADD STYLE DEFINITIONS HERE
.osbp-entrance {
  @include addons;
  @include osbp-entrance;
} 
