/* You can add global styles to this file, and also import other style files */
// styles in src/style directory are applied to the whole page

@import "app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree";
@import "app/drawingBoard/service-planning/available-models-tree/available-models-tree.component";
@import "../node_modules/onap-ui-common/lib/style.css";
//body {
//  [ui-view="content"] {
//    height: 100%;
//  }
//}

@font-face {
  font-family: OpenSans-Bold;
  src: url("../src/assets/fonts/OpenSans/OpenSans-Bold.ttf") format('truetype');
}

@font-face {
  font-family: OpenSans-BoldItlaic;
  src: url("./assets/fonts/OpenSans/OpenSans-BoldItalic.ttf") format('truetype');
}

@font-face {
  font-family: OpenSans-ExtraBold;
  src: url("./assets/fonts/OpenSans/OpenSans-ExtraBold.ttf") format('truetype');
}

@font-face {
  font-family: OpenSans-ExtraBoldItalic;
  src: url("./assets/fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf") format('truetype');
}

@font-face {
  font-family: OpenSans-Italic;
  src: url("./assets/fonts/OpenSans/OpenSans-Italic.ttf") format('truetype');
}

@font-face {
  font-family: OpenSans-Light;
  src: url("./assets/fonts/OpenSans/OpenSans-Light.ttf") format('truetype');
}

@font-face {
  font-family: OpenSans-LightItalic;
  src: url("./assets/fonts/OpenSans/OpenSans-LightItalic.ttf") format('truetype');
}

@font-face {
  font-family: OpenSans-Regular;
  src: url("./assets/fonts/OpenSans/OpenSans-Regular.ttf") format('truetype');
}

@font-face {
  font-family: OpenSans-Semibold;
  src: url("./assets/fonts/OpenSans/OpenSans-Semibold.ttf") format('truetype');
}

@font-face {
  font-family: OpenSans-SemiboldItalic;
  src: url("./assets/fonts/OpenSans/OpenSans-SemiboldItalic.ttf") format('truetype');
}

@font-face {
  font-family: 'icomoon';
  src:  url('./assets/fonts/icomoon.eot?4cilop');
  src:  url('./assets/fonts/icomoon.eot?4cilop#iefix') format('embedded-opentype'),
  url('./assets/fonts/icomoon.ttf?4cilop') format('truetype'),
  url('./assets/fonts/icomoon.woff?4cilop') format('woff'),
  url('./assets/fonts/icomoon.svg?4cilop#icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
}

[class^="icon-"], [class*=" icon-"] {
  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'icomoon', serif !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;
}

html {
  min-height: 100%;
  height: 100%;
  body {
    height: 100%;
    vid-app {
      height: 100%;
      display: flex !important;
      flex-direction: column;
      main {
        &[_ngcontent-c0] {
          font-family: OpenSans-Regular, serif;
        }

        display: flex !important;
        flex-direction: column;
        flex: 1;

      }
    }
  }
}
a {
  color: #03A9F4;
}

tooltip-content {
  .tooltip.left .tooltip-arrow {
    border-left-color: #171f2a;
  }
  .tooltip.bottom .tooltip-arrow {
    border-bottom-color: #171f2a;
  }
  .tooltip-inner {
    background-color: #171f2a;
    text-align: left;
  }
}

service-planning {
  display: flex;
  flex-direction: column;
  flex: 1;
  border: 1px solid #d2d2d2;
}

.required:after {
  content: " * ";
  color: #cf2a2a;
  margin-left: 3px;
}


.error-style {
  border: solid 1px #cf2a2a !important;
  color: #cf2a2a !important;
  outline: none !important;
}

select option:disabled {
  color: #959595;
  cursor: default;
}

select option:disabled {
  color: #959595 !important;
  cursor: default;
}

select option {
  color: black;
}

tooltip-content div {
  word-wrap: break-word !important;
}

body {
  -webkit-touch-callout: default !important;
  -webkit-user-select: auto !important;
  -moz-user-select: element !important;
  -ms-user-select: element !important;
  user-select: element !important;}


.sdc-modal .sdc-modal__wrapper .sdc-modal__header{
  height: 45px !important;
}

#VIEW{
  .notShowOnViewMode {
    display: none !important;
  }
}

#RETRY{
  .notShowOnRetryMode {
    display: none !important;
  }
}

#CREATE{
  .notShowOnCreateMode {
    display: none !important;
  }
}

tooltip-template {
  position: absolute;
  z-index: 9000;
}

.sdc-checkbox label {
  display: inline !important;
}

sdc-checkbox {
  vertical-align: middle !important;
}


.popover.error {
  border-top: 4px solid #cf2a2a !important;
  border-radius: 0;
  padding: 0px 10px 0px 10px;
  box-shadow: 0 0px 10px 0 rgba(0, 0, 0, 0.5);
}

.popover.success {
  border-top: 4px solid #4ca90c !important;
  border-radius: 0;
  padding: 0px 10px 0px 10px;
  box-shadow: 0 0px 10px 0 rgba(0, 0, 0, 0.5);
}

.popover.custom {
  border-top: 4px solid #009fdb !important;
  border-radius: 0;
  padding: 0px 10px 0px 10px;
  box-shadow: 0 0px 10px 0 rgba(0, 0, 0, 0.5);
}

.popover.warning {
  border-top: 4px solid #ffb81c !important;
  border-radius: 0;
  padding: 0px 10px 0px 10px;
  box-shadow: 0 0px 10px 0 rgba(0, 0, 0, 0.5);
}

.popover-arrow.arrow {
  display: none !important;
}


