.stage {
    position: relative;
    width: 100%;
    margin: 0;
    margin-top: 10px;
}

.stage-picture img {
    width: 100%; height: auto;
    vertical-align: bottom;
}

.stage-caption {
    position: absolute;
    top: 0; bottom: 0;
    right: 0; left: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    text-align: center;
    color: white;
}

.stage-caption h1 {
    color: white;
    font-size: 60px;
    font-weight: 600;
    line-height: 90px;
}

.stage-caption h2 {
    color: white;
    margin-top: 0;
}

.stage-caption h1, .stage-caption h2 {
    background-color: rgba(0, 0, 0, 0.4);
    padding-left: 20px;
    padding-right: 20px;
}

@media (max-width: 992px) {
    .home .stage-caption h1{
        font-size: 7vw;
        line-height: 8vw;
    }
    nav .button-collapse {
        margin: 0;
    }
}

@media (min-width: 600px) {
    .home .header {
        margin-top: 10px;
    }
}

.header-text {
    position: relative;
    top: 30%;
    text-align: center;
    width:100%;
}

.home-teaser{
    background-color: #98037f;
    padding-bottom: 40px;
    text-align: center;
    color: white;
}

.home-teaser h1 {
    margin-top: 0px;
    padding-top: 40px;
    color: white;
    margin-bottom: 40px;
}

.home-teaser h2 {
    font-weight: 500;
    color: white;
}

.teaser-icon {
    font-size: 64px;
}

.teaser-col-content {
    position: relative;
    width: 100%;
}

.home-teaser .col:not(:last-child) .teaser-col-content:after  {
    position: absolute;
    top: 0; bottom: 0;
    right: calc(-1rem - 8px); /* (padding-right of .process__item) - (half-width) */
    content: "";
    width: 16px;
    background: linear-gradient(
            rgba(152,3,127,1),
            rgba(152,3,127,0),
            rgba(152,3,127,1)),
        url('../public/assets/img/process-separator.svg') center center no-repeat;
    background-size: auto, cover;
}

@media (max-width: 600px) {
    .home-teaser .col:not(:last-child) .teaser-col-content:after {
       display: none; /* visibility: none; */
    }
}

.teaser-guide {
    margin-top: 0px;
    margin-bottom: 40px;
    padding-top: 40px;
    padding-bottom: 40px;
    background-color: #E8ECEF;
    color: #3E145C;
}

.teaser-guide h1 {
    margin-bottom: 40px;
}

.teaser-guide ul {
    margin-top: 0;
    margin-bottom: 0;
}

.teaser-guide li {
    list-style-type: disc;
    line-height: 60px;
    font-size: 18px;
}

.teaser-guide li:not(:first-child):before {
    content: "";
    display: block;
    height: 2px;
    background: linear-gradient(
        to right,
        rgba(152,3,127,0),
        rgba(152,3,127,1),
        rgba(152,3,127,0))
}

.teaser-guide li:last-child {
    border-bottom: none;
}

.btn-publishing {
    background-color: #98037F !important;
    padding-top: 10px;
    height: 56px;
}

.btn-tutorials {
    background-color: #3E145C !important;
}

.cards {
    padding-bottom: 50px;
    margin-top: 15px;
    margin-bottom: 40px;
}

:host /deep/ .card {
    height: 280px !important;
}

.teaser-guide .icon-desc {
    font-size: 7em;
}

.cards-teaser {
    padding-top: 10px;
    padding-bottom: 20px;
    margin: 0 auto;
}

.guide-links a {
    margin-top: 10px;
}

/* ICONS */
@font-face {
    font-family: 'icomoon';
    src:
        url('../public/assets/fonts/icomoon.ttf') format('truetype'),
        url('../public/assets/fonts/icomoon.woff') format('woff');
    font-weight: normal;
    font-style: normal;
}

[class^="ico-"], [class*=" ico-"] {
    /* use !important to prevent issues with browser extensions that change fonts */
    font-family: 'icomoon' !important;
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;

    /* Better Font Rendering =========== */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.ico-telescope:before {
    content: "\e900";
}

.ico-lab:before {
    content: "\e901";
}

.ico-box:before {
    content: "\e902";
}

.ico-files:before {
    content: "\e903";
}

.ico-grid:before {
    content: "\e904";
}

.ico-equalizer:before {
    content: "\e905";
}

.ico-stats:before {
    content: "\e906";
}

.fade-text {
    -webkit-animation: fadein 2s; /* Safari, Chrome and Opera > 12.1 */
       -moz-animation: fadein 2s; /* Firefox < 16 */
        -ms-animation: fadein 2s; /* Internet Explorer */
         -o-animation: fadein 2s; /* Opera < 12.1 */
            animation: fadein 2s;
}
@keyframes fadein {
    from { opacity: 0; }
    to   { opacity: 1; }
}
/* Firefox < 16 */
@-moz-keyframes fadein {
    from { opacity: 0; }
    to   { opacity: 1; }
}
/* Safari, Chrome and Opera > 12.1 */
@-webkit-keyframes fadein {
    from { opacity: 0; }
    to   { opacity: 1; }
}
/* Internet Explorer */
@-ms-keyframes fadein {
    from { opacity: 0; }
    to   { opacity: 1; }
}
/* Opera < 12.1 */
@-o-keyframes fadein {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/*Custom NDGIT styles (menu and breadcrumbs) */

/*:root {
    --primary: #0066FF; 
    --secondary: #00CC66;
    --primary-accent: #0153FF;
    --secondary-accent: #00E16C;
    --team-black: #000;
    --negative: #BE2223;
    --group-1: #343434;
    --group-1-dark: #012980;
    --group-1-medium: #0153ff;
    --group-2: #343434;
    --group-2-dark:  #007034;
    --group-2-medium: #00CC66;
}*/

:root {
    --primary: #98037F; 
    --secondary: #3E14D1;
    --primary-accent: #9B20C2;
    --secondary-accent: #4C4391;
    --team-black: #000;
    --negative: #BE2223;
    --group-1: #343434;
    --group-1-dark: #3E145C;
    --group-1-medium: #4C4391;
    --group-2: #343434;
    --group-2-dark:  #170685;
    --group-2-medium: #3E14D1;
}

body {
    font: 400 15px/22.5px Montserrat, sans-serif !important;
}

h1, h2, a.breadcrumb, table tr th, .side-nav-item a {
    font-family: Montserrat, sans-serif !important;
    font-weight: 600 !important;
}

a {
    color: var(--primary);
}
h1, h2, h3 {
    color: var(--team-black);
}

.side-nav li.active {
    border-right: 2px solid var(--primary-accent) !important;
}

.side-nav li.active > div > a {
    color: var(--primary-accent) !important;
}

.side-nav li.active i {
    color: var(--primary-accent) !important;
}

.side-nav-item {
    padding-bottom: 10px;
}

.side-nav h2 {
    padding-top: 20px;
    padding-bottom: 10px;
  }

.side-nav ul li a {
    line-height: 30px;
}

.nav-wrapper .brand-logo-link .brand-logo {
    max-height: 40px;
}

a.breadcrumb, .breadcrumb::before {
    color: var(--team-black) !important;
}

.tabs-wraper ul#tabs li a:not(.active) {
    color: var(--team-black);
}

.tabs-wraper ul#tabs li a.active {
    color: var(--primary-accent);
}

.tabs-wraper ul#tabs li.indicator {
    background: var(--primary-accent);
}

.ui-paginator-bottom {
    margin-top: 15px;
}

ul li a.toc-h2, .toc-h3 {
    color: var(--team-black) !important;
}

input:focus:not([readonly]) + label {
    color: var(--team-black) !important;   
}

input:focus:not([readonly]), textarea:focus:not([readonly]) {
    border-bottom: 1px solid var(--primary) !important;
    box-shadow: none !important;
}

input[type="text"].valid {
    border-bottom: 1px solid var(--primary) !important;
    box-shadow: none !important;
}

label.active2 {
    color: var(--team-black) !important; 
}

.dropdown-content li > a, .dropdown-content li > span {
    color: var(--team-black) !important;
}

.chips.focus {
    border-bottom: 1px solid var(--primary);
    box-shadow: 0 1px 0 0 var(--primary);
}

form input[type] {
    margin-bottom: 25px;
}

form input.ng-invalid {
    border-bottom: 1px solid var(--negative);
}

[type="checkbox"]:checked + label::before {
    border-right-color: var(--primary);
    border-bottom-color: var(--primary);
}


[type="radio"]:checked + label::after {
    border-color: var(--primary);
    background-color: var(--primary);
}

.ui-datatable thead th {
    color: var(--team-black);
}

button.btn:not(.btn-flat), div.btn, a.btn-primary, .swagger-ui button.btn.authorize {
    background-color: var(--team-black);
}

form button.btn:hover, div.btn:hover, a.btn-primary:hover,.swagger-ui button.btn.authorize:hover {
    box-shadow: 0px 3px 5px 2px rgba(0, 0, 0, 0.5);
    background-color: var(--team-black);
}

.switch label input[type="checkbox"]:checked + .lever::after {
    background-color: var(--primary) !important;
}
.switch label input[type="checkbox"]:checked + .lever {
    background-color: #599bff;;
}

.create-btn, .refresh-btn, .create-btn:active, .refresh-btn:active{
    background-color: var(--primary);
}

.create-btn:hover, .refresh-btn:hover {
    background-color: var(--primary);
    box-shadow: 0px 3px 5px 2px rgba(0, 0, 0, 0.5);
}

.delete-btn, .remove-btn {
    background-color: var(--negative);
}

.delete-btn:hover, .remove-btn:hover {
    background-color: var(--negative);
    box-shadow: 0px 3px 5px 2px rgba(0, 0, 0, 0.5);
}

.edit-btn, .show-btn, .item-add-btn, .member-add-btn, .details-btn {
    background-color: var(--team-black);
}

.details-btn:hover {
    background-color: var(--team-black);
    box-shadow: 0px 3px 5px 2px rgba(0, 0, 0, 0.5);
}

.edit-btn:hover, .show-btn:hover, .item-add-btn:hover, .member-add-btn:hover {
    background-color: var(--team-black);
    box-shadow: 0px 3px 5px 2px rgba(0, 0, 0, 0.5);
}

 button.btn.ladda-button:disabled {
    background-color:  var(--team-black) !important;
}

.input-field .prefix.active {
    color: var(--primary);
}

header nav ul li a, header nav .menu-link {
    text-transform: capitalize;
    font-size: 1.25rem;
    font-weight: 600;
    line-height: 63px;
}

header nav .nav-wrapper a.active {
    background: inherit;
    border-bottom: 3px solid black;
}

header nav ul li:last-child a.active {
    text-decoration: none;
    color: #000000;
}

header nav div > ul > li:nth-child(2) a {
    text-transform: none;
}

header nav .nav-wrapper i {
    height: 61px;
    line-height: 61px;
}

header nav ul.dropdown-content {
    top: 50px !important;
}

header nav ul > li > a {
    color: var(--team-black) !important;
}

header nav .nav-wrapper  .collapsible-body li a{
    text-transform: none;
    color: rgb(128, 128, 128) !important;
}

.tabs-wraper ul#tabs li a.active {
    color: var(--primary);
}

.tabs-wraper ul#tabs li.indicator {
    background: var(--primary);
}

header nav ul li .menu-link.pos1 {
    color: #2980b7;
}

header nav ul li .menu-link.pos2 {
    color: #14405c;
}

header nav ul li .menu-link.pos3 {
    color: #1f6089;
}

header nav ul li .menu-link.pos4 {
    color: #689f38;
}

header nav ul li .menu-link.pos5 {
    color: #009688;
}

header nav ul li .menu-link.pos6 {
    color: #2980b7;
}

header nav ul li .menu-link.pos7 {
    color: #14405c;
}

header nav ul li .menu-link.pos8 {
    color: #1f6089;
}

footer.page-footer.grey {
   background-color: var(--team-black) !important;
}

div.wrapper.top-wrapper .kpi1 .card-panel {
    background: var(--group-1) !important;
}

div.wrapper.top-wrapper .kpi2 .card-panel {
    background: var(--group-1-dark) !important;
}

div.wrapper.top-wrapper .kpi3 .card-panel {
    background: var(--group-1-medium) !important;
}

div.wrapper.bottom-wrapper .kpi1 .card-panel {
    background: var(--group-2) !important;
}

div.wrapper.bottom-wrapper .kpi2 .card-panel {
    background: var(--group-2-dark) !important;
}

div.wrapper.bottom-wrapper .kpi3 .card-panel {
    background: var(--group-2-medium) !important;
}

.column.guides .light-green {
    background: var(--group-2-medium) !important;
    color: white !important;
}

.column.guides .red {
    background: var(--group-1-medium) !important;
    color: white !important;
}

.card.card-owner .card-type.chip {
    background: var(--group-1-medium) !important;
}

.card.card-demo .card-type.chip {
    background: var(--group-2-medium) !important;
}

.card.card-inactive .card-type.chip {
    background: #7f7f7f !important;
}

.card.card-productive .card-type.chip {
    background: #002575 !important;
}

.card.card-productive {
    background: #DEE2F4 !important;
}

.base-clr-0 {
    background-color: #000000;
}

.base-clr-1 {
    background-color: #98037F;
}

.base-clr-2 {
    background-color: #9B20C2;
}

.base-clr-3 {
    background-color: #3E145C;
}

.base-clr-4 {
    background-color: #3E14D1;
}

.base-clr-5 {
    background-color: #4C4391;
}