/*!
 * *  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: #EF5A2A;
  color: #FFFFFF;
}

.jewel.button.emphasized {
  background: linear-gradient(#f16c42, #ed4812);
  border: 1px solid #be390e;
  box-shadow: inset 0 1px 0 #f6a389;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: 0 -1px 0 rgba(119, 36, 9, 0.7);
}
.jewel.button.emphasized:hover, .jewel.button.emphasized:hover:focus {
  background: linear-gradient(#EF5A2A, #d64010);
  border: 1px solid #a6320d;
  color: #FFFFFF;
}
.jewel.button.emphasized:active, .jewel.button.emphasized:active:focus {
  background: linear-gradient(#d64010, #a6320d);
  border: 1px solid #772409;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}
.jewel.button.emphasized:focus {
  border: 1px solid #be390e;
  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(239, 90, 42, 0.05);
  border: 1px solid #d64010;
  box-shadow: none;
  color: #be390e;
  text-shadow: none;
}
.jewel.button.emphasized.outlined:hover, .jewel.button.emphasized.outlined:hover:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid #be390e;
  color: #8f2b0b;
}
.jewel.button.emphasized.outlined:active, .jewel.button.emphasized.outlined:active:focus {
  background: rgba(239, 90, 42, 0.25);
  border: 1px solid #b0350d;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.button.emphasized.outlined:focus {
  border: 1px solid #a6320d;
  box-shadow: none;
  color: #8f2b0b;
}
.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(239, 90, 42, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #be390e;
  text-shadow: none;
}
.jewel.button.emphasized.unboxed:hover, .jewel.button.emphasized.unboxed:hover:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid transparent;
  color: #8f2b0b;
}
.jewel.button.emphasized.unboxed:active, .jewel.button.emphasized.unboxed:active:focus {
  background: rgba(239, 90, 42, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.button.emphasized.unboxed:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #8f2b0b;
}
.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='%23EF5A2A' 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='%23EF5A2A' 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='%23EF5A2A' /%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(#fac8b8, #f6a389);
  border: 1px solid #be390e;
}
.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='%23EF5A2A' 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(#ef5a2a, #f37f59);
  box-shadow: 0px 0px 0px 1px #ed4812;
}
.jewel.switch.emphasized input:focus + .switch {
  box-shadow: 0px 0px 0px 1px #d64010;
}
.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: #f38663;
}
.jewel.datagrid .jewel.list.column .jewel.item.datagrid.emphasized.selected, .jewel.datagrid .jewel.list.column .jewel.item.datagrid.emphasized.selectable:active {
  background: #f1744b;
}

.jewel.item.emphasized.hovered {
  background: #EF5A2A;
}
.jewel.item.emphasized.selected, .jewel.item.emphasized.selectable:active {
  background: #ed4812;
}

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

.jewel.snackbar.emphasized .jewel.snackbar-content {
  background: linear-gradient(#f16c42, #ed4812);
  border: 1px solid #be390e;
  box-shadow: inset 0 1px 0 #f6a389;
  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(#EF5A2A, #d64010);
}

.emphasized-lightest {
  color: #fdede8;
}

.emphasized-light {
  color: #f6a389;
}

.emphasized-normal {
  color: #EF5A2A;
}

.emphasized-dark {
  color: #a6320d;
}

.emphasized-darkest {
  color: #481605;
}

.jewel.togglebutton.emphasized {
  background: linear-gradient(#f16c42, #ed4812);
  border: 1px solid #be390e;
  box-shadow: inset 0 1px 0 #f6a389;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: 0 -1px 0 rgba(119, 36, 9, 0.7);
}
.jewel.togglebutton.emphasized:hover, .jewel.togglebutton.emphasized:hover:focus {
  background: linear-gradient(#EF5A2A, #d64010);
  border: 1px solid #a6320d;
  color: #FFFFFF;
}
.jewel.togglebutton.emphasized:active, .jewel.togglebutton.emphasized:active:focus {
  background: linear-gradient(#d64010, #a6320d);
  border: 1px solid #772409;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}
.jewel.togglebutton.emphasized:focus {
  border: 1px solid #be390e;
  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(#d64010, #a6320d);
  border: 1px solid #772409;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}

.jewel.togglebutton.emphasized.outlined {
  background: rgba(239, 90, 42, 0.05);
  border: 1px solid #d64010;
  box-shadow: none;
  color: #be390e;
  text-shadow: none;
}
.jewel.togglebutton.emphasized.outlined:hover, .jewel.togglebutton.emphasized.outlined:hover:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid #be390e;
  color: #8f2b0b;
}
.jewel.togglebutton.emphasized.outlined:active, .jewel.togglebutton.emphasized.outlined:active:focus {
  background: rgba(239, 90, 42, 0.25);
  border: 1px solid #b0350d;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.togglebutton.emphasized.outlined:focus {
  border: 1px solid #a6320d;
  box-shadow: none;
  color: #8f2b0b;
}
.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(239, 90, 42, 0.25);
  border: 1px solid #b0350d;
  box-shadow: none;
  color: #8f2b0b;
}

.jewel.togglebutton.emphasized.unboxed {
  background: rgba(239, 90, 42, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #be390e;
  text-shadow: none;
}
.jewel.togglebutton.emphasized.unboxed:hover, .jewel.togglebutton.emphasized.unboxed:hover:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid transparent;
  color: #8f2b0b;
}
.jewel.togglebutton.emphasized.unboxed:active, .jewel.togglebutton.emphasized.unboxed:active:focus {
  background: rgba(239, 90, 42, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.togglebutton.emphasized.unboxed:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #8f2b0b;
}
.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(239, 90, 42, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #8f2b0b;
}

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