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

.jewel.button.emphasized {
  background: #EC1C24;
  border: 1px solid #ce1118;
  box-shadow: none;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: none;
}
.jewel.button.emphasized:hover, .jewel.button.emphasized:hover:focus {
  background: #dc121a;
  border: 1px solid #ce1118;
  color: #FFFFFF;
}
.jewel.button.emphasized:active, .jewel.button.emphasized:active:focus {
  background: #ad0e15;
  border: 1px solid #ce1118;
  box-shadow: none;
  color: #FFFFFF;
}
.jewel.button.emphasized:focus {
  background: #ee343b;
  border: 1px solid #ce1118;
  box-shadow: none;
  color: #FFFFFF;
}
.jewel.button.emphasized[disabled] {
  background: #f3f3f3 !important;
  border: 1px solid #d9d9d9 !important;
  box-shadow: none !important;
  color: silver;
  text-shadow: unset;
}
.jewel.button.emphasized[disabled]:hover, .jewel.button.emphasized[disabled]:hover:focus {
  color: silver;
}

.jewel.button.emphasized.outlined {
  background: rgba(236, 28, 36, 0.05);
  border: 1px solid #c51017;
  box-shadow: none;
  color: #ad0e15;
  text-shadow: none;
}
.jewel.button.emphasized.outlined:hover, .jewel.button.emphasized.outlined:hover:focus {
  background: rgba(236, 28, 36, 0.15);
  border: 1px solid #ad0e15;
  color: #7e0b0f;
}
.jewel.button.emphasized.outlined:active, .jewel.button.emphasized.outlined:active:focus {
  background: rgba(236, 28, 36, 0.25);
  border: 1px solid #9f0d13;
  box-shadow: none;
  color: #7e0b0f;
}
.jewel.button.emphasized.outlined:focus {
  border: 1px solid #950d12;
  box-shadow: none;
  color: #7e0b0f;
}
.jewel.button.emphasized.outlined[disabled] {
  background: rgba(243, 243, 243, 0.1) !important;
  border: 1px solid #d9d9d9 !important;
  color: silver;
  text-shadow: unset;
}
.jewel.button.emphasized.outlined[disabled]:hover, .jewel.button.emphasized.outlined[disabled]:hover:focus {
  color: silver;
}

.jewel.button.emphasized.unboxed {
  background: rgba(236, 28, 36, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #ad0e15;
  text-shadow: none;
}
.jewel.button.emphasized.unboxed:hover, .jewel.button.emphasized.unboxed:hover:focus {
  background: rgba(236, 28, 36, 0.15);
  border: 1px solid transparent;
  color: #7e0b0f;
}
.jewel.button.emphasized.unboxed:active, .jewel.button.emphasized.unboxed:active:focus {
  background: rgba(236, 28, 36, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #7e0b0f;
}
.jewel.button.emphasized.unboxed:focus {
  background: rgba(236, 28, 36, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #7e0b0f;
}
.jewel.button.emphasized.unboxed[disabled] {
  background: rgba(243, 243, 243, 0) !important;
  border: 1px solid transparent !important;
  color: silver;
  text-shadow: unset;
}
.jewel.button.emphasized.unboxed[disabled]:hover, .jewel.button.emphasized.unboxed[disabled]:hover:focus {
  color: silver;
}

.jewel.checkbox.emphasized input + span::before {
  background: white;
  border: 1px solid #d9d9d9;
}
.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='%23EC1C24' 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='%23EC1C24' 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='%23EC1C24' /%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: #f69296;
  border: 1px solid #EC1C24;
}
.jewel.checkbox.emphasized input[disabled] + span {
  color: silver;
}
.jewel.checkbox.emphasized input[disabled] + span::before {
  background: #f3f3f3;
  border: 1px solid #d9d9d9;
}
.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='%23cccccc' 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='%23cccccc' /%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='%23EC1C24' 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='%23cccccc' 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: #EC1C24;
  box-shadow: 0px 0px 0px 1px #dc121a;
}
.jewel.switch.emphasized input:focus + .switch {
  box-shadow: 0px 0px 0px 1px #c51017;
}
.jewel.switch.emphasized input:checked + .switch::before {
  background: #fef0f0;
}
.jewel.switch.emphasized input[disabled]:checked + .switch {
  background: #d9d9d9;
  box-shadow: 0px 0px 0px 1px #cccccc;
}
.jewel.switch.emphasized input[disabled] + .switch {
  background: #f3f3f3;
  box-shadow: 0px 0px 0px 1px #e6e6e6;
}
.jewel.switch.emphasized input[disabled] + .switch::before {
  background: white;
}
.jewel.switch.emphasized .switch {
  background: linear-gradient(#d9d9d9, #d9d9d9);
  box-shadow: 0px 0px 0px 1px #cccccc;
}
.jewel.switch.emphasized .switch::before {
  background: white;
  box-shadow: none;
}

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

.jewel.item.emphasized.hovered {
  background: #EC1C24;
}
.jewel.item.emphasized.selected, .jewel.item.emphasized.selectable:active {
  background: #dc121a;
}

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

.jewel.snackbar.emphasized .jewel.snackbar-content {
  background: #EC1C24;
  border: 0px solid;
  box-shadow: 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: #dc121a;
  border: none;
}

.emphasized-lightest {
  color: #fcd8da;
}

.emphasized-light {
  color: #f47a7f;
}

.emphasized-normal {
  color: #EC1C24;
}

.emphasized-dark {
  color: #950d12;
}

.emphasized-darkest {
  color: #370507;
}

.jewel.togglebutton.emphasized {
  background: #EC1C24;
  border: 1px solid #ce1118;
  box-shadow: none;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: none;
}
.jewel.togglebutton.emphasized:hover, .jewel.togglebutton.emphasized:hover:focus {
  background: #dc121a;
  border: 1px solid #ce1118;
  color: #FFFFFF;
}
.jewel.togglebutton.emphasized:active, .jewel.togglebutton.emphasized:active:focus {
  background: #ad0e15;
  border: 1px solid #ce1118;
  box-shadow: none;
  color: #FFFFFF;
}
.jewel.togglebutton.emphasized:focus {
  background: #ee343b;
  border: 1px solid #ce1118;
  box-shadow: none;
  color: #FFFFFF;
}
.jewel.togglebutton.emphasized[disabled] {
  background: #f3f3f3 !important;
  border: 1px solid #d9d9d9 !important;
  box-shadow: none !important;
  color: silver;
  text-shadow: unset;
}
.jewel.togglebutton.emphasized.selected {
  background: #ad0e15;
  border: 1px solid #ce1118;
  box-shadow: none;
  color: #FFFFFF;
}

.jewel.togglebutton.emphasized.outlined {
  background: rgba(236, 28, 36, 0.05);
  border: 1px solid #c51017;
  box-shadow: none;
  color: #ad0e15;
  text-shadow: none;
}
.jewel.togglebutton.emphasized.outlined:hover, .jewel.togglebutton.emphasized.outlined:hover:focus {
  background: rgba(236, 28, 36, 0.15);
  border: 1px solid #ad0e15;
  color: #7e0b0f;
}
.jewel.togglebutton.emphasized.outlined:active, .jewel.togglebutton.emphasized.outlined:active:focus {
  background: rgba(236, 28, 36, 0.25);
  border: 1px solid #9f0d13;
  box-shadow: none;
  color: #7e0b0f;
}
.jewel.togglebutton.emphasized.outlined:focus {
  border: 1px solid #950d12;
  box-shadow: none;
  color: #7e0b0f;
}
.jewel.togglebutton.emphasized.outlined[disabled] {
  background: rgba(243, 243, 243, 0.1) !important;
  border: 1px solid #d9d9d9 !important;
  color: silver;
  text-shadow: unset;
}
.jewel.togglebutton.emphasized.outlined.selected {
  background: rgba(236, 28, 36, 0.25);
  border: 1px solid #9f0d13;
  box-shadow: none;
  color: #7e0b0f;
}

.jewel.togglebutton.emphasized.unboxed {
  background: rgba(236, 28, 36, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #ad0e15;
  text-shadow: none;
}
.jewel.togglebutton.emphasized.unboxed:hover, .jewel.togglebutton.emphasized.unboxed:hover:focus {
  background: rgba(236, 28, 36, 0.15);
  border: 1px solid transparent;
  color: #7e0b0f;
}
.jewel.togglebutton.emphasized.unboxed:active, .jewel.togglebutton.emphasized.unboxed:active:focus {
  background: rgba(236, 28, 36, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #7e0b0f;
}
.jewel.togglebutton.emphasized.unboxed:focus {
  background: rgba(236, 28, 36, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #7e0b0f;
}
.jewel.togglebutton.emphasized.unboxed[disabled] {
  background: rgba(243, 243, 243, 0) !important;
  border: 1px solid transparent !important;
  color: silver;
  text-shadow: unset;
}
.jewel.togglebutton.emphasized.unboxed.selected {
  background: rgba(236, 28, 36, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #7e0b0f;
}

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