/*

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 #files #tree-holder
{
  float: left;
  width: 20%;
}

#content #files #tree-holder li
{
  overflow: hidden;
}

#content #files form .buttons button
{
  float: right;
}

#content #files #file-content
{
  float: right;
  position: relative;
  width: 78%;
  min-height: 100px
}

#content #files .show #file-content
{
  display: block;
}

#content #files #file-content .response
{
  border: 1px solid transparent;
  padding: 2px;
}
