@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 ************************* */

[ui-view] {
    margin-bottom: 100px;
}

/************************* 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;
}
*/