/*!
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */body{background-color:#fff;color:#3b3b3b;font-family:Tahoma,Arial,sans-serif;font-size:10pt;line-height:140%;margin:0;padding:0}
a{color:#1980af;text-decoration:none}
a:visited{color:#1980af}
a:hover{color:#1faae9;text-decoration:underline}
img,a img{border:0}
.title{position:absolute;left:1px;right:1px;top:25px;height:81px;background:url(../../images/gradient.png) repeat-x;background-position:bottom}
.logo{position:absolute;width:15em;height:81px;text-align:center}
.header{text-align:right;margin-right:20pt}
.menu{border-top:10px solid #f9bb00;position:absolute;top:107px;left:1px;width:15em;bottom:0;padding:0;background-color:#fcfcfc}
.menu ul{background-color:#fdf5d9;list-style:none;padding-left:0;margin-top:0;padding-top:2em;padding-bottom:2em;margin-left:0;color:#4a4a43}
.menu ul li{padding-left:4em;padding-top:2px;padding-bottom:2px}
.menu ul li.ui-state-highlight{font-weight:bold}
.menu a{color:#4a4a43}
.main{position:absolute;border-top:10px solid #cde0ea;top:107px;left:15em;right:1px;margin-left:2px;padding:10px 10px}
#menu_login{display:inline;margin:10px 20px;font-size:11px;padding:5px 7px;position:absolute;right:0;top:0;z-index:10}
.usermgmt-body{padding:5px}
.usermgmt-header{font-size:14px;padding:5px 10px;margin:0 0 10px 0}
.info-msg-block{margin-left:10px;margin-right:10px;margin-bottom:10px}
.info-msg-block p{margin:5px}
.info-msg-block span.ui-icon{float:left}
.info-msg-text{margin-left:5px}
#find-authorizables-form fieldset{border:0;margin:0;padding:0;line-height:20px}
.search-empty-msg{line-height:100px;font-size:large;font-weight:bold;text-align:center}
#find-authorizables-quick-nav{padding:2px 4px}
#authorizables-results-body,#authorizables-results-progress{margin-top:5px}
#find-authorizables-quick-nav label{width:auto;padding:3px 5px}
#find-authorizables-quick-nav .ui-button-text-only .ui-button-text{line-height:1;padding:1px 1px;font-size:10pt}
#find-authorizables-block .ui-button-text-only .ui-button-text{line-height:1;padding:5px 5px;font-size:10pt}
#search-result-paging .ui-button-text-only .ui-button-text{line-height:1;font-size:10pt}
#search-result-paging span#current_page{margin-left:6px;margin-right:6px}
#find-authorizables-block{float:right;line-height:33px;padding-right:10px}
#find-authorizables-block input{padding:0 4px;font-size:10pt}
#search-result td,#search-result th{padding:5px}
#search-result tr.odd{background-color:#eee}
#find-authorizables-header{margin-bottom:5px}
#find-authorizables-header h3{font-size:14px;font-weight:bold;display:inline;line-height:33px;border-style:none}
#create-user-form,#create-group-form{margin:0;padding:0}
#create-user-form fieldset,#create-group-form fieldset{border:0;margin:0;padding:0;line-height:20px}
#create-user-form label,#create-group-form label{float:left;display:inline;width:20%;text-align:right}
#create-user-form input,#create-group-form input{margin-left:10px;width:70%}
#create-user-form button,#create-group-form button{margin-left:10px}
#update-user-form,#update-password-form,#update-group-form{margin:0;padding:0}
#update-user-form fieldset,#update-password-form fieldset,#update-group-form fieldset,#remove-user-form fieldset,#remove-group-form fieldset,#add-property-form fieldset,#add-group-member-form fieldset{border:0;margin:0;padding:0;line-height:20px}
#update-user-form label,#update-password-form label,#update-group-form label,#add-property-form label,#add-group-member-form label{float:left;display:inline;width:20%;text-align:right}
#update-user-form input,#update-password-form input,#update-group-form input,#add-property-form input,#add-group-member-form input{margin-left:10px;width:70%}
#update-user-form button,#update-password-form button,#update-group-form button{margin-left:10px}
#update-user-form ol,#update-group-form ol{float:left;display:inline;width:65%;margin:0 5px 0 10px;padding-left:0;list-style-position:inside;list-style-type:none}
#update-password-body{margin-top:10px}
#update-password-form label{width:20%;text-align:right}
#update-password-form input{margin-left:10px;width:70%}
#update-password-form button{margin-left:10px}
#loginStatusInput label,#loginStatusInput input{width:auto;float:none}
#loginStatusInput{width:75%}
#disabledReasonPanel label{width:auto;margin-left:15px;float:none}
#disabledReasonPanel input{width:42%}
.prop-line{margin-bottom:5px;line-height:26px}
.prop-line .remove-property,.prop-line .remove-member{position:absolute;margin:5px 5px}
.ui-autocomplete-loading{background:white url('../../images/ui-anim_basic_16x16.gif') right center no-repeat}
.noscript-hide{display:none}
input.error,textarea.error{border:1px dotted red}
label.error,label.error{color:red;font-style:italic;font-weight:bold;margin-left:20%;padding-left:10px;text-align:left!important;width:auto!important}