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

.jewel.button.secondary {
  background: #EF5A2A;
  border: 1px solid #df4311;
  box-shadow: none;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: none;
}
.jewel.button.secondary:hover, .jewel.button.secondary:hover:focus {
  background: #ed4812;
  border: 1px solid #df4311;
  color: #FFFFFF;
}
.jewel.button.secondary:active, .jewel.button.secondary:active:focus {
  background: #be390e;
  border: 1px solid #df4311;
  box-shadow: none;
  color: #FFFFFF;
}
.jewel.button.secondary:focus {
  background: #f16c42;
  border: 1px solid #df4311;
  box-shadow: none;
  color: #FFFFFF;
}
.jewel.button.secondary[disabled] {
  background: #f3f3f3 !important;
  border: 1px solid #d9d9d9 !important;
  box-shadow: none !important;
  color: silver;
  text-shadow: unset;
}
.jewel.button.secondary[disabled]:hover, .jewel.button.secondary[disabled]:hover:focus {
  color: silver;
}

.jewel.button.secondary.outlined {
  background: rgba(239, 90, 42, 0.05);
  border: 1px solid #d64010;
  box-shadow: none;
  color: #be390e;
  text-shadow: none;
}
.jewel.button.secondary.outlined:hover, .jewel.button.secondary.outlined:hover:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid #be390e;
  color: #8f2b0b;
}
.jewel.button.secondary.outlined:active, .jewel.button.secondary.outlined:active:focus {
  background: rgba(239, 90, 42, 0.25);
  border: 1px solid #b0350d;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.button.secondary.outlined:focus {
  border: 1px solid #a6320d;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.button.secondary.outlined[disabled] {
  background: rgba(243, 243, 243, 0.1) !important;
  border: 1px solid #d9d9d9 !important;
  color: silver;
  text-shadow: unset;
}
.jewel.button.secondary.outlined[disabled]:hover, .jewel.button.secondary.outlined[disabled]:hover:focus {
  color: silver;
}

.jewel.button.secondary.unboxed {
  background: rgba(239, 90, 42, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #be390e;
  text-shadow: none;
}
.jewel.button.secondary.unboxed:hover, .jewel.button.secondary.unboxed:hover:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid transparent;
  color: #8f2b0b;
}
.jewel.button.secondary.unboxed:active, .jewel.button.secondary.unboxed:active:focus {
  background: rgba(239, 90, 42, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.button.secondary.unboxed:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.button.secondary.unboxed[disabled] {
  background: rgba(243, 243, 243, 0) !important;
  border: 1px solid transparent !important;
  color: silver;
  text-shadow: unset;
}
.jewel.button.secondary.unboxed[disabled]:hover, .jewel.button.secondary.unboxed[disabled]:hover:focus {
  color: silver;
}

.jewel.checkbox.secondary input + span::before {
  background: white;
  border: 1px solid #d9d9d9;
}
.jewel.checkbox.secondary 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.secondary input:checked + span::after, .jewel.checkbox.secondary 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.secondary input:indeterminate + span::after, .jewel.checkbox.secondary 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.secondary input:focus + span::before, .jewel.checkbox.secondary input:checked:focus + span::before, .jewel.checkbox.secondary input:checked:active:focus + span::before, .jewel.checkbox.secondary input:indeterminate:focus + span::before, .jewel.checkbox.secondary input:indeterminate:active:focus + span::before {
  background: #f8b6a1;
  border: 1px solid #EF5A2A;
}
.jewel.checkbox.secondary input[disabled] + span {
  color: silver;
}
.jewel.checkbox.secondary input[disabled] + span::before {
  background: #f3f3f3;
  border: 1px solid #d9d9d9;
}
.jewel.checkbox.secondary 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.secondary 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.secondary.rejected input:indeterminate + span::after, .jewel.checkbox.secondary.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.secondary.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.secondary input:checked + .switch {
  background: #EF5A2A;
  box-shadow: 0px 0px 0px 1px #ed4812;
}
.jewel.switch.secondary input:focus + .switch {
  box-shadow: 0px 0px 0px 1px #d64010;
}
.jewel.switch.secondary input:checked + .switch::before {
  background: white;
}
.jewel.switch.secondary input[disabled]:checked + .switch {
  background: #d9d9d9;
  box-shadow: 0px 0px 0px 1px #cccccc;
}
.jewel.switch.secondary input[disabled] + .switch {
  background: #f3f3f3;
  box-shadow: 0px 0px 0px 1px #e6e6e6;
}
.jewel.switch.secondary input[disabled] + .switch::before {
  background: white;
}
.jewel.switch.secondary .switch {
  background: linear-gradient(#d9d9d9, #d9d9d9);
  box-shadow: 0px 0px 0px 1px #cccccc;
}
.jewel.switch.secondary .switch::before {
  background: white;
}

.jewel.datagrid .jewel.list.column .jewel.item.datagrid.secondary.hovered {
  background: #f38663;
}
.jewel.datagrid .jewel.list.column .jewel.item.datagrid.secondary.selected, .jewel.datagrid .jewel.list.column .jewel.item.datagrid.secondary.selectable:active {
  background: #f1744b;
}

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

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

.jewel.snackbar.secondary .jewel.snackbar-content {
  background: #EF5A2A;
  border: 0px solid;
  box-shadow: none;
}
.jewel.snackbar.secondary .jewel.snackbar-message {
  color: #FFFFFF;
}
.jewel.snackbar.secondary .jewel.snackbar-action {
  color: #E2D70B;
}
.jewel.snackbar.secondary .jewel.snackbar-action:hover {
  background: #ed4812;
  border: none;
}

a:visited {
  color: #d64010;
}

a:hover {
  color: #EF5A2A;
}

a:active {
  color: #f37f59;
}

.secondary-lightest {
  color: #fdede8;
}

.secondary-light {
  color: #f6a389;
}

.secondary-normal {
  color: #EF5A2A;
}

.secondary-dark {
  color: #a6320d;
}

.secondary-darkest {
  color: #481605;
}

.jewel.togglebutton.secondary {
  background: #EF5A2A;
  border: 1px solid #df4311;
  box-shadow: none;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: none;
}
.jewel.togglebutton.secondary:hover, .jewel.togglebutton.secondary:hover:focus {
  background: #ed4812;
  border: 1px solid #df4311;
  color: #FFFFFF;
}
.jewel.togglebutton.secondary:active, .jewel.togglebutton.secondary:active:focus {
  background: #be390e;
  border: 1px solid #df4311;
  box-shadow: none;
  color: #FFFFFF;
}
.jewel.togglebutton.secondary:focus {
  background: #f16c42;
  border: 1px solid #df4311;
  box-shadow: none;
  color: #FFFFFF;
}
.jewel.togglebutton.secondary[disabled] {
  background: #f3f3f3 !important;
  border: 1px solid #d9d9d9 !important;
  box-shadow: none !important;
  color: silver;
  text-shadow: unset;
}
.jewel.togglebutton.secondary.selected {
  background: #be390e;
  border: 1px solid #df4311;
  box-shadow: none;
  color: #FFFFFF;
}

.jewel.togglebutton.secondary.outlined {
  background: rgba(239, 90, 42, 0.05);
  border: 1px solid #d64010;
  box-shadow: none;
  color: #be390e;
  text-shadow: none;
}
.jewel.togglebutton.secondary.outlined:hover, .jewel.togglebutton.secondary.outlined:hover:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid #be390e;
  color: #8f2b0b;
}
.jewel.togglebutton.secondary.outlined:active, .jewel.togglebutton.secondary.outlined:active:focus {
  background: rgba(239, 90, 42, 0.25);
  border: 1px solid #b0350d;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.togglebutton.secondary.outlined:focus {
  border: 1px solid #a6320d;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.togglebutton.secondary.outlined[disabled] {
  background: rgba(243, 243, 243, 0.1) !important;
  border: 1px solid #d9d9d9 !important;
  color: silver;
  text-shadow: unset;
}
.jewel.togglebutton.secondary.outlined.selected {
  background: rgba(239, 90, 42, 0.25);
  border: 1px solid #b0350d;
  box-shadow: none;
  color: #8f2b0b;
}

.jewel.togglebutton.secondary.unboxed {
  background: rgba(239, 90, 42, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #be390e;
  text-shadow: none;
}
.jewel.togglebutton.secondary.unboxed:hover, .jewel.togglebutton.secondary.unboxed:hover:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid transparent;
  color: #8f2b0b;
}
.jewel.togglebutton.secondary.unboxed:active, .jewel.togglebutton.secondary.unboxed:active:focus {
  background: rgba(239, 90, 42, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.togglebutton.secondary.unboxed:focus {
  background: rgba(239, 90, 42, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #8f2b0b;
}
.jewel.togglebutton.secondary.unboxed[disabled] {
  background: rgba(243, 243, 243, 0) !important;
  border: 1px solid transparent !important;
  color: silver;
  text-shadow: unset;
}
.jewel.togglebutton.secondary.unboxed[disabled]:hover, .jewel.togglebutton.secondary.unboxed[disabled]:hover:focus {
  color: silver;
}

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