////
/// @group root/variables-cxo
////

@import "components/functions.scss";

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

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

$v-textfield-disabled-opacity: 1;

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

/* $v-background-color: #3d3b3c; */
$v-app-background-color: #fff;

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

/// Main color accent of theme; not available as valo variable.
$os-base-color: #2364aa;
/* $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: #ffd210;
$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: floor($v-unit-size * 0.1);
/* $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;
$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;*/

$v-table-border-radius: $v-border-radius;

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

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

$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: 2;
$os-cash-display-zoom-factor: 3;

$os-odd-highlight: $v-focus-color;
$os-button-as-tab: $v-app-background-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: #f8f5f0;
$os-textfield-shade: #f8f5f0;

/// 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: #b2d0e9;
$os-main-header-bg: $os-light-contrast;
$os-sub-header-bg: $os-light-contrast;
$os-h2-shade: $os-base-color;
$os-header-shade-1: $v-focus-color;
$os-header-shade-2: #fffb8e;

/// 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);

/// Override valo defaults.
$os-button-height: $v-unit-size + floor($v-unit-size/2);
/// @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: 1px 3px 7px  transparentize(#000, 0.9);
/// @todo replace with valo-text-shadow;
$os-text-shadow: 0px 1px 1px transparentize(#000, 0.8);
