/*!
 *  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.
 */
@namespace j "library://ns.apache.org/royale/jewel";
@namespace "http://www.w3.org/1999/xhtml";
.royale *, .royale *:before, .royale *:after {
  box-sizing: border-box;
}

j|Application {
  background: white;
  font-family: "Lato", sans-serif;
  color: #808080;
}

h1 {
  font-size: 2em;
}

h2 {
  font-size: 1.5em;
}

h3 {
  font-size: 1.17em;
}

h4 {
  font-size: 15px;
}

span {
  font-size: 14px;
}

div {
  font-size: 14px;
}

.container {
  background: #ebebeb;
  border-radius: 10px;
  padding: 20px;
}

::-moz-focus-inner, ::-moz-focus-outer {
  border: 0;
}

.jewel.button.secondary {
  cursor: pointer;
  display: inline-block;
  margin: 0;
  padding: 8px;
  min-width: 34px;
  min-height: 34px;
  background: linear-gradient(#f9bb58, #f7a726);
  border: 1px solid #e28f08;
  box-shadow: inset 0 1px 0 #fcd9a1;
  border-radius: 3px;
}
.jewel.button.secondary:hover, .jewel.button.secondary:hover:focus {
  background: linear-gradient(#F8B13F, #f69d0e);
  border: 1px solid #ca7f07;
}
.jewel.button.secondary:active, .jewel.button.secondary:active:focus {
  background: linear-gradient(#f69d0e, #ca7f07);
  border: 1px solid #986006;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
}
.jewel.button.secondary:focus {
  outline: none;
  border: 1px solid #e28f08;
  box-shadow: inset 0px 0px 0px 1px rgba(255, 255, 255, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.6);
}
.jewel.button.secondary[disabled] {
  cursor: unset;
  background: #f3f3f3;
  border: 1px solid #d9d9d9;
  box-shadow: none;
}

.jewel.textbutton.secondary {
  cursor: pointer;
  display: inline-block;
  margin: 0;
  padding: 10px 16px;
  min-width: 74px;
  min-height: 34px;
  background: linear-gradient(#f9bb58, #f7a726);
  border: 1px solid #e28f08;
  box-shadow: inset 0 1px 0 #fcd9a1;
  border-radius: 3px;
  font-family: "Lato", sans-serif;
  font-size: 14px;
  font-weight: bold;
  color: #FFFFFF;
  text-transform: uppercase;
  text-decoration: none;
  text-shadow: 0 -1px 0 rgba(152, 96, 6, 0.7);
}
.jewel.textbutton.secondary:hover, .jewel.textbutton.secondary:hover:focus {
  background: linear-gradient(#F8B13F, #f69d0e);
  border: 1px solid #ca7f07;
}
.jewel.textbutton.secondary:active, .jewel.textbutton.secondary:active:focus {
  background: linear-gradient(#f69d0e, #ca7f07);
  border: 1px solid #986006;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
}
.jewel.textbutton.secondary:focus {
  outline: none;
  border: 1px solid #e28f08;
  box-shadow: inset 0px 0px 0px 1px rgba(255, 255, 255, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.6);
}
.jewel.textbutton.secondary[disabled] {
  cursor: unset;
  background: #f3f3f3;
  border: 1px solid #d9d9d9;
  box-shadow: none;
  color: silver;
  font-weight: normal;
  text-shadow: unset;
}

/*# sourceMappingURL=defaults.css.map */
