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

.jewel.button.emphasized {
  background: linear-gradient(#54b7f3, #24a3ef);
  border: 1px solid #0f88d1;
  box-shadow: inset 0 1px 0 #9bd5f8;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: 0 -1px 0 rgba(10, 90, 138, 0.7);
}
.jewel.button.emphasized:hover, .jewel.button.emphasized:hover:focus {
  background: linear-gradient(#3CADF1, #1198e9);
  border: 1px solid #0d79ba;
  color: #FFFFFF;
}
.jewel.button.emphasized:active, .jewel.button.emphasized:active:focus {
  background: linear-gradient(#1198e9, #0d79ba);
  border: 1px solid #0a5a8a;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}
.jewel.button.emphasized:focus {
  border: 1px solid #0f88d1;
  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(60, 173, 241, 0.05);
  border: 1px solid #1198e9;
  box-shadow: none;
  color: #0f88d1;
  text-shadow: none;
}
.jewel.button.emphasized.outlined:hover, .jewel.button.emphasized.outlined:hover:focus {
  background: rgba(60, 173, 241, 0.15);
  border: 1px solid #0f88d1;
  color: #0c69a2;
}
.jewel.button.emphasized.outlined:active, .jewel.button.emphasized.outlined:active:focus {
  background: rgba(60, 173, 241, 0.25);
  border: 1px solid #0e7fc3;
  box-shadow: none;
  color: #0c69a2;
}
.jewel.button.emphasized.outlined:focus {
  border: 1px solid #0d79ba;
  box-shadow: none;
  color: #0c69a2;
}
.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(60, 173, 241, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #0f88d1;
  text-shadow: none;
}
.jewel.button.emphasized.unboxed:hover, .jewel.button.emphasized.unboxed:hover:focus {
  background: rgba(60, 173, 241, 0.15);
  border: 1px solid transparent;
  color: #0c69a2;
}
.jewel.button.emphasized.unboxed:active, .jewel.button.emphasized.unboxed:active:focus {
  background: rgba(60, 173, 241, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #0c69a2;
}
.jewel.button.emphasized.unboxed:focus {
  background: rgba(60, 173, 241, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #0c69a2;
}
.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='%233CADF1' 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='%233CADF1' 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='%233CADF1' /%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(#cbe9fb, #9bd5f8);
  border: 1px solid #0f88d1;
}
.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='%233CADF1' 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(#3cadf1, #6cc1f4);
  box-shadow: 0px 0px 0px 1px #24a3ef;
}
.jewel.switch.emphasized input:focus + .switch {
  box-shadow: 0px 0px 0px 1px #1198e9;
}
.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: #75c5f5;
}
.jewel.datagrid .jewel.list.column .jewel.item.datagrid.emphasized.selected, .jewel.datagrid .jewel.list.column .jewel.item.datagrid.emphasized.selectable:active {
  background: #5dbbf3;
}

.jewel.item.emphasized.hovered {
  background: #3CADF1;
}
.jewel.item.emphasized.selected, .jewel.item.emphasized.selectable:active {
  background: #24a3ef;
}

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

.jewel.snackbar.emphasized .jewel.snackbar-content {
  background: linear-gradient(#54b7f3, #24a3ef);
  border: 1px solid #0f88d1;
  box-shadow: inset 0 1px 0 #9bd5f8;
  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(#3CADF1, #1198e9);
}

.emphasized-lightest {
  color: #fafdff;
}

.emphasized-light {
  color: #9bd5f8;
}

.emphasized-normal {
  color: #3CADF1;
}

.emphasized-dark {
  color: #0d79ba;
}

.emphasized-darkest {
  color: #063b5b;
}

.jewel.togglebutton.emphasized {
  background: linear-gradient(#54b7f3, #24a3ef);
  border: 1px solid #0f88d1;
  box-shadow: inset 0 1px 0 #9bd5f8;
  border-radius: 0.25rem;
  color: #FFFFFF;
  text-shadow: 0 -1px 0 rgba(10, 90, 138, 0.7);
}
.jewel.togglebutton.emphasized:hover, .jewel.togglebutton.emphasized:hover:focus {
  background: linear-gradient(#3CADF1, #1198e9);
  border: 1px solid #0d79ba;
  color: #FFFFFF;
}
.jewel.togglebutton.emphasized:active, .jewel.togglebutton.emphasized:active:focus {
  background: linear-gradient(#1198e9, #0d79ba);
  border: 1px solid #0a5a8a;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}
.jewel.togglebutton.emphasized:focus {
  border: 1px solid #0f88d1;
  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(#1198e9, #0d79ba);
  border: 1px solid #0a5a8a;
  box-shadow: inset 0px 1px 3px 0px rgba(50, 50, 50, 0.5);
  color: #FFFFFF;
}

.jewel.togglebutton.emphasized.outlined {
  background: rgba(60, 173, 241, 0.05);
  border: 1px solid #1198e9;
  box-shadow: none;
  color: #0f88d1;
  text-shadow: none;
}
.jewel.togglebutton.emphasized.outlined:hover, .jewel.togglebutton.emphasized.outlined:hover:focus {
  background: rgba(60, 173, 241, 0.15);
  border: 1px solid #0f88d1;
  color: #0c69a2;
}
.jewel.togglebutton.emphasized.outlined:active, .jewel.togglebutton.emphasized.outlined:active:focus {
  background: rgba(60, 173, 241, 0.25);
  border: 1px solid #0e7fc3;
  box-shadow: none;
  color: #0c69a2;
}
.jewel.togglebutton.emphasized.outlined:focus {
  border: 1px solid #0d79ba;
  box-shadow: none;
  color: #0c69a2;
}
.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(60, 173, 241, 0.25);
  border: 1px solid #0e7fc3;
  box-shadow: none;
  color: #0c69a2;
}

.jewel.togglebutton.emphasized.unboxed {
  background: rgba(60, 173, 241, 0);
  border: 1px solid transparent;
  box-shadow: none;
  color: #0f88d1;
  text-shadow: none;
}
.jewel.togglebutton.emphasized.unboxed:hover, .jewel.togglebutton.emphasized.unboxed:hover:focus {
  background: rgba(60, 173, 241, 0.15);
  border: 1px solid transparent;
  color: #0c69a2;
}
.jewel.togglebutton.emphasized.unboxed:active, .jewel.togglebutton.emphasized.unboxed:active:focus {
  background: rgba(60, 173, 241, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #0c69a2;
}
.jewel.togglebutton.emphasized.unboxed:focus {
  background: rgba(60, 173, 241, 0.15);
  border: 1px solid transparent;
  box-shadow: none;
  color: #0c69a2;
}
.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(60, 173, 241, 0.25);
  border: 1px solid transparent;
  box-shadow: none;
  color: #0c69a2;
}

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