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

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

.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]{
width: 94%;
padding:4px 6px;
border-radius: 0px;
height: 30px;
background-color: #E5E5E5;
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;
}

.createAccountLink {
	width: 55%;
	text-align: right;
	float: left;
	
}

.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%;
}

#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%;
}
#advanced-tenant,#basic-tenant,#sliver-btn,#save-btn{
  float:right;
}
 #delete-slice-btn,#download-details{
	margin-left:1%;
}

#sliver-btn,#save-btn,#create-slice-btn,#delete-slice-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;
}
