:root {
    --input-padding-x: .75rem;
    --input-padding-y: .75rem;
    --body-color: #34495e;
    --body-font-size: 14px;
    --light-dark: #e0e0e0;
    --darken: #0001;
    --lighten: #fff1;
    --alert-bg-primary: #d6dbdf;
    --alert-bg-secondary: #eceef0;
    --alert-bg-info: #d3e9ec;
    --alert-bg-success: #d5e6d9;
    --alert-bg-warning: #f1ead6;
    --alert-bg-danger: #f5cccc;
    --alert-bg-light: #fefefe;
    --alert-bg-dark: #d6d8d9;
    --darken-primary: color-mix(in srgb, var(--primary), #000 10%);
    --darken-secondary: color-mix(in srgb, var(--secondary), #000 10%);
    --darken-success: color-mix(in srgb, var(--success), #000 10%);
    --darken-warning: color-mix(in srgb, var(--warning), #000 10%);
    --darken-danger: color-mix(in srgb, var(--danger), #000 10%);
    --lighten-primary: color-mix(in srgb, var(--primary), #fff 10%);
    --lighten-secondary: color-mix(in srgb, var(--primary), #fff 10%);
    --lighten-success: color-mix(in srgb, var(--success), #fff 10%);
    --lighten-warning: color-mix(in srgb, var(--warning), #fff 10%);
    --lighten-danger: color-mix(in srgb, var(--danger), #fff 10%);
    --alert-primary: #1b2631;
    --alert-secondary: #54595e;
    --alert-success: #184522;
    --alert-info: #124b54;
    --alert-warning: #604f1b;
    --alert-danger: #6a0000;
    --alert-light: #818182;
    --alert-dark: #1b1e21;
    --light-border-color: #dee2e6;
    --primary-opacity-half: rgba(25, 118, 210, 0.5);
    --primary-opacity-quarter: rgba(25, 118, 210, 0.25);
    --navbar-bg-color: #1e1b29;
}
html{
    font-size: 14px;
    min-height: 100vh;
}
@media only screen and (max-width: 1280px){
    html{
        font-size: 12px;
    }
}
body{
    font-family: "Arial", "Microsoft YaHei", "黑体", "宋体", sans-serif;
}
img{
    image-rendering: -webkit-optimize-contrast;
}
hr.dashed {
    border-top-style: dashed;
}

.bg-darken{
    background-color: var(--darken) !important;
}
.bg-lighten{
    background-color: var(--lighten);
}

.input-group.input-group-fill{
    flex-flow:nowrap;
}
.input-group.input-group-fill > *:not(.input-group-append, .input-group-prepend){
    width: 1% !important;
}

.font-tall{
    transform: scaleY(1.1428);
    line-height: 1.148;
    display: inline-block;
}
.font-sm {
    font-size: 0.85714rem !important;
}
.font-md,
.font-nm{
    font-size: 1rem !important;
}
.font-lg{
    font-size: 1.28571rem !important;
}
.font-xl{
    font-size: 1.57142rem !important;
}
.font-2x{
    font-size: 2rem !important;
}
.font-3x{
    font-size: 3rem !important;
}

button[form-query-button]:empty:before {
    content: "\e9e0";
    line-height: 1;
    font-family: 'font-easymoo';
}

.navbar-dark.bg-dark{
    background-color: var(--navbar-bg-color) !important;
}
.navbar-fixed-top-secondary {
    height: 5rem;
    margin-bottom: 1.5rem;
}

.form-inline .form-group:not(:last-child){
    margin-right: 1.25rem;
}
.form-inline .form-group,
.form-inline>* {
    margin-bottom: .5rem;
}
.form-inline label:not(.btn){
    -ms-flex-pack: start;
    justify-content: flex-start;
    padding-right: .875rem;
}

.nav-divider{
    border-bottom: 1px solid #616161;
    margin: .25rem 0;
}
.admin-top{
    height: auto;
    margin-bottom: 1.5rem;
}

.execute-top{
    height: auto;
    margin-bottom: 1.5rem;
}

.tutor-top{
    height: auto;
    margin-bottom: 1.5rem;
}

.dashboard-top{
    height: auto;
    margin-bottom: 1.5rem;
}

@media (min-width: 768px){
    .nav-divider{
        border-left: 1px solid #616161;
        margin: 0 .25rem !important;
    }
    .admin-top,
    .admin-top + .navbar-fixed-top-secondary{
        height: 5rem;
        margin-bottom: 1.5rem;
    }

    .execute-top,
    .execute-top + .navbar-fixed-top-secondary{
        height: 6.25rem;
        margin-bottom: 1.5rem;
    }

    .tutor-top,
    .tutor-top + .navbar-fixed-top-secondary{
        height: 6.25rem;
        margin-bottom: 1.5rem;
    }

    .dashboard-top,
    .dashboard-top + .navbar-fixed-top-secondary{
        height: 5rem;
        margin-bottom: 1.5rem;
    }
}

.thead-sticky{
    overflow-y: auto;
}
.thead-sticky .table-bordered{
    border-top: 0;
}
.thead-sticky table{
    margin-bottom: 0;
}
.thead-sticky thead td,
.thead-sticky thead th{
    border-top: 0;
    position: sticky;
    top: -1px;
}

.input-group > * + .input-group-prepend{
    margin-left: -1px;
}

thead.thead-sticky tr:nth-child(1) th,
thead.thead-sticky tr:nth-child(1) td {
    position: sticky;
    top: -1px;

    z-index: 2; /* custom-control in table content */
}

thead.thead-sticky tr:nth-child(2) th,
thead.thead-sticky tr:nth-child(2) td {
    position: sticky;
    top: calc(1.5rem + 1.5rem - 1px);
}

input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button {
    -webkit-appearance: none;
}

.btn-group.btn-group-gutter > .btn{
    margin-right: .5rem;
}
.btn-group.btn-group-lg.btn-group-gutter > .btn{
    margin-right: 1rem;
}

.table-bordered td, .table-bordered th{
    vertical-align: middle;
}
[class*="table-responsive"] .table td.word-beauty,
[class*="table-responsive"] .table th.word-beauty {
    white-space: normal;
}
[class*="table-responsive"] .table td,
[class*="table-responsive"] .table th {
    word-break: break-all;
    white-space: nowrap;
}
[class*="table-responsive"] .table.text-wrap td,
[class*="table-responsive"] .table.text-wrap th {
    white-space: normal;
    word-break: normal;
}

.word-beauty {
    max-width: 20rem;
    overflow: hidden;
}
.word-beauty>* {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    white-space: normal;
}
.word-beauty.line-2>*{
    -webkit-line-clamp: 2;
}
.word-beauty.line-1>*{
    -webkit-line-clamp: 1;
}

.badge{
    padding: .55em .4em;
}
.badge.badge-beauty {
    line-height: 1.2;
    font-weight: normal;
    /* margin: 1px 0; */
    vertical-align: middle;
}
.badge.badge-lg{
    font-size: 1.5rem;
    padding: .75rem 3rem;
    font-weight: normal;
}

.custom-control-label::after {
    border: 1px solid transparent;
}

[class*="col-"]>.custom-control-inline {
    padding-top: calc(0.375rem + 1px);
}
.custom-control-inline[class*="label-"]{
    padding-left: 0;
    margin-right: 0;
}
.custom-control-inline[class*="label-"] label{
    margin-left: 1.5rem;
}

.form-label-right .col-form-label{
    text-align: right;
}
.form-label-2 label[class*="-auto"] {
    width: 2rem;
    box-sizing: content-box;
}
.form-label-3 label[class*="-auto"] {
    width: 3rem;
    box-sizing: content-box;
}
.form-label-4 label[class*="-auto"] {
    width: 4rem;
    box-sizing: content-box;
}
.form-label-5 label[class*="-auto"] {
    width: 5rem;
    box-sizing: content-box;
}
.form-label-6 label[class*="-auto"] {
    width: 6rem;
    box-sizing: content-box;
}
.form-label-7 label[class*="-auto"] {
    width: 7rem;
    box-sizing: content-box;
}
.form-label-8 label[class*="-auto"] {
    width: 8rem;
    box-sizing: content-box;
}


.z1 {z-index: 1;}
.z2{z-index: 2;}
.z3{z-index: 3;}
.z4{z-index: 4;}
.z5{z-index: 5;}

.label-3 label{width: calc(3rem + .5rem);box-sizing: content-box;}
.label-4 label{width: calc(4rem + .5rem);box-sizing: content-box;}
.label-5 label{width: calc(5rem + .5rem);box-sizing: content-box;}
.label-6 label{width: calc(6rem + .5rem);box-sizing: content-box;}
.label-7 label{width: calc(7rem + .5rem);box-sizing: content-box;}
.label-8 label{width: calc(8rem + .5rem);box-sizing: content-box;}

.form-control::-webkit-input-placeholder {
    color: #9e9e9e;
}

.form-control::-moz-placeholder {
    color: #9e9e9e;
}

.form-control:-ms-input-placeholder {
    color: #9e9e9e;
}

.form-control::-ms-input-placeholder {
    color: #9e9e9e;
}

.form-control::placeholder {
    color: #9e9e9e;
}

.form-control.form-control-inline{
    max-width: 100px;
    height: initial;
    padding: 0;
    border-top: 0;
    border-left: 0;
    border-right: 0;
    text-align: right;
    display: inline-block;
    box-shadow: none !important;
    background-color: transparent;
}
.form-control.form-control-inline.is-valid,
.form-control.form-control-inline.is-invalid{
    background-position: left 0 center;
}

.jumbotron.jumbotron-nodata{
    color: #6c757d;
    font-size: 1.75rem;
    margin-bottom: 0;
    font-style: italic;
    border: 1px dashed #BDBDBD;
}
.pre-wrap {
    white-space: pre-wrap !important;
}
.pre{
    white-space: pre !important;
}
.btn-light{
    border-color: #ced4da;
}
.badge-light{
    border: 1px solid #ced4da;
}

.highcharts-container{
    max-width: 100%;
}


.width-0{
    /* hack make table column fit-content */
    width: 0 !important;
}
.width-1 {
    width: 1rem !important;
    box-sizing: content-box;
    height: inherit;
}
.width-2 {
    width: 2rem !important;
    box-sizing: content-box;
    height: inherit;
}
.width-3 {
    width: 3rem !important;
    box-sizing: content-box;
    height: inherit;
}
.width-4 {
    width: 4rem !important;
    box-sizing: content-box;
    height: inherit;
}
.width-5 {
    width: 5rem !important;
    box-sizing: content-box;
    height: inherit;
}
.width-6 {
    width: 6rem !important;
    box-sizing: content-box;
    height: inherit;
}
.width-7 {
    width: 7rem !important;
    box-sizing: content-box;
    height: inherit;
}
.width-8 {
    width: 8rem !important;
    box-sizing: content-box;
    height: inherit;
}
.width-9 {
    width: 9rem !important;
    box-sizing: content-box;
    height: inherit;
}
.width-10 {
    width: 10rem !important;
    box-sizing: content-box;
    height: inherit;
}

.no-max-width{
    max-width: initial;
}
.max-width-2 {
    max-width: 2em;
}
.max-width-3 {
    max-width: 3em;
}
.max-width-4 {
    max-width: 5em;
}
.max-width-5 {
    max-width: 5em;
}
.max-width-6 {
    max-width: 6em;
}
.max-width-7 {
    max-width: 7em;
}
.max-width-8 {
    max-width: 8em;
}
.max-width-9 {
    max-width: 9em;
}
.max-width-10 {
    max-width: 10em;
}
.max-width-25{
    max-width: 25%;
}
.max-width-50{
    max-width: 50%;
}
.max-width-100{
    max-width: 100%;
}
.min-width-0 {
    min-width: 0;
}
.min-width-1 {
    min-width: 1em;
}
.min-width-2 {
    min-width: 2em;
}
.min-width-3 {
    min-width: 3em;
}
.min-width-4 {
    min-width: 5em;
}
.min-width-5 {
    min-width: 5em;
}
.min-width-6 {
    min-width: 6em;
}
.min-width-7 {
    min-width: 7em;
}
.min-width-8 {
    min-width: 8em;
}
.min-width-9 {
    min-width: 9em;
}
.min-width-10 {
    min-width: 10em;
}
.min-width-100{
    min-width: 100%;
}

.table-bordered thead td, .table-bordered thead th{
    border-bottom-width: 1px;
}
table.content-no-wrap td, table.content-no-wrap th {
    white-space: nowrap;
}

.modal-backdrop.show ~ .modal-backdrop.show{
    z-index: 1055;
}

.bd-callout {
    padding: 1.25rem;
    margin-top: 1.25rem;
    margin-bottom: 1.25rem;
    border: 1px solid #eee;
    border-left-width: .25rem;
    border-radius: .25rem
}
.bd-callout h4 {
    margin-top: 0;
    margin-bottom: .25rem
}
.bd-callout p:last-child {
    margin-bottom: 0
}
.bd-callout code {
    border-radius: .25rem
}
.bd-callout+.bd-callout {
    margin-top: -.25rem
}
.bd-callout-info {
    border-left-color: #5bc0de
}
.bd-callout-info h4 {
    color: #5bc0de
}
.bd-callout-success {
    border-left-color: #66BB6A
}
.bd-callout-success h4 {
    color: #66BB6A
}
.bd-callout-warning {
    border-left-color: #f0ad4e
}
.bd-callout-warning h4 {
    color: #f0ad4e
}
.bd-callout-danger {
    border-left-color: #d9534f
}
.bd-callout-danger h4 {
    color: #d9534f
}

/* datetimepicker */
.datetimepicker table tr td.active:active,
.datetimepicker table tr td.active:hover:active,
.datetimepicker table tr td.active.disabled:active,
.datetimepicker table tr td.active.disabled:hover:active,
.datetimepicker table tr td.active.active,
.datetimepicker table tr td.active:hover.active,
.datetimepicker table tr td.active.disabled.active,
.datetimepicker table tr td.active.disabled:hover.active,
.datetimepicker table tr td span.active:active,
.datetimepicker table tr td span.active:hover:active,
.datetimepicker table tr td span.active.disabled:active,
.datetimepicker table tr td span.active.disabled:hover:active,
.datetimepicker table tr td span.active.active,
.datetimepicker table tr td span.active:hover.active,
.datetimepicker table tr td span.active.disabled.active,
.datetimepicker table tr td span.active.disabled:hover.active{
    background-color: var(--primary);
    background-image: none;
}

.datetimepicker table tr td span{
    border-radius: 0;
}
.datetimepicker td, .datetimepicker th {
    width: 35px;
    height: 35px;
    -webkit-border-radius: 0;
    -moz-border-radius: 0;
    border-radius: 0;
}
/* datetimepicker */

/* validation */
.custom-select.is-valid,
.was-validated .custom-select:valid,
.custom-select.is-invalid,
.was-validated .custom-select:invalid {
    background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px;
    padding-right: 1.75rem !important;
}

.form-control.is-valid,
.was-validated .form-control:valid,
.form-control.is-invalid,
.was-validated .form-control:invalid {
    background-image: none;
    padding-right: 0.75rem !important;
}

.form-control.is-valid.form-control-lg,
.was-validated .form-control.form-control-lg:valid,
.was-validated .form-control.form-control-lg:invalid {
    padding-right: 1rem;
}

.form-control.form-control-line.is-invalid,
.form-group-line .form-control.is-invalid,
.was-validated .form-control.form-control-line:invalid {
    border-color: #dc3545;
}

.form-control.form-control-line.is-valid,
.form-group-line .form-control.is-valid,
.was-validated .form-control.form-control-line:valid {
    border-color: #28a745;
}

.form-control.is-valid,
.was-validated .form-control:valid {
    background-image: none;
    padding-right: 0.75rem;
}

.form-control.is-valid.form-control-lg,
.was-validated .form-control.form-control-lg:valid {
    padding-right: 1rem;
}

.custom-select:disabled {
    color: #6c757d;
    background-color: #e9ecef;
}
fieldset:disabled .btn-group-toggle > label{
    pointer-events: none;
}
/* validation */


/* for select 2 bootstrp theme */
.select2-local{
    display:none;
}

.select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered{
    width: 100%;
}

.input-group>.custom-file+.select2-container,
.input-group>.custom-select+.select2-container,
.input-group>.form-control+.select2-container,
.input-group>.form-control-plaintext+.select2-container{
    margin-left: -1px;
}

.select2-container--bootstrap4.select2-container--focus .select2-selection{
    border-color: #7bb6ef;
    outline: 0;
    box-shadow: 0 0 0 .1rem rgba(25, 118, 210, .25);
}

.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice{
    border-radius: 0;
    margin: .15rem .15rem .15rem 0;
    padding: 0 .5rem;
    float: right;
    border: 1px solid var(--lighten-primary);
}
.select2-container--bootstrap4 .select2-dropdown{
    box-shadow: inset 0px 0px 2px 0px #0088cc;
}
.select2-container--bootstrap4 .select2-selection__clear{
    line-height: 0.9em;
    background-color: #757575;
    margin-left: 0.5rem;
}
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice__remove{
    font-family: monospace;
    float: right;
}

.select2-container .select2-search--inline .select2-search__field{
    margin-top: 0
}
.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__rendered{
    padding-left: 0.75rem;
    padding-right: 30px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
    align-items: center;
    flex-wrap: wrap;
}
.select2-container--bootstrap4 .select2-results__option--disabled {
    color: #999;
    cursor: not-allowed;
}


.select2-results__option{
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.select2-container--bootstrap4 .select2-selection--single .select2-selection__placeholder {
    color: #9e9e9e;
}

.input-group>.form-control + .select2-container--bootstrap4,
.input-group>.select2-container--bootstrap4 +.form-control{
    margin-left: -1px;
}
.select2-container--bootstrap4 .select2-selection{
    border-radius: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
    display: -ms-flexbox;
    display: flex;
    transition: none;
}
.select2-container--bootstrap4 .select2-results__group{
    font-size: inherit;
    background: #FAFAFA;
}
/*.select2-container--bootstrap4 .select2-results__option .select2-results__option{*/
/*    padding-left : 3rem;*/
/*}*/
.select2-container--bootstrap4 .select2-results__option--highlighted[aria-selected]{
    background-color: #0088cc;
}
.select2-container--bootstrap4 .select2-results__option--highlighted,
.select2-container--bootstrap4 .select2-results__option--highlighted.select2-results__option[aria-selected="true"] {
    color: #fff;
    background-color: #0088cc; }

.form-control.is-invalid + .select2 .select2-selection {
    border-color : #dc3545;
}
.form-control.is-invalid + .select2 .select2-selection:focus{
    border-color : #dc3545;
    box-shadow: 0 0 0 0.2rem rgba(220,53,69,.25);
}
.form-control.is-valid + .select2 .select2-selection{
    border-color : #28a745;
}
.form-control.is-valid + .select2 .select2-selection:focus{
    border-color: #28a745;
    box-shadow: 0 0 0 0.2rem rgba(40,167,69,.25);
}
.input-group>.select2-container--bootstrap4{
    -ms-flex: 1 1 auto;
    /* flex: 1 1 auto; */
    /* width: auto; */
}
.custom-select-sm ~ .select2-container--bootstrap4 .select2-selection--single,
.input-group-sm .select2-container--bootstrap4 .select2-selection--single{
    height: calc(1.5em + 0.5rem + 2px) !important;
    font-size: .875rem;
}
.select2-container--bootstrap4 .select2-results__option[aria-selected=true]{
    background-color: #e0e0e0;
}
/* select 2*/

/* 滚动条 */
::-webkit-scrollbar {
    width: 5px;
    height: 5px;
}
/* 轨道 */
::-webkit-scrollbar-track-piece {
    background:#eeea;
}

/* 滑块 */
::-webkit-scrollbar-thumb {
    background: #34495e55;
}
/* 垂直滚动条hover */
::-webkit-scrollbar-thumb:vertical:hover {
    background: #34495eaa;
}
/* 水平滚动条hover */
::-webkit-scrollbar-thumb:horizontal:hover {
    background: #34495eaa;
}

input[type="range"]::-moz-range-progress {
  background-color: #08c;
}
input[type="range"]::-moz-range-track {
  background-color: #08c;
}
input[type="range"]::-ms-fill-lower {
  background-color: #08c;
}
input[type="range"]::-ms-fill-upper {
  background-color: #08c;
}

@keyframes decrease-100{
    to {width : 0%;}
}

.gm-style-cc{
    display: none;
}
.gm-style a[title="点击以在 Google 地图上查看此区域"] {
    display: none !important;
}



.top-0{top: 0;}
.top-100{top: 100%;}
.bottom-0{bottom: 0;}
.bottom-100{bottom: 100%;}
.left-0{left: 0;}
.left-100{left: 100%;}
.right-0{right: 0;}
.right-100{right: 100%;}

.position-0 {
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
}
.position-top-left {
    top: 0;
    left: 0;
}
.position-top-right {
    top: 0;
    right: 0;
}
.position-bottom-left {
    bottom: 0;
    left: 0;
}
.position-bottom-right {
    bottom: 0;
    right: 0;
}
.position-top-center {
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
}
.position-bottom-center {
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
}
.position-left-center {
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
}
.position-right-center {
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
}
.position-right {
    right: 0;
    top: 0;
    bottom: 0;
}
.position-left {
    left: 0;
    top: 0;
    bottom: 0;
}
.position-top {
    left: 0;
    right: 0;
    top: 0;
}
.position-bottom {
    left: 0;
    right: 0;
    bottom: 0;
}
.position-center{
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    -webkit-transform: translate(-50%, -50%);
    -moz-transform: translate(-50%, -50%);
}
.position-left-right {
    left: 0;
    right: 0;
}

.transform-center-x {
    left: 50%;
    transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
}
.transform-center-y {
    top: 50%;
    transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
}