/*!
 * *  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";
.jewel.badge.emphasized {
  background: #F8B13F;
  color: #FFFFFF;
}

.jewel.button.emphasized {
  background: linear-gradient(#f9bb58, #f7a726);
  border: 1px solid #e28f08;
  box-shadow: inset 0 1px 0 #fcd9a1;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: 0 -1px 0 rgba(152, 96, 6, 0.7);
}
.jewel.button.emphasized:hover, .jewel.button.emphasized:hover:focus {
  background: linear-gradient(#F8B13F, #f69d0e);
  border: 1px solid #ca7f07;
  color: #FFFFFF;
}
.jewel.button.emphasized:active, .jewel.button.emphasized:active:focus {
  background: linear-gradient(#f69d0e, #ca7f07);
  border: 1px solid #986006;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}
.jewel.button.emphasized:focus {
  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);
  color: #FFFFFF;
}
.jewel.button.emphasized[disabled] {
  background: #404040 !important;
  border: 1px solid #0d0d0d !important;
  box-shadow: none !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.button.emphasized[disabled]:hover, .jewel.button.emphasized[disabled]:hover:focus {
  color: #737373;
}

.jewel.button.emphasized.outlined {
  background: rgba(248, 177, 63, 0.05);
  border: 1px solid #f69d0e;
  box-shadow: none;
  color: #e28f08;
  text-shadow: none;
}
.jewel.button.emphasized.outlined:hover, .jewel.button.emphasized.outlined:hover:focus {
  background: rgba(248, 177, 63, 0.15);
  border: 1px solid #e28f08;
  color: #b17006;
}
.jewel.button.emphasized.outlined:active, .jewel.button.emphasized.outlined:active:focus {
  background: rgba(248, 177, 63, 0.25);
  border: 1px solid #d38508;
  box-shadow: none;
  color: #b17006;
}
.jewel.button.emphasized.outlined:focus {
  border: 1px solid #ca7f07;
  box-shadow: none;
  color: #b17006;
}
.jewel.button.emphasized.outlined[disabled] {
  background: rgba(64, 64, 64, 0.1) !important;
  border: 1px solid #0d0d0d !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.button.emphasized.outlined[disabled]:hover, .jewel.button.emphasized.outlined[disabled]:hover:focus {
  color: #737373;
}

.jewel.button.emphasized.unboxed {
  background: rgba(248, 177, 63, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #e28f08;
  text-shadow: none;
}
.jewel.button.emphasized.unboxed:hover, .jewel.button.emphasized.unboxed:hover:focus {
  background: rgba(248, 177, 63, 0.15);
  border: 1px solid transparent;
  color: #b17006;
}
.jewel.button.emphasized.unboxed:active, .jewel.button.emphasized.unboxed:active:focus {
  background: rgba(248, 177, 63, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #b17006;
}
.jewel.button.emphasized.unboxed:focus {
  background: rgba(248, 177, 63, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #b17006;
}
.jewel.button.emphasized.unboxed[disabled] {
  background: rgba(64, 64, 64, 0) !important;
  border: 1px solid transparent !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.button.emphasized.unboxed[disabled]:hover, .jewel.button.emphasized.unboxed[disabled]:hover:focus {
  color: #737373;
}

.jewel.checkbox.emphasized input + span::before {
  background: linear-gradient(#7f7f7f, #737373);
  border: 1px solid #333333;
}
.jewel.checkbox.emphasized input + span::after {
  background: url("data:image/svg+xml,%3Csvg viewBox='0 0 22 22' version='1.1' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='0' width='22' height='22' fill-opacity='0'/%3E%3Cpolygon fill='%23F8B13F' points='3.50018311 12.4854126 8.48547363 17.4989624 18.4641113 7.47589111 15.5010376 4.51739502 8.48547363 11.5650024 6.52087402 9.47265625'/%3E%3C/svg%3E") no-repeat center center;
}
.jewel.checkbox.emphasized input:checked + span::after, .jewel.checkbox.emphasized input:checked:active + span::after {
  background: url("data:image/svg+xml,%3Csvg viewBox='0 0 22 22' version='1.1' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='0' width='22' height='22' fill-opacity='0'/%3E%3Cpolygon fill='%23F8B13F' points='3.50018311 12.4854126 8.48547363 17.4989624 18.4641113 7.47589111 15.5010376 4.51739502 8.48547363 11.5650024 6.52087402 9.47265625'/%3E%3C/svg%3E") no-repeat center center;
}
.jewel.checkbox.emphasized input:indeterminate + span::after, .jewel.checkbox.emphasized input:indeterminate:active + span::after {
  background: url("data:image/svg+xml,%3Csvg viewBox='0 0 22 22' version='1.1' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='0' width='22' height='22' fill-opacity='0'/%3E%3Crect stroke-width='0' stroke='%23FFFFFF' height='12' width='12' y='5' x='5' fill='%23F8B13F' /%3E%3C/svg%3E") no-repeat center center;
}
.jewel.checkbox.emphasized input:focus + span::before, .jewel.checkbox.emphasized input:checked:focus + span::before, .jewel.checkbox.emphasized input:checked:active:focus + span::before, .jewel.checkbox.emphasized input:indeterminate:focus + span::before, .jewel.checkbox.emphasized input:indeterminate:active:focus + span::before {
  background: linear-gradient(#fdedd3, #fcd9a1);
  border: 1px solid #e28f08;
}
.jewel.checkbox.emphasized input[disabled] + span {
  color: #737373;
}
.jewel.checkbox.emphasized input[disabled] + span::before {
  background: #404040;
  border: 1px solid #0d0d0d;
}
.jewel.checkbox.emphasized input:checked[disabled] + span::after {
  background: url("data:image/svg+xml,%3Csvg viewBox='0 0 22 22' version='1.1' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='0' width='22' height='22' fill-opacity='0'/%3E%3Cpolygon fill='%23191919' points='3.50018311 12.4854126 8.48547363 17.4989624 18.4641113 7.47589111 15.5010376 4.51739502 8.48547363 11.5650024 6.52087402 9.47265625'/%3E%3C/svg%3E") no-repeat center center;
}
.jewel.checkbox.emphasized input:indeterminate[disabled] + span::after {
  background: url("data:image/svg+xml,%3Csvg viewBox='0 0 22 22' version='1.1' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='0' width='22' height='22' fill-opacity='0'/%3E%3Crect stroke-width='0' stroke='%23FFFFFF' height='12' width='12' y='5' x='5' fill='%23191919' /%3E%3C/svg%3E") no-repeat center center;
}
.jewel.checkbox.emphasized.rejected input:indeterminate + span::after, .jewel.checkbox.emphasized.rejected input:indeterminate:active + span::after {
  background: url("data:image/svg+xml,%3Csvg viewBox='0 0 22 22' version='1.1' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='0' width='22' height='22' fill-opacity='0'/%3E%3Cline stroke-width='4' stroke='%23F8B13F' stroke-linecap='undefined' stroke-linejoin='undefined' y2='10.9375' x2='17' y1='11.0625' x1='5' fill='none' /%3E%3C/svg%3E") no-repeat center center;
}
.jewel.checkbox.emphasized.rejected input:indeterminate[disabled] + span::after {
  background: url("data:image/svg+xml,%3Csvg viewBox='0 0 22 22' version='1.1' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='0' width='22' height='22' fill-opacity='0'/%3E%3Cline stroke-width='4' stroke='%23191919' stroke-linecap='undefined' stroke-linejoin='undefined' y2='10.9375' x2='17' y1='11.0625' x1='5' fill='none' /%3E%3C/svg%3E") no-repeat center center;
}

.jewel.switch.emphasized input:checked + .switch {
  background: linear-gradient(#f8b13f, #fac570);
  box-shadow: 0px 0px 0px 1px #f7a726;
}
.jewel.switch.emphasized input:focus + .switch {
  box-shadow: 0px 0px 0px 1px #f69d0e;
}
.jewel.switch.emphasized input:checked + .switch::before {
  background: white;
}
.jewel.switch.emphasized input[disabled]:checked + .switch {
  background: #8c8c8c;
  box-shadow: 0px 0px 0px 1px #7f7f7f;
}
.jewel.switch.emphasized input[disabled] + .switch {
  background: #737373;
  box-shadow: 0px 0px 0px 1px #999999;
}
.jewel.switch.emphasized input[disabled] + .switch::before {
  background: #595959;
}
.jewel.switch.emphasized .switch {
  background: linear-gradient(#595959, #737373);
  box-shadow: 0px 0px 0px 1px #4c4c4c;
}
.jewel.switch.emphasized .switch::before {
  background: white;
  box-shadow: 1px 0px 1px 0px rgba(0, 0, 0, 0.1);
}

.jewel.datagrid .jewel.list.column .jewel.item.datagrid.emphasized.hovered {
  background: #fac97a;
}
.jewel.datagrid .jewel.list.column .jewel.item.datagrid.emphasized.selected, .jewel.datagrid .jewel.list.column .jewel.item.datagrid.emphasized.selectable:active {
  background: #f9bf61;
}

.jewel.item.emphasized.hovered {
  background: #F8B13F;
}
.jewel.item.emphasized.selected, .jewel.item.emphasized.selectable:active {
  background: #f7a726;
}

.jewel.loader.emphasized.segment {
  border-top-color: #F8B13F;
}

.jewel.snackbar.emphasized .jewel.snackbar-content {
  background: linear-gradient(#f9bb58, #f7a726);
  border: 1px solid #e28f08;
  box-shadow: inset 0 1px 0 #fcd9a1;
  border-bottom: none;
}
.jewel.snackbar.emphasized .jewel.snackbar-message {
  color: #FFFFFF;
}
.jewel.snackbar.emphasized .jewel.snackbar-action {
  color: #E2D70B;
}
.jewel.snackbar.emphasized .jewel.snackbar-action:hover {
  background: linear-gradient(#F8B13F, #f69d0e);
}

.emphasized-lightest {
  color: white;
}

.emphasized-light {
  color: #fcd9a1;
}

.emphasized-normal {
  color: #F8B13F;
}

.emphasized-dark {
  color: #ca7f07;
}

.emphasized-darkest {
  color: #674104;
}

.jewel.togglebutton.emphasized {
  background: linear-gradient(#f9bb58, #f7a726);
  border: 1px solid #e28f08;
  box-shadow: inset 0 1px 0 #fcd9a1;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: 0 -1px 0 rgba(152, 96, 6, 0.7);
}
.jewel.togglebutton.emphasized:hover, .jewel.togglebutton.emphasized:hover:focus {
  background: linear-gradient(#F8B13F, #f69d0e);
  border: 1px solid #ca7f07;
  color: #FFFFFF;
}
.jewel.togglebutton.emphasized:active, .jewel.togglebutton.emphasized:active:focus {
  background: linear-gradient(#f69d0e, #ca7f07);
  border: 1px solid #986006;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}
.jewel.togglebutton.emphasized:focus {
  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);
  color: #FFFFFF;
}
.jewel.togglebutton.emphasized[disabled] {
  background: #404040 !important;
  border: 1px solid #0d0d0d !important;
  box-shadow: none !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.togglebutton.emphasized.selected {
  background: linear-gradient(#f69d0e, #ca7f07);
  border: 1px solid #986006;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}

.jewel.togglebutton.emphasized.outlined {
  background: rgba(248, 177, 63, 0.05);
  border: 1px solid #f69d0e;
  box-shadow: none;
  color: #e28f08;
  text-shadow: none;
}
.jewel.togglebutton.emphasized.outlined:hover, .jewel.togglebutton.emphasized.outlined:hover:focus {
  background: rgba(248, 177, 63, 0.15);
  border: 1px solid #e28f08;
  color: #b17006;
}
.jewel.togglebutton.emphasized.outlined:active, .jewel.togglebutton.emphasized.outlined:active:focus {
  background: rgba(248, 177, 63, 0.25);
  border: 1px solid #d38508;
  box-shadow: none;
  color: #b17006;
}
.jewel.togglebutton.emphasized.outlined:focus {
  border: 1px solid #ca7f07;
  box-shadow: none;
  color: #b17006;
}
.jewel.togglebutton.emphasized.outlined[disabled] {
  background: rgba(64, 64, 64, 0.1) !important;
  border: 1px solid #0d0d0d !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.togglebutton.emphasized.outlined.selected {
  background: rgba(248, 177, 63, 0.25);
  border: 1px solid #d38508;
  box-shadow: none;
  color: #b17006;
}

.jewel.togglebutton.emphasized.unboxed {
  background: rgba(248, 177, 63, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #e28f08;
  text-shadow: none;
}
.jewel.togglebutton.emphasized.unboxed:hover, .jewel.togglebutton.emphasized.unboxed:hover:focus {
  background: rgba(248, 177, 63, 0.15);
  border: 1px solid transparent;
  color: #b17006;
}
.jewel.togglebutton.emphasized.unboxed:active, .jewel.togglebutton.emphasized.unboxed:active:focus {
  background: rgba(248, 177, 63, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #b17006;
}
.jewel.togglebutton.emphasized.unboxed:focus {
  background: rgba(248, 177, 63, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #b17006;
}
.jewel.togglebutton.emphasized.unboxed[disabled] {
  background: rgba(64, 64, 64, 0) !important;
  border: 1px solid transparent !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.togglebutton.emphasized.unboxed.selected {
  background: rgba(248, 177, 63, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #b17006;
}

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