/*

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.

*/

#content #schema .loader
{
  background-position: 0 50%;
  padding-left: 21px;   
}

#content #schema.loaded
{
  background-image: url( ../../img/div.gif );
  background-position: 21% 0;
  background-repeat: repeat-y;
}

#content #schema #data
{
  float: right;
  width: 78%;
}

#content #schema #related
{
  float: left;
  width: 20%;
}

#content #schema #related select
{
  width: 100%;
}

#content #schema #related select optgroup
{
  font-style: normal;
  padding: 5px;
}

#content #schema #related select option
{
  padding-left: 10px;
}

#content #schema #related #f-df-t
{
  border-bottom: 1px solid #f0f0f0;
  padding-bottom: 15px;
}

#content #schema #related .ukf-dsf dt
{
}

#content #schema #related dl
{
  margin-top: 15px;
}

#content #schema #related dl dt,
#content #schema #related dl dd a
{
  color: #c0c0c0;
}

#content #schema #related dl dt
{
  font-weight: bold;
  margin-top: 5px;
}

#content #schema #related dl dd a
{
  display: block;
  padding-left: 10px;
}

#content #schema #related dl dd a:hover
{
  background-color: #f8f8f8;
}

#content #schema #related .field .field,
#content #schema #related .field .field a,
#content #schema #related .dynamic-field .dynamic-field,
#content #schema #related .dynamic-field .dynamic-field a,
#content #schema #related .type .type,
#content #schema #related .type .type a,
#content #schema #related .active,
#content #schema #related .active a
{
  color: #333;
}

#content #schema #related .copyfield,
#content #schema #related .copyfield a
{
  color: #666;
}

#content #schema #data
{
}

#content #schema #data #index dt
{
  float: left;
  margin-right: 5px;
  width: 150px;
}

#content #schema #data #field .field-options
{
  margin-bottom: 10px;
}

#content #schema #data #field .field-options .head h2
{
  padding-left: 5px;
}

#content #schema #data #field .partial
{
}

#content #schema #data #field .partial p
{
  background-image: url( ../../img/ico/exclamation-button.png );
  background-position: 0 50%;
  padding-left: 21px;
}

#content #schema #data #field .field-options .options dt,
#content #schema #data #field .field-options .options dd
{
  float: left;
}

#content #schema #data #field .field-options .options dt
{
  clear: left;
  margin-right: 5px;
  width: 100px;
}

#content #schema #data #field .field-options .flags
{
  margin-top: 10px;
  margin-bottom: 20px;
}

#content #schema #data #field .field-options .flags thead td
{
  color: #c0c0c0;
  padding-right: 5px;
  width: 100px;
}

#content #schema #data #field .field-options .flags tbody td,
#content #schema #data #field .field-options .flags th
{
  padding: 2px 5px;
}

#content #schema #data #field .field-options .flags thead td,
#content #schema #data #field .field-options .flags tbody th
{
  padding-left: 0;
}

#content #schema #data #field .field-options .flags thead th,
#content #schema #data #field .field-options .flags tbody td
{
  border-left: 1px solid #f0f0f0;
}

#content #schema #data #field .field-options .flags tbody th,
#content #schema #data #field .field-options .flags tbody td
{
  border-top: 1px solid #f0f0f0;
}

#content #schema #data #field .field-options .flags tbody .check
{
  background-color: #fafdfa;
  background-image: url( ../../img/ico/tick.png );
  background-position: 50% 50%;
  text-align: center;
}

#content #schema #data #field .field-options .flags tbody .check span
{
}

#content #schema #data #field .field-options .flags tbody .text
{
  color: #c0c0c0;
}

#content #schema #data #field .field-options .analyzer,
#content #schema #data #field .field-options .analyzer li,
#content #schema #data #field .field-options .analyzer ul,
#content #schema #data #field .field-options .analyzer ul li
{
}

#content #schema #data #field .field-options .analyzer p,
#content #schema #data #field .field-options .analyzer dl
{
  float: left;
}

#content #schema #data #field .field-options .analyzer p
{
  margin-right: 5px;
  text-align: right;
  width: 125px;
  white-space: pre;
}

#content #schema #data #field .field-options .analyzer p a
{
  cursor: auto;
}

#content #schema #data #field .field-options .analyzer p a.analysis
{
  cursor: pointer;
  display: block;
}

#content #schema #data #field .field-options .analyzer p a.analysis span
{
  background-image: url( ../../img/ico/question-white.png );
  background-position: 0 50%;
  padding-left: 21px;
}

#content #schema #data #field .field-options .analyzer p a.analysis:hover span
{
  background-image: url( ../../img/ico/question.png );
  color: #008;
}

#content #schema #data #field .field-options .analyzer a
{
  cursor: auto;
}

#content #schema #data #field .field-options .analyzer .toggle
{
  background-image: url( ../../img/ico/chevron-small-expand.png );
  background-position: 100% 50%;
  cursor: pointer;
  display: block;
  padding-right: 21px;
}

#content #schema #data #field .field-options .analyzer .open .toggle
{
  background-image: url( ../../img/ico/chevron-small.png );
}

#content #schema #data #field .field-options .analyzer li
{
  border-top: 1px solid #f0f0f0;
  margin-top: 10px;
  padding-top: 10px;
}

#content #schema #data #field .field-options .analyzer ul
{
  clear: left;
  margin-left: 55px;
  padding-top: 5px;
}

#content #schema #data #field .field-options .analyzer .open ul
{
  display: block;
}

#content #schema #data #field .field-options .analyzer ul li
{
  border-top: 1px solid #f8f8f8;
  margin-top: 5px;
  padding-top: 5px;
}

#content #schema #data #field .field-options .analyzer ul p
{
  color: #999;
  margin-right: 5px;
  text-align: right;
  width: 70px;
}

#content #schema #data #field .field-options .analyzer ul dd
{
  margin-left: 20px;
}

#content #schema #data #field .field-options .analyzer ul dd
{
  background-image: url( ../../img/ico/document-list.png );
  background-position: 0 50%;
  color: #c0c0c0;
  padding-left: 21px;
}

#content #schema #data #field .field-options .analyzer ul dd.ico-0
{
  background-image: url( ../../img/ico/slash.png );
}

#content #schema #data #field .field-options .analyzer ul dd.ico-1
{
  background-image: url( ../../img/ico/tick.png );
}

#content #schema #data #field .head
{
  margin-bottom: 5px;
}

#content #schema #data #field .terminfo-holder
{
  border-top: 1px solid #c0c0c0;
  padding-top: 10px;
}

#content #schema #data #field .terminfo-holder .trigger
{
  float: left;
  width: 140px;
}

#content #schema #data #field .terminfo-holder .trigger button span
{
  background-image: url( ../../img/ico/information.png );
}

#content #schema #data #field .terminfo-holder .status
{
  border-left: 1px solid #f0f0f0;
  float: left;
  padding-left: 20px;
  padding-right: 20px;
}

#content #schema #data #field .terminfo-holder.disabled .trigger button span
{
  background-image: url( ../../img/ico/prohibition.png );
}

#content #schema #data #field .terminfo-holder.disabled .status
{
  display: block;
}

#content #schema #data #field .terminfo-holder .trigger .autoload
{
}

#content #schema #data #field .terminfo-holder.loaded .trigger .autoload
{
  background-image: url( ../../img/ico/ui-check-box-uncheck.png );
  background-position: 0 50%;
  color: #c0c0c0;
  display: block;
  margin-top: 10px;
  padding-left: 21px;
}

#content #schema #data #field .terminfo-holder .trigger .autoload:hover
{
  color: #008;
}

#content #schema #data #field .terminfo-holder .trigger .autoload.on
{
  background-image: url( ../../img/ico/ui-check-box.png );
  color: #333;
}

#content #schema #data #field .topterms-holder,
#content #schema #data #field .histogram-holder
{
  border-left: 1px solid #f0f0f0;
  float: left;
  padding-left: 20px;
  padding-right: 20px;
}

#content #schema #data #field .topterms-holder .head input
{
  height: 18px;
  line-height: 16px;
  text-align: right;
  width: 30px;
}

#content #schema #data #field .topterms-holder .head .max-holder
{
  color: #c0c0c0;
}

#content #schema #data #field .topterms-holder .head .max-holder:hover .max
{
  color: #008;
}

#content #schema #data #field .topterms-holder .head #query_link
{
  background-image: url( ../../img/ico/question-white.png );
  background-position: 0 50%;
  color: #c0c0c0;
  padding-left: 21px;
  margin-left: 5px;
}

#content #schema #data #field .topterms-holder .head #query_link:hover
{
  background-image: url( ../../img/ico/question.png );
}


#content #schema #data #field .topterms-holder .head #query_link span
{
  visibility: hidden;
}

#content #schema #data #field .topterms-holder .head #query_link:hover span
{
  visibility: visible;
}

#content #schema .topterms-holder li
{
  border-top: 1px solid  #999;
  margin-bottom: 5px;
}

/* possible overwrite with inline style */
#content #schema .topterms-holder li p
{
  background-color:  #999;
  color: #fff;
  float: left;
}

#content #schema .topterms-holder li p span
{
  display: block;
  padding-right: 2px;
  text-align: right;
}

/* possible overwrite with inline style */
#content #schema .topterms-holder li ul
{
  margin-left: 30px;
}

#content #schema .topterms-holder li li
{
  border-top: 0;
  margin-bottom: 0;
  white-space: nowrap;
}

#content #schema .topterms-holder li li.odd
{
  background-color: #f0f0f0;
}

#content #schema .topterms-holder li li a
{
  display: block;
  padding-left: 2px;
  padding-right: 2px;
}

#content #schema .topterms-holder li li a:hover
{
  background-color: #c0c0c0;
}

#content #schema #data #field .histogram-holder ul
{
  margin-left: 25px;
}

#content #schema #data #field .histogram-holder li
{
  margin-bottom: 2px;
  position: relative;
  width: 150px;
}

#content #schema #data #field .histogram-holder li.odd
{
  background-color: #f0f0f0;
}

#content #schema #data #field .histogram-holder li dl,
#content #schema #data #field .histogram-holder li dt
{
  padding-top: 1px;
  padding-bottom: 1px;
}

#content #schema #data #field .histogram-holder li dl
{
  background-color: #c0c0c0;
  min-width: 1px;
}

#content #schema #data #field .histogram-holder li dt
{
  color: #a0a0a0;
  position: absolute;
  overflow: hidden;
  left: -25px;
  top: 0px;
}

#content #schema #data #field .histogram-holder li dt span
{
  display: block;
  padding-right: 4px;
  text-align: right;
}

#content #schema #data #field .histogram-holder li dd
{
  clear: left;
  float: left;
  margin-left: 2px;
  white-space: nowrap;
}

#content #schema #data #field .histogram-holder li:hover dl
{
  background-color: #b0b0b0;
}

#content #schema #data #field .histogram-holder li:hover dt
{
  color: #333;
}

#content #schema #actions {
  margin-bottom: 20px;
  min-height: 30px;
}

#content #schema .actions #addField span { background-image: url( ../../img/ico/document-list.png ); }
#content #schema .actions #addDynamicField span { background-image: url( ../../img/ico/documents-stack.png ); }
#content #schema .actions #addCopyField span { background-image: url( ../../img/ico/document-import.png ); }

#content #schema .actions div.action
{
  width: 320px;
  background-color: #fff;
  border: 1px solid #f0f0f0;
  box-shadow: 5px 5px 10px #c0c0c0;
  -moz-box-shadow: 5px 5px 10px #c0c0c0;
  -webkit-box-shadow: 5px 5px 10px #c0c0c0;
  position: absolute;
  left: 160px;
  top: 50px;
  padding: 10px;
  z-index: 2;
}

#content #schema .actions p
{
  padding-bottom: 8px;
}

#content #schema .actions label
{
  float: left;
  padding-top: 3px;
  padding-bottom: 3px;
  text-align: right;
  width: 25%;
}

#content #schema .actions input,
#content #schema .actions select,
#content #schema .actions .buttons,
#content #schema .actions .note span
{
  float: right;
  width: 71%;
}

#content #schema .actions label.checkbox {
  margin-left: 27%;
  text-align: left;
  width: 73%;
  padding: 0px;
  margin-top: 0px;
}
#content #schema .actions .checkbox input {
  float: none;
  width: auto;
}

#content #schema .add_showhide {
  background-image: url( ../../img/ico/chevron-small-expand.png );
  background-position: 100% 50%;
  cursor: pointer;
  padding-right: 21px;
}

#content #schema .add_showhide.open {
    background-image: url( ../../img/ico/chevron-small.png );
}

#content #schema label
{
  cursor: pointer;
  display: block;
  margin-top: 5px;
  width: 100%;
}

#content #schema .checkbox
{
  margin-bottom: 0;
  width: auto;
}

#content #schema .chosen-container {
  margin-left: 6px;
  width: 100%;
}
#content #schema .chosen-drop input,
#content #schema .chosen-results {
  width: 100% !important;
}

#content #schema button span
{
  background-image: url( ../../img/ico/cross.png );
}
#content #schema button.submit span
{
  background-image: url( ../../img/ico/tick.png );
}

#content #schema .error
{
  background-image: url( ../../img/ico/cross-button.png );
  background-position: 22% 1px;
  color: #c00;
  font-weight: bold;
  margin-bottom: 10px;
}

#content #schema #actions .error span
{
  float: right;
  width: 71%;
  padding-left: 3px;
  padding-right: 3px;
}

#content #schema .delete-field button span {
  background-image: url( ../../img/ico/cross.png );
}

#content #schema span.rem {
  background-image: url( ../../img/ico/cross.png );
  background-position: 100% 50%;
  cursor: pointer;
  padding-right: 21px;
  right:10px;
  float:right;
}

#content #schema .copyfield .updatable a {
  float:left;
  width:80%;
}
