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

.jewel.button.secondary {
  background: linear-gradient(#45c354, #34a241);
  border: 1px solid #277b32;
  box-shadow: inset 0 1px 0 #7fd68a;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: 0 -1px 0 rgba(21, 65, 26, 0.7);
}
.jewel.button.secondary:hover, .jewel.button.secondary:hover:focus {
  background: linear-gradient(#3AB549, #2e8e39);
  border: 1px solid #21682a;
  color: #FFFFFF;
}
.jewel.button.secondary:active, .jewel.button.secondary:active:focus {
  background: linear-gradient(#2e8e39, #21682a);
  border: 1px solid #15411a;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}
.jewel.button.secondary:focus {
  border: 1px solid #277b32;
  box-shadow: inset 0px 0px 0px 1px rgba(243, 251, 244, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.6);
  color: #FFFFFF;
}
.jewel.button.secondary[disabled] {
  background: #404040 !important;
  border: 1px solid #0d0d0d !important;
  box-shadow: none !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.button.secondary[disabled]:hover, .jewel.button.secondary[disabled]:hover:focus {
  color: #737373;
}

.jewel.button.secondary.outlined {
  background: rgba(58, 181, 73, 0.05);
  border: 1px solid #2e8e39;
  box-shadow: none;
  color: #277b32;
  text-shadow: none;
}
.jewel.button.secondary.outlined:hover, .jewel.button.secondary.outlined:hover:focus {
  background: rgba(58, 181, 73, 0.15);
  border: 1px solid #277b32;
  color: #1b5422;
}
.jewel.button.secondary.outlined:active, .jewel.button.secondary.outlined:active:focus {
  background: rgba(58, 181, 73, 0.25);
  border: 1px solid #246f2d;
  box-shadow: none;
  color: #1b5422;
}
.jewel.button.secondary.outlined:focus {
  border: 1px solid #21682a;
  box-shadow: none;
  color: #1b5422;
}
.jewel.button.secondary.outlined[disabled] {
  background: rgba(64, 64, 64, 0.1) !important;
  border: 1px solid #0d0d0d !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.button.secondary.outlined[disabled]:hover, .jewel.button.secondary.outlined[disabled]:hover:focus {
  color: #737373;
}

.jewel.button.secondary.unboxed {
  background: rgba(58, 181, 73, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #277b32;
  text-shadow: none;
}
.jewel.button.secondary.unboxed:hover, .jewel.button.secondary.unboxed:hover:focus {
  background: rgba(58, 181, 73, 0.15);
  border: 1px solid transparent;
  color: #1b5422;
}
.jewel.button.secondary.unboxed:active, .jewel.button.secondary.unboxed:active:focus {
  background: rgba(58, 181, 73, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #1b5422;
}
.jewel.button.secondary.unboxed:focus {
  background: rgba(58, 181, 73, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #1b5422;
}
.jewel.button.secondary.unboxed[disabled] {
  background: rgba(64, 64, 64, 0) !important;
  border: 1px solid transparent !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.button.secondary.unboxed[disabled]:hover, .jewel.button.secondary.unboxed[disabled]:hover:focus {
  color: #737373;
}

.jewel.checkbox.secondary input + span::before {
  background: linear-gradient(#7f7f7f, #737373);
  border: 1px solid #333333;
}
.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='%233AB549' 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='%233AB549' 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='%233AB549' /%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: linear-gradient(#a6e2ad, #7fd68a);
  border: 1px solid #277b32;
}
.jewel.checkbox.secondary input[disabled] + span {
  color: #737373;
}
.jewel.checkbox.secondary input[disabled] + span::before {
  background: #404040;
  border: 1px solid #0d0d0d;
}
.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='%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.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='%23191919' /%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='%233AB549' 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='%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.secondary input:checked + .switch {
  background: linear-gradient(#3ab549, #58ca66);
  box-shadow: 0px 0px 0px 1px #34a241;
}
.jewel.switch.secondary input:focus + .switch {
  box-shadow: 0px 0px 0px 1px #2e8e39;
}
.jewel.switch.secondary input:checked + .switch::before {
  background: #e0f5e2;
}
.jewel.switch.secondary input[disabled]:checked + .switch {
  background: #8c8c8c;
  box-shadow: 0px 0px 0px 1px #7f7f7f;
}
.jewel.switch.secondary input[disabled] + .switch {
  background: #737373;
  box-shadow: 0px 0px 0px 1px #999999;
}
.jewel.switch.secondary input[disabled] + .switch::before {
  background: #595959;
}
.jewel.switch.secondary .switch {
  background: linear-gradient(#595959, #737373);
  box-shadow: 0px 0px 0px 1px #4c4c4c;
}
.jewel.switch.secondary .switch::before {
  background: #e0f5e2;
}

.jewel.datagrid .jewel.list.column .jewel.item.datagrid.secondary.hovered {
  background: #60cc6d;
}
.jewel.datagrid .jewel.list.column .jewel.item.datagrid.secondary.selected, .jewel.datagrid .jewel.list.column .jewel.item.datagrid.secondary.selectable:active {
  background: #4dc65c;
}

.jewel.item.secondary.hovered {
  background: #3AB549;
}
.jewel.item.secondary.selected, .jewel.item.secondary.selectable:active {
  background: #34a241;
}

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

.jewel.snackbar.secondary .jewel.snackbar-content {
  background: linear-gradient(#45c354, #34a241);
  border: 1px solid #277b32;
  box-shadow: inset 0 1px 0 #7fd68a;
  border-bottom: 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: linear-gradient(#3AB549, #2e8e39);
}

a:visited {
  color: #2e8e39;
}

a:hover {
  color: #3AB549;
}

a:active {
  color: #58ca66;
}

.secondary-lightest {
  color: #ccefd0;
}

.secondary-light {
  color: #7fd68a;
}

.secondary-normal {
  color: #3AB549;
}

.secondary-dark {
  color: #21682a;
}

.secondary-darkest {
  color: #081b0b;
}

.jewel.togglebutton.secondary {
  background: linear-gradient(#45c354, #34a241);
  border: 1px solid #277b32;
  box-shadow: inset 0 1px 0 #7fd68a;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: 0 -1px 0 rgba(21, 65, 26, 0.7);
}
.jewel.togglebutton.secondary:hover, .jewel.togglebutton.secondary:hover:focus {
  background: linear-gradient(#3AB549, #2e8e39);
  border: 1px solid #21682a;
  color: #FFFFFF;
}
.jewel.togglebutton.secondary:active, .jewel.togglebutton.secondary:active:focus {
  background: linear-gradient(#2e8e39, #21682a);
  border: 1px solid #15411a;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}
.jewel.togglebutton.secondary:focus {
  border: 1px solid #277b32;
  box-shadow: inset 0px 0px 0px 1px rgba(243, 251, 244, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.6);
  color: #FFFFFF;
}
.jewel.togglebutton.secondary[disabled] {
  background: #404040 !important;
  border: 1px solid #0d0d0d !important;
  box-shadow: none !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.togglebutton.secondary.selected {
  background: linear-gradient(#2e8e39, #21682a);
  border: 1px solid #15411a;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}

.jewel.togglebutton.secondary.outlined {
  background: rgba(58, 181, 73, 0.05);
  border: 1px solid #2e8e39;
  box-shadow: none;
  color: #277b32;
  text-shadow: none;
}
.jewel.togglebutton.secondary.outlined:hover, .jewel.togglebutton.secondary.outlined:hover:focus {
  background: rgba(58, 181, 73, 0.15);
  border: 1px solid #277b32;
  color: #1b5422;
}
.jewel.togglebutton.secondary.outlined:active, .jewel.togglebutton.secondary.outlined:active:focus {
  background: rgba(58, 181, 73, 0.25);
  border: 1px solid #246f2d;
  box-shadow: none;
  color: #1b5422;
}
.jewel.togglebutton.secondary.outlined:focus {
  border: 1px solid #21682a;
  box-shadow: none;
  color: #1b5422;
}
.jewel.togglebutton.secondary.outlined[disabled] {
  background: rgba(64, 64, 64, 0.1) !important;
  border: 1px solid #0d0d0d !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.togglebutton.secondary.outlined.selected {
  background: rgba(58, 181, 73, 0.25);
  border: 1px solid #246f2d;
  box-shadow: none;
  color: #1b5422;
}

.jewel.togglebutton.secondary.unboxed {
  background: rgba(58, 181, 73, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #277b32;
  text-shadow: none;
}
.jewel.togglebutton.secondary.unboxed:hover, .jewel.togglebutton.secondary.unboxed:hover:focus {
  background: rgba(58, 181, 73, 0.15);
  border: 1px solid transparent;
  color: #1b5422;
}
.jewel.togglebutton.secondary.unboxed:active, .jewel.togglebutton.secondary.unboxed:active:focus {
  background: rgba(58, 181, 73, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #1b5422;
}
.jewel.togglebutton.secondary.unboxed:focus {
  background: rgba(58, 181, 73, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #1b5422;
}
.jewel.togglebutton.secondary.unboxed[disabled] {
  background: rgba(64, 64, 64, 0) !important;
  border: 1px solid transparent !important;
  color: #737373;
  text-shadow: unset;
}
.jewel.togglebutton.secondary.unboxed[disabled]:hover, .jewel.togglebutton.secondary.unboxed[disabled]:hover:focus {
  color: #737373;
}

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