/**
 * Copyright (C) 2009-2010 the original author or authors.
 * See the notice.md file distributed with this work for additional
 * information regarding copyright ownership.
 *
 * Licensed 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.
 */

#scalate-console {
  position:fixed;
  top:40px;
  right:10px;
  background: #FDFCAD;
  padding:10px;
  border: 1px solid #BDBD81;
  font-family:Arial,Verdana,Helvetica,sans-serif;
  font-size: 80%;
  max-width: 400px;
}

#scalate-console .archetypes ul, #scalate-console .templates ul, #scalate-console .resources ul, #scalate-console .layouts ul   {
  padding-left:20px;
  overflow: auto;
}

#scalate-console .toggle {
  text-align: right;
}

#scalate-console .toggle img {
  vertical-align: middle;
}

#scalate-console div.attributes {
  margin: 10px;
  overflow: auto;
  background: white;
}

#scalate-console div.attributes table th {
  text-align: left;
  color: #993333;
}
#scalate-console div.attributes table td {
  padding:2px;
  border-top: 1px solid #BDBD81;
}

#scalate-console div.body {
  margin: 10px;
  overflow: auto;
  max-height: 300px;
  background: white;
}

#scalate-console div.systemProperties {
  margin: 10px;
  overflow: auto;
  max-height: 300px;
  background: white;
}
