@import './lib/_variables';
@import "./bootstrap/_bootstrap";
@import "lib/header";
@import "lib/nav";
@import "lib/footer";
@import "lib/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: ($grid-gutter-width / 2);*/
    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 $brand-primary;
}

.navbar-toggle .icon-bar{
  background: $brand-primary;
}
/* ************************* END SIDENAV TOGGLE ************************* */

/************************* FORM TWEAKS *************************/
@media (min-width: $screen-md){
    .form-column.col-lg-4 {
        width: 66.66666667%;
    }
}
/************************* END 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;
}
*/