/*

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-browser .loader
{
  background-position: 0 50%;
  padding-left: 21px;   
}

#content #schema-browser.loaded
{
  background-image: url( ../../img/div.gif );
  background-position: 21% 0;
  background-repeat: repeat-y;
}

#content #schema-browser #data
{
  float: right;
  width: 78%;
}

#content #schema-browser #related
{
  float: left;
  width: 20%;
}

#content #schema-browser #related select
{
  width: 100%;
}

#content #schema-browser #related select optgroup
{
  font-style: normal;
  padding: 5px;
}

#content #schema-browser #related select option
{
  padding-left: 10px;
}

#content #schema-browser #related #f-df-t
{
  border-bottom: 1px solid #f0f0f0;
  padding-bottom: 15px;
}

#content #schema-browser #related .ukf-dsf dt
{
}

#content #schema-browser #related dl
{
  margin-top: 15px;
}

#content #schema-browser #related dl dt,
#content #schema-browser #related dl dd a
{
  color: #c0c0c0;
}

#content #schema-browser #related dl dt
{
  font-weight: bold;
  margin-top: 5px;
}

#content #schema-browser #related dl dd a
{
  display: block;
  padding-left: 10px;
}

#content #schema-browser #related dl dd a:hover
{
  background-color: #f8f8f8;
}

#content #schema-browser #related .field .field,
#content #schema-browser #related .field .field a,
#content #schema-browser #related .dynamic-field .dynamic-field,
#content #schema-browser #related .dynamic-field .dynamic-field a,
#content #schema-browser #related .type .type,
#content #schema-browser #related .type .type a,
#content #schema-browser #related .active,
#content #schema-browser #related .active a
{
  color: #333;
}

#content #schema-browser #related .copyfield,
#content #schema-browser #related .copyfield a
{
  color: #666;
}

#content #schema-browser #data
{
}

#content #schema-browser #data #index dt
{
  float: left;
  margin-right: 5px;
  width: 150px;
}

#content #schema-browser #data #field .field-options
{
  margin-bottom: 10px;
}

#content #schema-browser #data #field .field-options .head h2
{
  padding-left: 5px;
}

#content #schema-browser #data #field .partial
{
}

#content #schema-browser #data #field .partial p
{
  background-image: url( ../../img/ico/exclamation-button.png );
  background-position: 0 50%;
  padding-left: 21px;
}

#content #schema-browser #data #field .field-options .options dt,
#content #schema-browser #data #field .field-options .options dd
{
  float: left;
}

#content #schema-browser #data #field .field-options .options dt
{
  clear: left;
  margin-right: 5px;
  width: 100px;
}

#content #schema-browser #data #field .field-options .flags
{
  margin-top: 10px;
  margin-bottom: 20px;
}

#content #schema-browser #data #field .field-options .flags thead td
{
  color: #c0c0c0;
  padding-right: 5px;
  width: 100px;
}

#content #schema-browser #data #field .field-options .flags tbody td,
#content #schema-browser #data #field .field-options .flags th
{
  padding: 2px 5px;
}

#content #schema-browser #data #field .field-options .flags thead td,
#content #schema-browser #data #field .field-options .flags tbody th
{
  padding-left: 0;
}

#content #schema-browser #data #field .field-options .flags thead th,
#content #schema-browser #data #field .field-options .flags tbody td
{
  border-left: 1px solid #f0f0f0;
}

#content #schema-browser #data #field .field-options .flags tbody th,
#content #schema-browser #data #field .field-options .flags tbody td
{
  border-top: 1px solid #f0f0f0;
}

#content #schema-browser #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-browser #data #field .field-options .flags tbody .check span
{
}

#content #schema-browser #data #field .field-options .flags tbody .text
{
  color: #c0c0c0;
}

#content #schema-browser #data #field .field-options .analyzer,
#content #schema-browser #data #field .field-options .analyzer li,
#content #schema-browser #data #field .field-options .analyzer ul,
#content #schema-browser #data #field .field-options .analyzer ul li
{
}

#content #schema-browser #data #field .field-options .analyzer p,
#content #schema-browser #data #field .field-options .analyzer dl
{
  float: left;
}

#content #schema-browser #data #field .field-options .analyzer p
{
  margin-right: 5px;
  text-align: right;
  width: 125px;
  white-space: pre;
}

#content #schema-browser #data #field .field-options .analyzer p a
{
  cursor: auto;
}

#content #schema-browser #data #field .field-options .analyzer p a.analysis
{
  cursor: pointer;
  display: block;
}

#content #schema-browser #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-browser #data #field .field-options .analyzer p a.analysis:hover span
{
  background-image: url( ../../img/ico/question.png );
  color: #008;
}

#content #schema-browser #data #field .field-options .analyzer a
{
  cursor: auto;
}

#content #schema-browser #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-browser #data #field .field-options .analyzer .open .toggle
{
  background-image: url( ../../img/ico/chevron-small.png );
}

#content #schema-browser #data #field .field-options .analyzer li
{
  border-top: 1px solid #f0f0f0;
  margin-top: 10px;
  padding-top: 10px;
}

#content #schema-browser #data #field .field-options .analyzer ul
{
  clear: left;
  margin-left: 55px;
  padding-top: 5px;
}

#content #schema-browser #data #field .field-options .analyzer .open ul
{
  display: block;
}

#content #schema-browser #data #field .field-options .analyzer ul li
{
  border-top: 1px solid #f8f8f8;
  margin-top: 5px;
  padding-top: 5px;
}

#content #schema-browser #data #field .field-options .analyzer ul p
{
  color: #999;
  margin-right: 5px;
  text-align: right;
  width: 70px;
}

#content #schema-browser #data #field .field-options .analyzer ul dd
{
  margin-left: 20px;
}

#content #schema-browser #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-browser #data #field .field-options .analyzer ul dd.ico-0
{
  background-image: url( ../../img/ico/slash.png );
}

#content #schema-browser #data #field .field-options .analyzer ul dd.ico-1
{
  background-image: url( ../../img/ico/tick.png );
}

#content #schema-browser #data #field .head
{
  margin-bottom: 5px;
}

#content #schema-browser #data #field .terminfo-holder
{
  border-top: 1px solid #c0c0c0;
  padding-top: 10px;
}

#content #schema-browser #data #field .terminfo-holder .trigger
{
  float: left;
  width: 140px;
}

#content #schema-browser #data #field .terminfo-holder .trigger button span
{
  background-image: url( ../../img/ico/information.png );
}

#content #schema-browser #data #field .terminfo-holder .status
{
  border-left: 1px solid #f0f0f0;
  float: left;
  padding-left: 20px;
  padding-right: 20px;
}

#content #schema-browser #data #field .terminfo-holder.disabled .trigger button span
{
  background-image: url( ../../img/ico/prohibition.png );
}

#content #schema-browser #data #field .terminfo-holder.disabled .status
{
  display: block;
}

#content #schema-browser #data #field .terminfo-holder .trigger .autoload
{
}

#content #schema-browser #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-browser #data #field .terminfo-holder .trigger .autoload:hover
{
  color: #008;
}

#content #schema-browser #data #field .terminfo-holder .trigger .autoload.on
{
  background-image: url( ../../img/ico/ui-check-box.png );
  color: #333;
}

#content #schema-browser #data #field .topterms-holder,
#content #schema-browser #data #field .histogram-holder
{
  border-left: 1px solid #f0f0f0;
  float: left;
  padding-left: 20px;
  padding-right: 20px;
}

#content #schema-browser #data #field .topterms-holder .head input
{
  height: 18px;
  line-height: 16px;
  text-align: right;
  width: 30px;
}

#content #schema-browser #data #field .topterms-holder .head .max-holder
{
  color: #c0c0c0;
}

#content #schema-browser #data #field .topterms-holder .head .max-holder:hover .max
{
  color: #008;
}

#content #schema-browser #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-browser #data #field .topterms-holder .head #query_link:hover
{
  background-image: url( ../../img/ico/question.png );
}


#content #schema-browser #data #field .topterms-holder .head #query_link span
{
  visibility: hidden;
}

#content #schema-browser #data #field .topterms-holder .head #query_link:hover span
{
  visibility: visible;
}

#content #schema-browser .topterms-holder li
{
  border-top: 1px solid  #999;
  margin-bottom: 5px;
}

/* possible overwrite with inline style */
#content #schema-browser .topterms-holder li p
{
  background-color:  #999;
  color: #fff;
  float: left;
}

#content #schema-browser .topterms-holder li p span
{
  display: block;
  padding-right: 2px;
  text-align: right;
}

/* possible overwrite with inline style */
#content #schema-browser .topterms-holder li ul
{
  margin-left: 30px;
}

#content #schema-browser .topterms-holder li li
{
  border-top: 0;
  margin-bottom: 0;
  white-space: nowrap;
}

#content #schema-browser .topterms-holder li li.odd
{
  background-color: #f0f0f0;
}

#content #schema-browser .topterms-holder li li a
{
  display: block;
  padding-left: 2px;
  padding-right: 2px;
}

#content #schema-browser .topterms-holder li li a:hover
{
  background-color: #c0c0c0;
}

#content #schema-browser #data #field .histogram-holder ul
{
  margin-left: 25px;
}

#content #schema-browser #data #field .histogram-holder li
{
  margin-bottom: 2px;
  position: relative;
  width: 150px;
}

#content #schema-browser #data #field .histogram-holder li.odd
{
  background-color: #f0f0f0;
}

#content #schema-browser #data #field .histogram-holder li dl,
#content #schema-browser #data #field .histogram-holder li dt
{
  padding-top: 1px;
  padding-bottom: 1px;
}

#content #schema-browser #data #field .histogram-holder li dl
{
  background-color: #c0c0c0;
  min-width: 1px;
}

#content #schema-browser #data #field .histogram-holder li dt
{
  color: #a0a0a0;
  position: absolute;
  overflow: hidden;
  left: -25px;
  top: 0px;
}

#content #schema-browser #data #field .histogram-holder li dt span
{
  display: block;
  padding-right: 4px;
  text-align: right;
}

#content #schema-browser #data #field .histogram-holder li dd
{
  clear: left;
  float: left;
  margin-left: 2px;
  white-space: nowrap;
}

#content #schema-browser #data #field .histogram-holder li:hover dl
{
  background-color: #b0b0b0;
}

#content #schema-browser #data #field .histogram-holder li:hover dt
{
  color: #333;
}
