////
/// @group root/variables-osbp
////

@import "components/functions.scss";

 /***************************/
/** Vaadin/Valo-Variables **/

$v-app-loading-text: "OSBP";
$v-unit-size: 24px;

$v-textfield-disabled-opacity: 1;

/* $v-luminance-threshold: 150 !default; */

$v-background-color: #3d3b3c;
$v-app-background-color: #3d3b3c;

//// Don't load fontawesome via valo theme
$v-font-awesome: false; 

/// Main color accent of theme; not available as valo variable.
$os-base-color: #949396;
$valo-menu-background-color: $os-base-color;	//scale-color($v-app-background-color, $lightness: if(color-luminance($v-app-background-color) < 10, 15%, -70%)) !default;
$v-table-background-color: $v-app-background-color;
$v-focus-color: #5D737E;
$v-font-family: Arial;
$v-font-size: 12px;
$v-line-height: $v-font-size * 1.75; //$os-line-height-factor: 1.6;

$v-loading-indicator-bar-height: $v-unit-size; 
$v-loading-indicator-color: transparent;
$v-error-indicator-color: #E3DC95;

$v-table-row-height: $v-unit-size;
$v-default-field-width: make_even($v-unit-size * 11.4); //$v-unit-size * 5 !default;


/// Overriding default-value 0.75 (affects v-grid)
$v-scaling-factor--tiny: 1 !default; //0.75
$v-scaling-factor--small: 0.85 !default;
$v-scaling-factor--large: 1.4 !default;	//1.2
$v-scaling-factor--huge: 1.8 !default; //1.6
/* $os-l-font-factor: 1.4; */
/* $os-xl-font-factor: 1.8; */

/* $v-border: $os-border-width $os-border-style $os-border-color !default; */
/// $v-border default is useless, v-shade doesn't compile for some reason
$v-border: 1px solid get_contrast($strength: 17, $v-app-background-color, $desaturate: false) !default;
$v-border-radius: 0px;

/// Set this for v-layout-margin-* when you're too lazy to type the same value four times.
$os-layout-margin: $v-unit-size * 0.5;
$v-layout-margin-top:    $os-layout-margin;
$v-layout-margin-left:   $os-layout-margin;
$v-layout-margin-right:  $os-layout-margin;
$v-layout-margin-bottom: $os-layout-margin;
$v-layout-spacing-vertical: make_even($v-unit-size/3) !default;
$v-layout-spacing-horizontal: make_even($v-unit-size/3) !default;

$v-tabsheet-content-animation-enabled: false; //default: true

/// When v-gradient is set to false, still set a gradient in some places.
$os-gradient: v-linear 5%;
$v-gradient: false;
$v-bevel: false;
$os-shadow-range: 7px;
$v-shadow: 1px 3px $os-shadow-range  transparentize(#000, 0.9);
$v-textfield-shadow: false;
$v-shadow-opacity: 20% !default;
$v-focus-style: 0 0 0 1px transparent;	//Focus-shadow/glow-color. Default = glow  // 0 0 0 2px rgba($v-focus-color, .5) !default;
/*$v-hover-styles-enabled: false /*true !default;*/

 /****************************************/
/*** ADDITIONAL OS-SPECIFIC VARIABLES ***/

/// Can be set and used in places where a theme-variant needs deviating style definitions.
$os-theme-desig: "steel";

$os-loading-animation: url('load_bar_2.gif');
$os-login-background-image: url('U68NITW3EI_s.jpg');

/** Switches **/
$os-button-uppercase: true;
$os-img-size-override: false;
$os-bordered: true;
$os-cash-zoom-factor: 1;
$os-cash-display-zoom-factor: 3;

$os-odd-highlight: $v-focus-color;
$os-button-as-tab: $v-focus-color;	//header

$os-light-contrast: get_contrast($strength: 7, $v-app-background-color, $desaturate: false);
$os-mid-contrast: get_contrast($strength: 37, $v-app-background-color, $desaturate: false);
$os-dark-contrast: get_contrast($strength: 67, $v-app-background-color, $desaturate: false);

/* textfield background, table background */

$os-button-color: $os-base-color;
$os-color-contrast: $os-light-contrast;
$os-textfield-shade: $os-light-contrast;

/// Lighter version of $v-focus-color as textfield background.
$os-focus-color: get_color_mix($v-focus-color, #fff, 50);
$os-base-color-light: get_color_mix($os-base-color, #fff, 50);

$os-splitter-shade: $os-light-contrast;
$os-main-header-bg: $os-light-contrast;
$os-sub-header-bg: $os-light-contrast;

/// Used to determine the correct size of font icons according to unit.
$os-font-unit: px;

/// Valo default is border-width. Not enough.
$os-splitter-size: make_even($v-unit-size/2.75);

/// Override valo defaults.
$os-button-height: $v-unit-size + floor($v-unit-size/3);
/// @todo figure out if this is needed.
$os-button-width: $v-unit-size*7;

/// Only used once so far, but probably still useful.
$os-shadow-reversed: 0px -2px 2px  transparentize(#000, 0.65);
/// @todo replace with valo-text-shadow;
$os-text-shadow: 0px 1px 1px transparentize(#000, 0.8);
