/**
******************************************************************************
* Copyright © 2017-2018 PTA GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* 
*     http://www.eclipse.org/legal/epl-v10.html
* 
******************************************************************************
*/
/* You can add global styles to this file, and also import other style files */
@import url("assets/source-sans-pro/source-sans-pro.css");
@import url("assets/css/main.css");
@import url("assets/css/additional.css");
@import url("assets/css/custom.css");

/* General styling */
body {
    background: #f8fafd;
}

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

.margin-zero {
    margin: 0;
}

.spacer {
    margin-top: 15px;
}

/* General panel styling */
div.panel-group {
    margin: 15px;
}

div.panel-default {
    min-height: 0;
    margin: 15px 0px;
}

div.panel-default > .panel-heading {
    background-color: #f5f8fc;
}


/* General button styling */
.btn {
    border-radius: 6px;
}


/* General table styling */
.table-striped {
    margin: 0;
    padding: 5px;
    vertical-align: middle;
}

.table-striped > tbody > tr:nth-of-type(odd) {
    background: #e9f0f9;
}

.table > thead > tr > th {
    padding: 5px;
    vertical-align: bottom;
}

.table > tbody > tr > td {
    padding: 5px;
    vertical-align: middle;
}


/* General dialog styling */
.mat-dialog-container {
    background: #f8fafd;
}

.dialog {
    overflow: auto;
    width: 75vw;
    height: 75vh;
    margin: 0px 0px 15px 0px;
}


/* Login styling */
.login-outer {
    width: 100%;
    height: 90%;
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f8fafd;
}

.login-inner {
    width: 240px;
    height: 320px;
}

.login-error-message {
    color: red;
}

.login-margin-top5 {
    margin-top: 5px;
}

.login-margin-top10 {
    margin-top: 10px;
}

.maincontent {
    background: #ffffff;
    padding: 0px 0px 1px 0px;
    margin: 15px;
    color: #333333;
}

.maincontent > .row {
    background: #f8fafd;
    margin: 0;
    padding: 0;
}


/* Responsibility dialog styling */
.responsibility-dialog {
    overflow: auto;
    width: 40vw;
    height: auto;
    margin: 0px 0px 15px 0px;
}

.responsibility-column-striped > thead th {
    text-align: center;
}

.responsibility-column-striped > tbody td:nth-of-type(even) {
    background:#f5f8fc;
}

.responsibility-column-striped > tbody td {
    text-align: center;
}

.responsibility-column-striped > tbody td:first-child {
    text-align: left;
}


/* Alert dialog styling */
.alert-dialog {
    overflow: auto;
    width: auto;
    height: auto;
    max-width: 480px;
    margin: 0px 0px 15px 0px;
}


/* Entry dialog styling */
.entry-dialog {
    overflow: auto;
    width: 75vw;
    max-height: 70vh;
    margin: 0px 0px 15px 0px;
}

.entry-textarea {
    resize: none;
    width: 100%;
    height: 10vh;
}

.input-group {
    width: 100%;
}

.entry-input {
    width: 100%;
}


/* Shift change protocol styling */
.shift-change-protocol-panel-body {
    padding: 0px 15px;
    overflow: scroll;
    display: table; 
}

.dropdown {
    cursor: pointer;
}

/* Dropdown logout menu styling */
.dropdown-open {
    color: #537798;
}

.dropdown-open:hover {
    color: #b7cbda;
}

.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:focus {
    color: #0080c0;
    background: #b7cbda;    
}

.dropdown-menu{   
    top:43px;
    min-width: 160px;
    background: #e9f0f9;    
}

.dropdown-menu > .dropdown > a:hover {
    background: #b7cbda;
    color: #0080c0;    
}


/* Logout dialog styling */
.logout-dialog {
    width: 320px;
    height: 240px;
}

div.center {
    text-align: center;
}

div.center-margin {
    text-align: center;
    margin: 15px;
}


/* Search styling */
.search-input {
    width: 30%;
}

span.glyphicon-search {
    color: #b6cbdb;
}
.custom-drop-down .c-token span{
    pointer-events: auto;
position: relative;
}
.custom-drop-down .c-token{
    background: #337ab7 !important;
}

.custom-drop-down .pure-checkbox input[type="checkbox"]:hover + label:before{
    border-color: #337ab7 !important;
}

.custom-drop-down .pure-checkbox input[type="checkbox"] + label:before{  
    color: #337ab7 !important;
}

.custom-drop-down .pure-checkbox input[type="checkbox"] + label:before{
    border: 2px solid #337ab7 !important;
}

.custom-drop-down .pure-checkbox input[type="checkbox"] + label:after{
  background-color: #337ab7 !important;
}

.custom-drop-down .pure-checkbox input[type="checkbox"]:checked + label:before{  
  background:  #337ab7 !important;
}

 .custom-drop-down .selected-list button{        
        box-shadow: none !important;        
}
.tooltip > .tooltip-inner {background-color: #f5f8fc;color: black; word-break: break-all; border: 1px solid grey;}
