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

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

/*   CSS for jquery Tabs */
#hometabs {
border-bottom: 1px solid #105E9E;
font-size: 12px;
border: 0px;
}

.ui-tabs-active {
    color: #ffffff;
    background-color: #105E9E;
    text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
    font-weight: normal;
}
.nav > li > a:active {
    color: #ffffff;
    background-color: #105E9E;
    text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
    
}
.nav > li > a:focus {
    color: #ffffff;
    background-color: #105E9E;
    text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
    
}
.ui-state-focus a,
.ui-state-focus a:link{
    color: #ffffff;
    background-color: #105E9E;
    text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
}
.ui-state-active a,
.ui-state-active a:link{
    color: #ffffff !important;
    background-color: #105E9E !important;
    text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
    font-weight: normal;
}
/*************************/
/*  Header elements      */

.logo {
}
.header{
    background-color: #ffffff !important;
    /*background-image: url('bg2.jpg');*/
    background-size: 100% auto;
    background-image: none !important;
    text-shadow: none;
    border-bottom: 3px solid #C5CCD4;
    margin-bottom: 14px;
    margin-top: -120px;
    height: 85px;
    /*min-width: 1321px;*/
}

.nav-quick-search{
margin: 30px -10px 0px 0px !important;
padding:0 25px 0 0 !important;
float:right !important;
}

.nav-quick-search .search-query{
border-radius:5px;
border:none;
box-shadow:0px;
background-color:lightGrey;
padding-left: 27px;
}


.header #branding {
width: 100%;
height:60px;
}

.header a {
color: #08C;
font-weight: bold;
/*border-bottom: 1px solid #C5CCD4;*/
}
a {
color: #08C;
font-weight: bold;
/*border-bottom: 1px solid #C5CCD4;*/
}

.header #branding {
border-right:none;
}

#branding2{
height:20px;
width:100%;
color: #333;
/*background-color: #000000;*/
margin-bottom: 10px;
}

.header #user-tools {
    padding: 12px 20px 0px 0px;
    float: right;
    margin-top: -5px;
}

.header .header-content .date{
padding-left:10px;
}

.header .header-content .time {
font-weight: normal;
}
.header .header-content.header-content-first{
height: 15px;
padding-bottom: 0px;
}

.header .header-content {
padding-bottom: 0px;
padding: 7px 0 0 0px;
}

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

.footer .content .statusMsg {
    float: right;
    padding: 15px 20px 0 0;
    display: block;
}

.alignCenter {
    text-align: center !important;
    align: center !important;
}
table.dataTable tr.odd {
background-color: white !important;
}
table.dataTable tr.odd td.sorting_1 {
background-color: white !important;
}
table.dataTable tr.even td.sorting_1 {
background-color: white !important;
}
table.dataTable thead th div.DataTables_sort_wrapper {
    font-weight: bold;
}
.dashboard-hpc-sliver .ui-widget-header, .dashboard-hpc-sliver .ui-dialog-title, .dashboard-hpc-sliver .ui-dialog-titlebar{
}
.ui-widget-overlay {
    background: black !important;
}
.ui-corner-all {
border-bottom-left-radius: 0px !important;
border-bottom-right-radius: 0px !important;
}

#suit-center {
  /* min-width: 977px !important; */
}
#openCloudTopPage {
   margin-top: -25px;
   margin-right: -90;
   float: right;
}
#minDashboard {
  /*min-width:625px; */
  display:inline;
  float: right;
  border: 2px darkGrey;
}
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default{
background: none !important;
border-top: 0px !important;
border-left: 0px !important;
border-right: 0px !important;
}
.ui-widget-header {
background: none !important;
border-top: 0px !important;
border-left: 0px !important;
border-right: 0px !important;
}
#suit_form_tabs {
/*border-bottom: 1px solid #B5D1EA;*/
border-bottom: 1px solid #105E9E !important;
border-bottom-width: 5px !important;
border-bottom-style: solid;
/*border-bottom-color: rgb(181, 209, 234);*/
border-bottom-color: #448CCA;
color:#105E9E;
}
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited {
color: #105E9E ;
}
.save-box {
  background-color: #ffffff;
  margin: 2px;
}
.save-box .btn-info {
  font-size: 14px;
  padding: 10px 20px 10px 20px;
}
.btn-success {
  font-size: 12px;
  font-weight: normal;
  padding: 5px 10px 5px 10px;
}
.btn-success, .save-box .btn-info {
  background: #27AE5F;
  background-image: -webkit-linear-gradient(top, #27AE5F, #27ae60);
  background-image: -moz-linear-gradient(top, #27AE5F, #27ae60);
  background-image: -ms-linear-gradient(top, #27AE5F, #27ae60);
  background-image: -o-linear-gradient(top, #27AE5F, #27ae60);
  background-image: linear-gradient(to bottom, #27AE5F, #27ae60);
  -webkit-border-radius: 5;
  -moz-border-radius: 5;
  border-radius: 5px;
  text-shadow: 1px 1px 3px #666666;
  font-family: Arial;
  color: #ffffff;
  text-decoration: none;
  letter-spacing: 1px;
}

.btn-success:hover, .save-box .btn-info:hover {
  background: #2ecc71;
  text-decoration: none;
}



.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 the background color of the left side navigation list items*/
/*For changing the color of the left side navigation list items*/
/*For changing the font of the left side navigation list items*/
.left-nav>ul>li>a {
/*background-color: #CDE7FF;*/
/* Light color nav choices */
/*background-color: #DFECF8;*/
/*background-color: #91BFE4;*/
/*background-color: #DAECFC;*/
background-color: #448CCA;
/*ONlab.us reg color blue*/
/*background-color: #ccffff;*/
font-weight: normal;
/*color: #105E9E;*/
color: #ffffff;
text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
letter-spacing: 1px;
font-size: 12px;
border-bottom: none;
}

/*For giving the padding for the left side navigation*/
.left-nav>ul {
padding-left: 5px;
}

/*For increasing the height of left side navigation list items*/
.left-nav>ul>li {
padding-top:4px;
line-height: 35px;
width: 200px;
}

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

.left-nav>ul>li.active>a {
/*background-color: #448CCA;*/
/* Last Active
background-color: #0061B7; */
background-color: #515151;
/*background-color: #448CCA;*/
font-weight:normal;
color:#ffffff;
text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
letter-spacing: 1px;

left: 10px;
background-image: url("right_arrow.png");
    background-position: 97% center;
}


.nav-tabs-suit li{
/*background-color: #CDE7FF;*/
background-color: #FFFFFF;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}

.nav-tabs-suit li a {
background-color: 
/*background-color: #CDE7FF;*/
font-weight: normal;
color: #105E9E;
/*border-radius: 3px;*/
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
border: none;
box-shadow: none;
}

.nav-tabs-suit li.active{
/*Changed on Dec 11*/
/*background-color: #448CCA;*/
     background-position: 50% 100%; 
background-image:url('down_arrow.png');
}

.nav-tabs-suit li.hover{
/*Changed on Dec 11*/
/*background-color: #448CCA;*/
color:#ffffff;
/*font-size: 1.2em;*/
font-weight: bold;
}

.nav-tabs-suit li.active a {
background-color: #ffffff;
/*background-color: #448CCA;*/
background-color: #105E9E;
color:#ffffff;
font-weight:normal;
padding-top:10px;
text-decoration:none;
}

.nav-tabs-suit li.active a:after{ /*arrow added to downarrowdiv DIV*/
width: 0;
height: 0;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: 5px solid #2f2f2f;
font-size: 0;
line-height: 0;
}


/* create an arrow that points down */


.left-nav>ul>li.active>a:hover{
/*background-color: #448CCA;*/
/*background-color: #91BFE4;*/
/*background-color: #D6E7F8;*/
font-weight:normal;
font-size: 1.2em;
font-weight: bold;
color:#ffffff;
padding-top:10px;
text-decoration:none;
}

/* Adjust font weight to normal on hover, else white blurs */
.left-nav>ul>li>a:hover{
/*background-color: #448CCA;*/
/*background-color: #004775;*/
background-color: #515151;
color:#ffffff;
font-weight:normal;
font-size: 1.2em;
/*padding-top:10px;*/
text-decoration:none;
/*border-left: 15px solid #105E9E ;*/
border-left: 10px solid #ffffff;
text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
letter-spacing: 1px;
}
.nav-tabs-suit li.active a:hover,.nav-tabs-suit li a:hover{
/*background-color: #448CCA;*/
background-color: #515151;
font-weight:normal;
font-size: 1.2em;
/*color:#ffffff;*/
padding-top:10px;
text-decoration:none;
}

.breadcrumb li a {
/*font-weight:bold;*/
}

.nav-tabs {
/*
border-bottom: 1px solid #B5D1EA;*/
}

.nav-tabs>li {
margin-bottom: 0px;
}

/*.icon-home {
background-image: url('home.png');
background-repeat: no-repeat;
background-position: 85%;
}*/

/*Changed Dec11*/

/*
.icon-home {
background-image: url('home.png');
background-repeat: no-repeat;
background-position: 40%;
width: 25px;
height: 25px;
vertical-align: middle;
}
*/


.left-nav>ul>li.active>a:after {
content: none;

}

/**
* login page
*/


/*.login #wrap {
background-color: #ffffff;
}*/

.login #content-main {
width: 280px !important;
min-width: 180px;
height: 265px;
  -webkit-border-radius: 5;
  -moz-border-radius: 5;
  border-radius: 5px;
/*background: #EBF0F2;*/
background: rgba(255,255,255,0.85);
/*background: rgba(235,240,242,0.6);*/
overflow: visible !important;
}

.login #content-main h1 {
/*background: #EBF0F2;*/
background: url("open-cloud-login-themed-light.png") no-repeat scroll 40% center / 89% auto rgba(235, 240, 242, 0);
/*background-position: 40%;*/
height: 55px;
background-repeat: no-repeat;
font-size: 0px;
padding-top: 70px;
}
.login #content-main h1 i {
display:none;
}

.login #content-main h1 img{
padding-left: 8px;
}

.login #content-main .control-group .control-label{
display:none;
}

.login #content-main form input[type=text], .requestDialog.ui-widget input{
width: 94%;
padding:4px 6px;
border-radius: 0px;
height: 30px;
background-color: rgb(250, 255, 189);
/*background-image: url('name.png');*/
background-repeat: no-repeat;
background-position: 95%;
font-size: 12px;
}

.login #content-main form input[type=password] {
  width: 94%;
padding:4px 6px;
font-size: 12px;
border-radius: 0px;
height: 30px;
background-color: #E5E5E5;
background-image: url('password.png');
background-repeat: no-repeat;
background-position: 95%;
}

.login #content-main .submit-row{
background: #EBF0F215px;
background: rgba(235,240,242,0.0);
border-top:none;
padding-top:0px;
box-shadow: none;
}

.login #content-main .submit-row .btn-info {
background-color : #448CCA;
background-image: none;
height: 40px;
border-radius: 0px;
width: 100%;
margin-bottom: 4px;
}
#forgot_pwd{
font-size: 11px;
font-style: normal;
text-decoration: none;
}

#create_acct{
font-size: 11px;
font-style: normal;
text-decoration: none;
padding-left: 45px;
}

/*Dec 11 2013*/

.nav-tabs-suit li.active a{
letter-spacing: 1px;
text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
/*text-shadow: none;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
*/
}

.nav-tabs>.active>a{
border: none;
}

.nav-tabs-suit li a:hover{
border: none;
color: #ffffff;
letter-spacing: 1px;
text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
}

.nav-tabs-suit li.active a:hover{
border: none;
}

/*.nav-tabs-suit li.active {*/
 /*background: transparent url('home.png') no-repeat scroll center bottom;*/
  /*border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: 5px solid #2f2f2f;
font-size: 0;
line-height: 0;
width: 0;;
height: 0;
   margin: 0;
}*/

.login {
background-image: url('bg.jpg');
background-size: 100%;
background-repeat: no-repeat;
}


.login #content-main {
	float: none;
    height: 330px;
    margin: 100px auto 0;
    width: 265px;
}

/** 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;
}
/*Added on 13th*/

/*.input-icon {
margin-right: 30px;
}

.icon-search{

margin-left: -165px;
}*/

.login #content-main form {
margin: 5px 15px 0;
}

.login {
height: 84.5%;
}


.login #wrap {
    background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
}
#wrap {
    background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
}
#wrap {
    height: auto !important;
    margin: 0 auto -60px;
    min-height: 100%;
}

.forgotLink {
	width: 45%;
	text-align: left;
	float: left;
}

#request-account-form{
	display:none;
}

#requestAccountLink {
	width: 55%;
	text-align: right;
	float: left;
	padding-left: 21%;
	cursor: pointer;
	color: #448CCA;
	text-decoration: underline;	
}

.login .btn-info {
	color: #FFF;
}

.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{
		width: 37%;
	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;*/
}

.icon-home ,.icon-deployment ,.icon-site ,.icon-slice ,.icon-user, .icon-reservation, .icon-app{
background-position: left center;
width:22px;
height:22px;	
}

.icon-app {
background-image: url("opencloudApp.png");
}
.icon-home {
/*  Going with darker standard color nav -- so using over png's background-image: url("Home.png"); */
background-image: url("Home_over.png");
}
.icon-deployment{
background-image: url("Deployments_over.png");
}
.icon-site{
background-image: url("Sites_over.png");
}
.icon-slice{
background-image: url("Slices_over.png");
}
.icon-user{
background-image: url("Users_over.png");
}
.icon-reservation{
background-image: url("Reservations_over.png");
}

.left-nav>ul>li.active>a>.icon-home , .left-nav>ul>li:hover>a>.icon-home , .left-nav>ul>li.focus>a>.icon-home{
background-image: url("Home_over.png");
}

.left-nav>ul>li.active>a>.icon-deployment,.left-nav>ul>li:hover>a>.icon-deployment,.left-nav>ul>li.focus>a>.icon-deployment{
background-image: url("Deployments_over.png");
}
.left-nav>ul>li.active>a>.icon-site , .left-nav>ul>li:hover>a>.icon-site , .left-nav>ul>li.focus>a>.icon-site{
background-image: url("Sites_over.png");
}
.left-nav>ul>li.active>a>.icon-slice , .left-nav>ul>li:hover>a>.icon-slice , .left-nav>ul>li.focus>a>.icon-slice {
background-image: url("Slices_over.png");
}
.left-nav>ul>li.active>a>.icon-user , .left-nav>ul>li:hover>a>.icon-user , .left-nav>ul>li.focus>a>.icon-user{
background-image: url("Users_over.png");
}
.left-nav>ul>li.active>a>.icon-reservation , .left-nav>ul>li:hover>a>.icon-reservation , .left-nav>ul>li.focus>a>.icon-reservation{
background-image: url("Reservations_over.png");
}

#dashboardHPC {
    padding-bottom: 10px;
}
.summary-attr {
    padding-right: 20px;
}
.summary-attr-util {
    padding-right: 20px;
    color: green;
}
.SiteDetail {
color: darkBlue;
    font-size: 1.5em;
}
#addSlivers {
 color: green;
text-decoration: underline;
    padding-right: 20px;
}
#remSlivers {
 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,#sliver-btn,#save-btn{
  float:right;
}
 #delete-slice-btn,#download-details,#add-user-btn{
	margin-left:1%;
}

#sliver-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%;
}

#advNumOfSlivers{
        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%;
}
