<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<css xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

<!--
    @import url("chrome://global/skin/");
-->

window {  
 
}

#lenya-xul-menubar vbox {
 background-color: inherit;
}

#lenya-info { 
 float: right; 
 margin: 9px 10px 0px 0px;
 font-size: 11px; 
 font-family: Arial, "Lucida Grande", Verdana, Helvetica, sans-serif; 
 line-height: 1; 
}

tabbox {
 padding-top: 3px;
 background-color: #ababab;
 color: #ffffff;
}

tab { 
 vertical-align: middle;
 font: bold 10px/1.0 Arial, Verdana, sans-serif; text-transform: uppercase; 
}

tabs {
 
 margin-left: 3px;
}

description {
 
}


</css>
