@import url(http://fonts.googleapis.com/css?family=Roboto:300,400,500,700);

.parallax {
  position: absolute;
  overflow: hidden;
  width: 100%;
  -webkit-transform: translateZ(0);
  -ms-transform: translateZ(0);
  transform: translateZ(0);
}

.parallax img {
  width: 100%;
  height: 100%;
}

/* Preloader */

.preloader {
  position: fixed;
  z-index: 9999;
  width: 100%;
  height: 100%;
  background-color: white;
}

.preloader img {
  position: absolute;
  top: calc(50% - 32px);
  left: calc(50% - 32px);
}

.preloader div {
  display: none;
  /* Preload the Second Pricing Image */
  background: url(../img/pricing2.jpg) no-repeat 9999px 9999px;
  background-position: 9999px 9999px;
}

/* Typography */

.bigp {
  font-size: 18px;
  line-height: 1.5;
  color: #80287a;
}

ul.white-list {
  padding: 0;
  list-style-type: none;
}

ul.white-list li {
  font-size: 18px;
  margin: 10px 0;
  color: #fff;
}

ul.white-list li:before {
  content: ' ';
  position: relative;
  top: -3px;
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 15px;
  background: white;
}

header {
  position: relative;
  width: 100%;
  color: #80287a;
  background: rgba(28, 36, 65, 0.93);
  background: url('../img/header.jpg');
  background-size: cover;
}

header .table {
  display: table;
  height: 100%;
}

header .container {
  height: 100%;
}

header .header-text {
  display: table-cell;
  text-align: center;
  vertical-align: middle;
  color: #80287a;
}

header .typed {
  display: inline-block;
  margin: 0;
}

header .typed-cursor {
  font-size: 60px;
  display: inline-block;
  margin: 0 10px;
  color: #80287a;
}

ul, ol {
  margin-bottom: 20px;
}

pre {
  border: 0 solid #ccc;
  margin: 0 0 20px;
}

code {
  color: #8a6d3b;
  background-color: #f5f5f5;
}

p {
  margin: 0 0 20px;
}

td p {
  margin: 0;
}

body {
  font-size: 17px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

h1, .h1, h2, .h2, h3, .h3, h4, .h4 {
  margin-top: 20px;
  margin-bottom: 20px;
}

h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
  font-weight: 500;
}

h5, .h5, h6, .h6 {
  margin-top: 25px;
  font-weight: 600;
}

.page-header h1 {
  font-weight: 500;
}

.page-header {
  margin: 40px 0 20px;
}

li {
  margin-bottom: 10px;
}

.nav > li {
  margin: 0;
}

/*a {*/
/*text-decoration: none;*/
/*color: #80287a;*/
/*-webkit-transition: all 0.3s ease;*/
/*transition: all 0.3s ease;*/
/*}*/
/* Navigation Bar ( Navbar ) */

/*nav.navbar {*/
/*  position: absolute;*/
/*  z-index: 9500;*/
/*  width: 100%;*/
/*  width: 100vw;*/
/*  -webkit-transition: all 0.3s ease;*/
/*  transition: all 0.3s ease;*/
/*}*/

nav.navbar .navbar-nav li.active a:not(.btn) {
  color: #80287a !important;
}

nav.navbar-fixed-top {
  background-image: linear-gradient(90deg,#f59423,#e2632a,#ca2136,#832778);
  z-index: 9499;
  top: 0;
  padding-top: 10px;
  padding-bottom: 10px;
  opacity: 1;
}

.navbar .button, .nav > li:last-child {
    display: inline-flex;
    align-items: center;
    background: #fff;
    border: 1px solid #e1e1e1;
    border-radius: 0.25rem;
    height: 31px;
    padding: 0 6px;
    margin-top: 6px;
    margin-left: 15px;
}

nav.navbar-fixed-top .navbar-nav > li > a:not(.btn) {
    color: #ffffff;
    font-family: Roboto,sans-serif;
    font-size: 16px;
    font-weight: 400;
    -webkit-font-smoothing: auto;
}

nav.navbar-fixed-top .navbar-nav > li:last-child > a:not(.btn) {
    display: inline-flex;
    color: #222;
    padding: 6px;
    white-space: nowrap;
    cursor: pointer;
}
.navbar-brand {
    float: left;
    height: 100%;
    padding: 0px 15px;
    font-size: 22px;
    line-height: 20px;
    color: #fff;
    font-family: Roboto,sans-serif;
    -webkit-font-smoothing: auto;
}
.icon-bar {
  background: #bbb;
}

/* Buttons */

.btn {
  font-size: 18px;
  display: inline-block;
  padding: 15px 30px;
  color: #80287a;
  border: 2px solid transparent;
  border-radius: 2px;
  background: transparent;
  /*-webkit-transition: all 0.3s ease;*/
  /*transition: all 0.3s ease;*/
}

.btn:hover,
.btn:focus {
  color: #CE2D34;
}

.btn.btn-blue {
  background: #80287a;
  color: #fff;
}

.btn.btn-blue:hover {
  background: #31b9ff;
}

.btn.btn-blue-fill {
  color: #80287a;
  border-color: #80287a;
  background: transparent;
}

.btn.btn-blue-fill:hover {
  color: white;
  background: #80287a;
}

.btn.btn-white-fill {
  color: #fff;
  border-color: #fff;
  background: transparent;
}

.btn.btn-white-fill:hover {
  color: #80287a;
  background: #fff;
}

.btn.btn-gray-fill {
  color: #fff;
  border-color: #fff;
  background: transparent;
}

.btn.btn-gray-fill:hover {
  border-color: #bbb;
  background: #bbb;
}

/* Blink Cursor */

.blink {
  position: relative;
  top: 4px;
  display: inline-block;
  width: 4px;
  height: 50px;
  height: 5vh;
  margin: 0 10px;
}

.navbar {
  top: 50px;
  height: 63px;
}

.container {
  position: relative;
  z-index: 1;
}

/* Sections */
section {
  position: relative;
}

.section {
  padding: 40px 0;
  background: #fff;
}

.main-block {
  padding-top: 50px;
}

.cut-top {
  content: ' ';
  position: absolute;
  z-index: 1;
  top: -80px;
  left: 0;
  width: 0;
  height: 0;
  border-top: 80px solid transparent;
  border-right: 30px solid white;
}

.cut-bottom {
  content: ' ';
  position: absolute;
  z-index: 1;
  bottom: -80px;
  left: 0;
  width: 0;
  height: 0;
  border-bottom: 80px solid transparent;
  border-left: 30px solid white;
}

.intro-tables {
  top: -130px;
  position: relative;
}

.intro-table {
  -webkit-background-size: cover;
  background-size: cover;
  background-repeat: repeat;
  background-position: 0% 0%;
}

.intro-table-hover:hover {
  -webkit-transition: background-image 0.3s ease, background-position 0.3s;
  transition: background-image 0.3s ease, background-position 0.3s;
}

.intro-table1 {
  background-image: url('../img/table-1.jpg');
}

.intro-table2 {
  background-image: url('../img/table-2.jpg');
}

.intro-table3 {
  background-image: url('../img/table-3.jpg');
}

.intro-table-hover1:hover {
  background-image: url('../img/table-1-hover.jpg');
}

.intro-table-hover2:hover {
  background-image: url('../img/table-2-hover.jpg');
}

.intro-table-hover3:hover {
  background-image: url('../img/table-3-hover.jpg');
}

.intro-table-hover h4 {
  -webkit-transform: translateY(170px);
  transform: translateY(170px);
  -webkit-transition: -webkit-transform 0.3s;
  transition: transform 0.3s;
}

.intro-table-hover {
  background-position: 50% 50%;
}

.intro-table-hover .expand {
  margin-top: 120px;
  margin: 30px;
  opacity: 0;
  -webkit-transition: -webkit-transform 0.3s, opacity 0.3s;
  transition: transform 0.3s ease, opacity 0.3s;
  -webkit-transform: scale(0.6);
  -ms-transform: scale(0.6);
  transform: scale(0.6);
}

.intro-table-hover:hover h4 {
  -webkit-transform: translateY(0);
  transform: translateY(0);
}

.intro-table-hover:hover .expand {
  opacity: 1;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
}

.intro-table-hover .hide-hover {
  -webkit-transition: opacity 0.3s ease;
  transition: opacity 0.3s ease;
}

.intro-table-hover:hover .hide-hover {
  opacity: 0;
}

.intro-tables .intro-table {
  position: relative;
  width: 100%;
  height: 300px;
  margin: 20px 0;
}

header h2 {
  font-size: 48px;
  font-weight: 500;
}

section h5 {
  font-weight: 500;
  font-size: 20px;
}

.intro-tables .intro-table .heading {
  margin: 0;
  padding: 30px;
}

.intro-tables .intro-table .small-heading {
  margin: 0;
  padding: 0 30px;
}

.intro-tables .intro-table .bottom {
  position: absolute;
  bottom: 0;
}

.intro-tables .intro-table .owl-schedule .schedule-row {
  padding: 10px 30px;
  color: #80287a;
  transition: all 0.3s ease;
}

.owl-schedule .schedule-row:not(:last-child) {
  border-bottom: 1px solid rgba(255, 255, 255, 0.4);
}

.owl-testimonials .author {
  margin-top: 50px;
}

.ripple-effect {
  position: absolute;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background: #80287a;
  /*-webkit-animation: ripple-animation 2s;*/
  /*animation: ripple-animation 2s;*/
}

@-webkit-keyframes ripple-animation {
  from {
    opacity: 0.2;
    -webkit-transform: scale(1);
    transform: scale(1);
  }
  to {
    opacity: 0;
    -webkit-transform: scale(100);
    transform: scale(100);
  }
}

@keyframes ripple-animation {
  from {
    opacity: 0.2;
    -webkit-transform: scale(1);
    transform: scale(1);
  }
  to {
    opacity: 0;
    -webkit-transform: scale(100);
    transform: scale(100);
  }
}

.services {
  margin: 40px 0;
}

.service {
  width: 100%;
  height: 320px;
  margin: 80px 0;
  text-align: center;
  border: 1px solid #ddd;
  -webkit-transition: all 0.3s ease;
  transition: all 0.3s ease;
}

.service .icon-holder {
  position: relative;
  top: 100px;
  display: inline-block;
  margin-bottom: 40px;
  padding: 10px;
  background: #80287a;
  -webkit-transition: all 0.3s ease;
  transition: all 0.3s ease;
}

.service .heading {
  position: relative;
  top: 80px;
  -webkit-transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
  transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
}

.service .icon-holder > img.icon {
  width: 40px;
}

.service:hover {
  border-color: #80287a;
}

.service:hover .icon-holder {
  top: -30px;
}

.service:hover .heading {
  top: -30px;
}

.service .description {
  width: 80%;
  margin: 0 auto;
  opacity: 0;
  -webkit-transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
  transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  transform: scale(0);
}

.service:hover .description {
  opacity: 1;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
}

.team {
  margin: 80px 0;
  padding-bottom: 60px;
  background: #80287a;
  box-shadow: 0 2px 3px rgba(0, 0, 0, 0.07);
}

.team .cover .overlay {
  height: 250px;
  padding-top: 60px;
  opacity: 0;
  background: rgba(0, 168, 255, 0.9);
  -webkit-transition: opacity 0.45s ease;
  transition: opacity 0.45s ease;
}

.team:hover .cover .overlay {
  opacity: 1;
}

.team .avatar {
  position: relative;
  z-index: 2;
  margin-top: -60px;
  border-radius: 50%;
}

.team .title {
  margin: 50px 0;
}

/* Pricing */

#pricing {
  background: #80287a url('../img/pricing1.jpg') no-repeat center center;
  -webkit-background-size: cover;
  background-size: cover;
  -webkit-transition: background-image 0.6s linear 0.3s;
  transition: background-image 0.6s linear 0.3s;
}

.owl-pricing img {
  width: 100%;
}

.owl-pricing,
.pricings {
  margin-top: 100px;
  margin-bottom: 100px;
}

.pricing {
  position: relative;
  width: 100%;
}

.pricings .pricing .box-main,
.pricings .pricing .box-second {
  position: relative;
  left: 25%;
  display: inline-block;
  width: 50%;
  height: 300px;
  padding: 50px 40px;
  background: #bbb;
  -webkit-transition: -webkit-transform 0.3s, background-image 0.3s, opacity 0.3s;
  transition: transform 0.3s, background-image 0.3s, opacity 0.3s;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.pricings .pricing .box-main {
  z-index: 10;
  padding-top: 40px;
}

.pricings .pricing .box-main:not(.active) {
  cursor: pointer;
}

.pricings .pricing .box-main .info-icon {
  font-size: 14px;
  position: absolute;
  top: 20px;
  right: 20px;
  pointer-events: none;
  opacity: 0;
  color: #fff;
  -webkit-transition: opacity 0.3s;
  transition: opacity 0.3s;
}

.pricings .pricing .box-main:not(.active) .info-icon {
  opacity: 1;
  -webkit-transition-delay: 0.2s;
  transition-delay: 0.2s;
}

.pricings .pricing .box-main:not(.active):hover {
  background: #afafaf;
}

.pricings .pricing .box-main.active {
  background: #80287a;
  -webkit-transform: translateX(-99%);
  -ms-transform: translateX(-99%);
  transform: translateX(-99%);
}

.pricings .pricing .box-second {
  position: absolute;
  top: 0;
  right: 0% !important;
  left: auto;
  opacity: 0;
  background: #afafaf;
}

.pricings .pricing .box-second.active {
  opacity: 1;
  background: #80287a;
}

.pricings .pricing.active .box-main,
.pricings .pricing .box-second {
  background: #80287a;
}

.pricings .pricing .box-main a.btn {
  margin-top: 50px;
}

.owl-twitter i.icon {
  font-size: 36px;
  margin-bottom: 60px;
  color: #80287a;
}

/* Footer */

footer {
  padding: 60px 0 40px;
  background-image: linear-gradient(to right, #f59423, #e2632a, #ca2136, #832778);
  -webkit-background-size: cover;
  background-size: cover;
}

footer .trial-button {
  overflow: hidden !important;
  margin: 40px 0;
}


footer .social-footer {
  padding: 0;
  margin-left: -.5em;
  list-style: none;
}

footer .social-footer li {
  display: inline-block;
  margin: 0 10px;
}

footer .social-footer li a {
  font-size: 24px;
  color: #fff;
}

footer .social-footer li:hover a {
  color: #80287a;
}

/* Form Control */

.form-control {
  font-size: 18px;
  position: relative;
  left: 0;
  height: auto;
  padding: 20px 30px;
  border: 1px;
  border-radius: 0;
  box-shadow: 0;
}

.form-control.form-white {
  color: #fff;
  border: 2px solid white;
  background: transparent;
  -webkit-transition: background-color 0.3s;
  transition: background-color 0.3s;
}

.form-control.form-white::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #fff;
}

.form-control.form-white:-moz-placeholder {
  opacity: 1;
  /* Mozilla Firefox 4 to 18 */
  color: #fff;
}

.form-control.form-white::-moz-placeholder {
  opacity: 1;
  /* Mozilla Firefox 19+ */
  color: #fff;
}

.form-control.form-white:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #fff;
}

.form-control.form-white:focus {
  background: rgba(255, 255, 255, 0.2);
}

/* Popup */
.modal {
  padding: 0 25px !important;
}

.modal-dialog {
  width: 100%;
  max-width: 560px;
  margin: 0 auto;
}

.modal-popup {
  position: relative;
  padding: 45px 30px;
  text-align: center;
  background: url('../img/popup.jpg');
  box-shadow: none;
  border-radius: 2px;
}

.modal-popup a.close-link {
  font-size: 22px;
  position: absolute;
  top: 20px;
  right: 30px;
  color: #fff;
}

.popup-form {
  width: 90%;
  max-width: 375px;
  margin: 60px auto;
}

.popup-form .form-control {
  margin: 20px 0;
}

.popup-form .form-control.dropdown {
  text-align: left;
}

.popup-form .form-control.dropdown:after {
  content: '\f0d7';
  font-family: 'FontAwesome';
  display: inline-block;
  float: right;
  color: white;
}

.popup-form .dropdown .dropdown-menu {
  top: 65px;
  width: 100%;
  padding: 0;
  border: 2px solid white;
  border-top: 0;
  border-radius: 0;
  background: white;
  box-shadow: none;
}

.popup-form .dropdown .dropdown-menu li {
  font-size: 16px;
  width: 100%;
  background: transparent;
}

.popup-form .dropdown .dropdown-menu li a {
  width: 100%;
  padding: 15px 30px;
  color: #80287a;
}

.popup-form .dropdown .dropdown-menu li:hover a {
  color: #fff;
  background: #80287a;
}

/* Checkbox */

.checkbox-holder {
  white-space: nowrap;
}

.checkbox {
  position: relative;
  display: block;
}

.checkbox {
  position: relative;
}

.checkbox label:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 20px;
  height: 20px;
  cursor: pointer;
  border: 2px solid white;
  background: transparent;
  -webkit-transition: background-color 0.3s;
  transition: background-color 0.3s;
}

.checkbox input[type=checkbox]:focus + label:before {
  background: rgba(255, 255, 255, 0.2);
}

.checkbox label:after {
  content: '';
  position: absolute;
  top: 6px;
  left: 6px;
  width: 8px;
  height: 8px;
  opacity: 0;
  background: white;
  -webkit-transition: all 0.3s ease;
  transition: all 0.3s ease;
}

.checkbox input[type=checkbox] {
  opacity: 0;
  position: absolute;
  width: 0;
  height: 0;
}

.checkbox input[type=checkbox]:checked + label:after {
  opacity: 1;
}

.checkbox-holder span {
  position: relative;
  display: inline-block;
  margin: 0 0 0 10px;
  white-space: normal;
  color: #fff;
}

.btn.btn-submit {
  width: 100%;
  margin-top: 30px;
  color: #80287a;
  border: 2px solid #fff;
  background: #fff;
}

.btn.btn-submit:focus {
  font-weight: bold;
}

.btn.btn-submit:hover {
  color: #80287a;
  background: #fff;
}

/* Mobile Nav */
.mobile-nav {
  position: fixed;
  z-index: 9999;
  top: 0;
  left: 0;
  display: table;
  width: 100%;
  height: 100%;
  text-align: center;
  opacity: 0;
  background: rgba(255, 255, 255, 0.98);
  -webkit-transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
  transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
  -webkit-transform: scale(0);
  -ms-transform: scale(0);
  transform: scale(0);
}

.mobile-nav.active {
  opacity: 1;
  -webkit-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
}

.mobile-nav ul {
  display: table-cell;
  padding: 0;
  list-style: none;
  vertical-align: middle;
}

.mobile-nav ul li {
  margin: 25px 0;
}

.mobile-nav ul li a:not(.btn) {
  color: #aaa;
}

.mobile-nav a.close-link {
  font-size: 24px;
  position: absolute;
  bottom: 0;
  left: calc(50% - 10px);
  left: 0;
  width: 100%;
  padding: 15px 0;
  color: #fff;
  background: #80287a;
}

.light {
  font-weight: 300;
}

.regular {
  font-weight: 400;
}

.bold {
  font-weight: bold;
}

/* Colors */

.white {
  color: white;
}

.light-white {
  color: rgba(255, 255, 255, 0.5);
}

.white-bg {
  background: white;
}

.gray-bg {
  background: #f7f7f7;
}

.blue {
  color: #80287a;
}

.blue-bg {
  background: #80287a;
}

.muted {
  color: #989da0;
}

.margin-top {
  margin-top: 150px;
}

@media (max-width: 992px) {
  h1 {
    font-size: 36px;
  }

  h2 {
    font-size: 28px;
  }

  h3 {
    font-size: 24px;
  }

  h4 {
    font-size: 20px;
  }

  h5 {
    font-size: 16px;
  }

  h6 {
    font-size: 12px;
  }

  .section {
    padding: 30px 0;
  }
}

/* Media Queries */

@media (max-width: 991px) {
  .text-center-mobile {
    text-align: center !important;
  }
}

@media (max-width: 768px) {
  .pricing {
    margin-bottom: 30px;
  }

  .pricings .pricing .info-icon {
    display: none;
  }

  .pricings .pricing .box-main,
  .pricings .pricing .box-second {
    left: 0;
    width: 100%;
    padding: 50px 50px 0;
    text-align: left;
    background: #80287a;
  }

  .pricings .pricing .box-main.active {
    background: #80287a;
    -webkit-transform: translateX(0%);
    -ms-transform: translateX(0%);
    transform: translateX(0%);
  }

  .pricings .pricing .box-second {
    position: relative;
    opacity: 1;
  }

  .popup-form {
    width: 100%;
    margin: 60px auto;
  }

  .modal {
    padding: 0 10px !important;
  }

  .popup-form .form-control:not(.dropdown):focus {
    position: relative;
    padding-right: 30px;
    padding-left: 30px;
  }
}

@media (max-width: 400px) {
  header .typed-cursor {
    display: none;
  }

  .pricings .pricing .box-second {
    padding-top: 0;
  }
}

.index-title {
  font-size: 80px;
}

.contributor-name {
  color: #80287a;
  font-size: 1.7em;
  margin-bottom: 0.5em;
}

.photo {
  border: 1px solid #ddd;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
  border-radius: 4px;
  padding: 4px;
}

.bs-callout {
  min-height: 160px;
  padding: 20px;
  border: 1px solid #eee;
  border-left-width: 5px;
  border-radius: 3px;
}

.bs-callout h4 {
  margin-top: 0;
  margin-bottom: 5px;
}

.bs-callout p:last-child {
  margin-bottom: 0;
}

.bs-callout code {
  border-radius: 3px;
}

.bs-callout + .bs-callout {
  margin-top: -5px;
}

.bs-callout-primary {

  border-left-color: #80287a;
}

.bs-callout-primary h4 {
  color: #80287a;
}

h2 {
  /*ensure downlooad as PDF are clickable*/
  z-index: -1;
}

vspace {
  height: 1em;
}

.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title {
  text-align: left;
  font-weight: bold;
}

.tableblock > caption {
  text-align: left;
  font-weight: bold;
  white-space: nowrap;
  overflow: visible;
  max-width: 0;
}

table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p {
  font-size: inherit;
}

.admonitionblock > table {
  border: 0;
  background: none;
  width: 100%;
  margin: 0 0 20px;
}

.admonitionblock > table td.icon {
  text-align: center;
  width: 80px;
}

.admonitionblock > table td.icon img {
  max-width: none;
}

.admonitionblock > table td.icon .title {
  font-weight: bold;
  text-transform: uppercase;
}

.admonitionblock > table td.content {
  padding-left: 1.125em;
  padding-right: 1.25em;
  border-left: 1px solid #dddddd;
  color: #6f6f6f;
  font-size: 15px;
}

.admonitionblock > table td.content > :last-child > :last-child {
  margin-bottom: 0;
}

[class^="icon-"], [class*=" icon-"] {
  display: inline-block;
  vertical-align: middle;
  background-position: 14px 14px;
  background-repeat: no-repeat;
}

span.icon > [class^="icon-"], span.icon > [class*=" icon-"] {
  cursor: default;
}

.admonitionblock td.icon [class^="fa icon-"]:before {
  font-size: 2.5em;
  text-shadow: 1px 1px 2px #e6e6e6;
  cursor: default; /* -webkit-font-smoothing: antialiased; */
}

.admonitionblock td.icon .icon-note:before {
  content: "\f05a";
  color: #005498;
  color: #80a8c7;
}

.admonitionblock td.icon .icon-tip:before {
  content: "\f0eb";
  text-shadow: 1px 1px 2px rgba(222, 222, 68, 0.8);
  color: #c7ba71;
}

.admonitionblock td.icon .icon-warning:before {
  content: "\f071";
  color: #da8f33;
}

.admonitionblock td.icon .icon-caution:before {
  content: "\f06d";
  color: #af5e40;
}

.admonitionblock td.icon .icon-important:before {
  content: "\f06a";
  color: #bd5a5a;
}

/* Markdown table */
.mdtable {
  border: 1px solid #ddd;
  width: 100%;
  max-width: 100%;
  margin-bottom: 20px;
}

.mdtable > thead > tr > th, .mdtable > thead > tr > td {
  border-bottom-width: 2px;
}

.mdtable > thead > tr > th, .mdtable > tbody > tr > th, .mdtable > tfoot > tr > th, .mdtable > thead > tr > td, .mdtable > tbody > tr > td, .mdtable > tfoot > tr > td {
  border: 1px solid #ddd;
}

.mdtable > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}

.mdtable > thead > tr > th, .mdtable > tbody > tr > th, .mdtable > tfoot > tr > th, .mdtable > thead > tr > td, .mdtable > tbody > tr > td, .mdtable > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}

.group {
  font-size: 17px;
  padding-left: 0;
  list-style-type: none;
  margin-bottom: 30px;
}

.group-title {
  font-size: 17px;
  margin-bottom: 10px;
  font-weight: 500;
}

.group-item {
  font-size: 15px;
  margin: 0 0 5px 0;
}

.group-item-i {
  margin-right: 5px;
  margin-left: 3px;
  color: #8c8c8c;
  /* height: 100%; */
  position: relative;
  float: left;
  /* margin-inline-start: 40px; */
}
