////
/// @group root/styles-tea
////

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