@import './lib/_variables';
@import "./bootstrap/_bootstrap";
@import "lib/header";
@import "lib/nav";
@import "lib/footer";
@import "lib/data_table";
@import "lib/tabs";
@import "lib/login";
@import 'lib/breadcrumb';
@import 'lib/form';
@import "lib/logout";
/************************
colors:
    tab - active/focus color
    background-color: #105E9E !important;

ONLab darker blue select :: background-color: #004775;
#0170BB
    left-nav
    background-color: #448CCA;
    background-color // normal: #B4CADF
91BFE4

*************************/

html, body, body.login {
  height: 100%;
  min-height: 100%;
  margin: 0;
}

body{
  max-width: 100%;
  overflow-x: hidden;
}

#wrap {
  height: 100%;
  min-height: 100%;
  padding-bottom: 60px;
}

/* ************************* SIDENAV TOGGLE ************************* */

#wrapper {
    padding-left: 0;
    transition: all 0.5s ease;
    min-height: 100%;
    height: 100%;
}

#wrapper.toggled {
    padding-left: 250px;
}

#sidebar-wrapper {
  z-index: 99;
  position: fixed;
  left: 250px;
  width: 0;
  height: 100%;
  margin-left: -250px;
  overflow-y: auto;
  transition: all 0.5s ease;
  background: white;
}

#wrapper.toggled #sidebar-wrapper {
  width: 250px;
  padding: 10px;
}

#page-content-wrapper {
  width: 100%;
  position: absolute;
  padding: 15px;
  min-height: 100%;
  height: 100%;
  .container-fluid, 
  .content-wrapper, 
  .content-wrapper .col-lg-12, 
  .suit-columns,
  #content {
    min-height: 100%;
    height: 100%;
  }

  #content {
    padding-left:  ($grid-gutter-width / 2);
    padding-right: ($grid-gutter-width / 2);
  }

  #content-main {
    padding-bottom: 60px;
  }
}


.ui-tabs-panel {
    min-height: 700px;
}

#wrapper.toggled #page-content-wrapper {
    position: absolute;
    margin-right: -250px;
}

@media(min-width:768px) {
    #wrapper {
        padding-left: 250px;
    }

    #wrapper.toggled {
        padding-left: 0;
    }

    #sidebar-wrapper {
      width: 250px;
      padding: 10px;
    }

    #wrapper.toggled #sidebar-wrapper {
        width: 0;
    }

    #page-content-wrapper {
        padding: 20px;
        position: relative;
    }

    #wrapper.toggled #page-content-wrapper {
        position: relative;
        margin-right: 0;
    }
}

.navbar-toggle{
  border: 1px solid #08C;
}

.navbar-toggle .icon-bar{
  background: #08C;
}
/* ************************* END SIDENAV TOGGLE ************************* */

/************************* FORM TWEAKS *************************/
@media (min-width: $screen-md){
    .form-column.col-lg-4 {
        width: 66.66666667%;
    }
}
/************************* FORM TWEAKS *************************/

/*   CSS for jquery Tabs */



.alignCenter {
    text-align: center !important;
    align: center !important;
}

.ui-widget-overlay {
    background: black !important;
}
.ui-corner-all {
border-bottom-left-radius: 0px !important;
border-bottom-right-radius: 0px !important;
}

#openCloudTopPage {
   margin-top: -25px;
   margin-right: -90;
   float: right;
}
#minDashboard {
  /*min-width:625px; */
  display:inline;
  float: right;
  border: 2px darkGrey;
}

.save-box {
  background-color: #ffffff;
  margin: 2px;
}
.save-box .btn-info {
  font-size: 14px;
  padding: 10px 20px 10px 20px;
}

.required:after {
  color: red !important;
  font-size: 18px;
}
/*.btn-success {color:black}*/
#suit-center {
padding: 20px;
width: 100%;
/*min-width:650px;*/
}
.inner-two-columns .inner-center-column .tab-content {
overflow-x: auto;
margin-bottom: 15px;
/*min-width: auto;*/
width:100%;
}
/*.inner-two-columns .inner-center-column {
  margin-right: 200px;
  background-color: rgb(158, 163, 159);
}*/
label {
display: block;
font-weight: bold;
margin-bottom: 5px;
}

/*For changing background color of suit center*/
#suit-center {
background-color: #ffffff;
}

/** Leave room for scroll bar now that contents can be appropriately scrolled **/
.form-horizontal .inline-group .add-row {
    margin: -1px -1px 15px 0px;
}

/** Setting overflow and 1kpx to deal with inlines/forms overlapping on 
    browser resizes **/
#content-main {
    overflow-x:auto;
    /*min-width: 1000px;*/
}

.tab-content tab-content-main {
    overflow-x: auto !important;
}

#wrap{
background:none;
}

.noclearfix {
    display:block; clear:left; width:0px; height:0px;
}

body{
background-color:#ffffff;
}

.suit-column{
background-color:#ffffff;
}



.nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus {
	/*background-color: #448CCA;*/
	background-color: #105E9E;
	color: #FFF;
	border: none;
}

/*Added by Beena for adding the three components in dashboard*/
.breadcrumb{
	display:inline-block;
	background-color: #fff;

}

.nodetextbox{
	/*background-color: #ededed;*/
	line-height: 25px;
	width: 150px; 
	text-align: center;
	font-weight: bold;
	margin-left:0px;
	display:inline-block;
	border:none;
	font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
	font-size: 8px;
}

.nodelabel{
width: 20px;
display: inline-block;
border-radius: 0px;
border:1px solid #000;
/*line-height: 23px;*/
text-align: center;
font-weight: normal;
}

#user-tools {
  font-weight: bold;
}
.header-content .header-column {
	display: none;
}
.header .input-icon {
    background-image: url("Search.png");
    background-repeat: no-repeat;
background-position:left center;
opacity:1;
    background-size: 100%;
    vertical-align:middle;
	margin-right: -30px;
    /*margin-top: 5px;*/
    position: relative;
    height: 22px;
    width: 22px;
}

.header .icon-search {
	/*background-image: url("search.png") !important;
    background-repeat: no-repeat !important;
    background-size: 120% auto !important;
    background-position: 0;*/
}

#dashboardHPC {
    padding-bottom: 10px;
}
.summary-attr {
    padding-right: 20px;
}
.summary-attr-util {
    padding-right: 20px;
    color: green;
}
.SiteDetail {
color: darkBlue;
    font-size: 1.5em;
}
#addInstances {
 color: green;
text-decoration: underline;
    padding-right: 20px;
}
#remInstances {
 color: red;
 text-decoration: underline;
}
#map-us {
    padding-top: 10px;
    width: 700px;
    height: 400px;
}

.minidashbutton {
	-moz-box-shadow:inset 0px 1px 0px 0px #ffffff;
	-webkit-box-shadow:inset 0px 1px 0px 0px #ffffff;
	box-shadow:inset 0px 1px 0px 0px #ffffff;
	background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ffffff), color-stop(1, #f6f6f6));
	background:-moz-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);
	background:-webkit-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);
	background:-o-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);
	background:-ms-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);
	background:linear-gradient(to bottom, #ffffff 5%, #f6f6f6 100%);
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f6f6f6',GradientType=0);
	background-color:#ffffff;
	-moz-border-radius:6px;
	-webkit-border-radius:6px;
	border-radius:6px;
	border:1px solid #dcdcdc;
	display:inline-block;
	cursor:pointer;
	color:#666666;
	font-family:arial;
	font-size:15px;
	font-weight:bold;
	padding:6px 24px;
	text-decoration:none;
	text-shadow:0px 1px 0px #ffffff;
}
.minidashbutton:hover {
	background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #f6f6f6), color-stop(1, #ffffff));
	background:-moz-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);
	background:-webkit-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);
	background:-o-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);
	background:-ms-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);
	background:linear-gradient(to bottom, #f6f6f6 5%, #ffffff 100%);
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f6f6f6', endColorstr='#ffffff',GradientType=0);
	background-color:#f6f6f6;
}

.newMiniDashboard {
    border: 1px solid green;
    width: auto;
}

.endDashPair {
    clear: left;
}
.miniDashPair {
    float: left;
    width: auto;
    margin-left: 20px;
}

.miniDashPair label {
 text-align: center;
}
/* Charts CSS */
p.numeral
{
	font-size:32pt;
	color:#ffffff;
	opacity: 0.7;
	font-family:Helvetica Neue;
	font-weight:100;
	text-align:center;
	line-height:75%;
}

.helper-text
{
	border: 1px solid #fff;
	padding: 7px;
	border-radius: 18px;
	font-size:13pt;
	color:#ffffff;
	opacity: 0.7;
	font-family:Helvetica Neue;
	font-weight:200;
	text-align:center;
	line-height:100%;
}
p.osobject
{
	font-size:12pt;
	color:#ffffff;
	opacity: 0.7;
	font-family:Helvetica Neue;
	font-weight:200;
	text-align:center;
	line-height:100%;
}

p.heading
{
	font-size:20px;
        letter-spacing: 1px;
	color: black;
	font-family:Arial;
	font-weight:bold;
	text-align:center;
}

/*p.heading
{
	font-size:32pt;
	color:#ffffff;
	opacity: 0.7;
	font-family:Helvetica Neue;
	font-weight:200;
	text-align:center;
}*/

div.graph 
{
	height:340px;
}

div.numeral 
{
	height:120px;
}

div.heading 
{
	height:10px;
}

div.padding 
{
	height:20px;
}

div.chartContainer
{
	/*background-image:url('chartsBg.jpg');*/
	width:527px;
	height:400px;
	border:1px;
}

/* D3 */

.axis path,
.axis line {
  fill: none;
  stroke: #ffffff;
  opacity: 0.7;
  shape-rendering: crispEdges;
}


.x.axis path {
  display: none;
}

.x.axis text {
  fill: white;
  opacity: 0.5;
}

.y.axis text {
  opacity: 0.5;
  fill: white;
}

.y.axis text.legend {
  opacity: 1.0;
  fill: white;
  font-size:8pt;
}

.line {
  fill: none;
  stroke: white;
  stroke-width: 3px;
  opacity: 0.6;
}


/******  Added in so that we can have a loader show as charts get ready to render ***/
.loading {
    //background-color: orange;
    background-image: url(spinner.gif) no-repeat center middle;
    text-align: center;
    font-size: 20px;
    height: 100%;
/*    width: auto;*/
    float: left;
    padding: 10px;
}
/* Charts CSS */

#tabs-4 {
    margin: 40px;
    font-size: 24px;
    font-weight: bold;
}

.tenant-row{
   padding-bottom: 0.7%;
}

/***********TENANT VIEW*************/

#image-dropdown,#slice-image-value,#adv-slice-image-value{
 margin-left: 5%;
}


#adv-slice-image-value{
margin-right: 0.5%;
}

#adv-network-value {
margin-right: 0.3%;
}

#network-dropdown,#adv-network-dropdown,#adv-network-value{
 margin-left: 3.7%;
}

#service-level-dropdown,#service-level-value,#adv-service-level-dropdown,#adv-service-level-value{
 margin-left: 0.2% !important;
}

#slice-name-value,#adv-slice-name-value{
   margin-left: 2%;
}
#adv-dataset-dropdown{
margin-left: 3.7%;
}
#advanced-tenant,#basic-tenant,#instance-btn,#save-btn{
  float:right;
}
 #delete-slice-btn,#download-details,#add-user-btn{
	margin-left:1%;
}

#instance-btn,#save-btn,#create-slice-btn,#delete-slice-btn,#add-user-btn,#download-details{
  margin-top:1%;
}

.tenantDialog.ui-widget input{
        border-radius: 0px !important;
	height: 12px !important;
	width: 180px !important;
	margin-right: 10% !important;
	float: right;
}

.tenantDialog .ui-dialog-buttonset .ui-button{
border-radius: 0 !important;
background-color: grey !important;
font-weight: bold !important;
font-size: 0.9em !important;
}

.tenantDialog .ui-dialog-titlebar{
border-radius: 0 !important;
background-color: grey !important;
}

.create-slice-row{
	margin-bottom: 4%;
	clear: both;
	height: 25px;
}

.create-slice-row label, .tenantDialog label{
   margin-right:1%;
   float:left;
}

.create-slice-row select{
   height:24px;
   width: 196px;
   font-size: 0.9em !important;
}

.tenant-create-slice{
	float:right;
	margin-right: 10% !important;
}

#delete-slice{
float: right;
}

#tooltip,#adv-tooltip,#basic-tooltip{
font-size:0.7em;
color:red;
display:none;
}

#tenantSliceDataWrapper {
	padding: 1% 0;
}

#advancedTenantSliceDataWrapper .help-inline{
	font-size: 11px;
	color: #999;
	padding-bottom: 1%;
}

.create-slice-row label{
	clear:both;
	margin-right: 1%;
}

#advNumOfInstances{
        margin-right: 1% !important;
}

#private-vol-checkbox{
margin: 0 0 1% 1%;
}

.public-key-warning{
text-align: center;
display:none;
}

#private-vol{
margin-right: 15% !important;
}
.customize_row {
  display: table;
}
.customize_column {
  display: table-cell;
  padding: 10px;
}

.request-form-row{
padding:1% 8%;
}

.requestDialog{
background-color: white;
border-radius: 8px;
width: 30% !important;
height: 40% !important;
margin-top: -16%;
top: -103.703125px !important;
}

.request-form-row label{
	float: left;
}


.requestDialog .ui-dialog-buttonset .ui-button{
border-radius: 0 !important;
background-color: grey !important;
font-weight: bold !important;
font-size: 0.9em !important;
}

.requestDialog .ui-dialog-titlebar-close{
float:right;
}

#request-signup{
height: 40px !important;
margin: 0 14%;
float: left;
background-color: #448CCA;
background-image: none;
width: 70% !important;
}

.requestDialog .ui-dialog-titlebar{
border-radius: 0 !important;
height: 25px;
padding-top: 2%;
}

.requestDialog #ui-id-1{
padding-left: 28%;
font-size: medium;
}

#request-site-name{
	width: 98%;
}

/* SUIT CHANGES */

.form-buttons {
    margin-top: 20px;
    padding: 10px;
    border-top: 1px solid #cccccc;
}

.form-horizontal .selector .selector-chooser li .selector-remove,
.form-horizontal .selector .selector-chooser li .selector-remove:hover{
  @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base);
  @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
}

.form-horizontal .selector .selector-chooser li .selector-add,
.form-horizontal .selector .selector-chooser li .selector-add:hover{
  margin-bottom: $form-group-margin-bottom;
  @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base);
  @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
}

/* MODAL */
.ui-dialog{
  z-index: 4000 !important;
}

button.ui-dialog-titlebar-close{
  font-family: 'Glyphicons Halflings' !important;
  display: inline-block;
}

button.ui-dialog-titlebar-close:after {
    content: "\e014";
}
/* VCPe ADMIN FIX
form#vcpeservice_form ul li {
    display: inline-block;
    background: red;
    margin-top: 10px;
    width: auto;
    padding: 10px;
    border-radius: 5px;
}
*/