.cc-window {
  opacity: 1;

  -webkit-transition: opacity 1s ease;
  -moz-transition: opacity 1s ease;
  -ms-transition: opacity 1s ease;
  -o-transition: opacity 1s ease;
  transition: opacity 1s ease;
}

.cc-window.cc-invisible {
  opacity: 0;
}

/* only animate ifhas class 'cc-animate' */
.cc-animate.cc-revoke {
  -webkit-transition: transform 1s ease;
  -moz-transition: transform 1s ease;
  -ms-transition: transform 1s ease;
  -o-transition: transform 1s ease;
  transition: transform 1s ease;
}
.cc-animate.cc-revoke.cc-top {
  transform: translateY(-2em);
}
.cc-animate.cc-revoke.cc-bottom {
  transform: translateY(2em);
}
.cc-animate.cc-revoke.cc-active.cc-top {
  transform: translateY(0);
}
.cc-animate.cc-revoke.cc-active.cc-bottom {
  transform: translateY(0);
}
.cc-revoke:hover {
  transform: translateY(0);
}

.cc-grower {
  /* Initially we don't want any height, and we want the contents to be hidden */
  max-height: 0;
  overflow: hidden;

  /* Set our transitions up. */
  -webkit-transition: max-height 1s;
  -moz-transition: max-height 1s;
  -ms-transition: max-height 1s;
  -o-transition: max-height 1s;
  transition: max-height 1s;
}

/* the popup window */
.cc-window,
.cc-revoke {
  position: fixed;
  overflow: hidden;
  box-sizing: border-box; /* exclude padding when dealing with width */

  font-family: Helvetica, Calibri, Arial, sans-serif;
  font-size: 16px; /* by setting the base font here, we can size the rest of the popup using CSS `em` */
  line-height: 1.5em;

  display: flex;
  flex-wrap: nowrap;

  /* the following are random unjustified styles - just because - should probably be removed */
  z-index: 9998;
}

.cc-revoke {
  z-index: 9999;
}

.cc-window.cc-static {
  position: static;
}

/* 2 basic types of window - floating / banner */
.cc-window.cc-floating {
  padding: 2em;
  width: 100%;
  max-width: 100%; /* 1em == 16px therefore 24em == 384px */
  flex-direction: column;
}
.cc-window.cc-banner {
  z-index: :10000;
  padding: 1em 1.8em;
  width: 100%;
  flex-direction: row;
}

.cc-revoke {
  padding: 0.5em;
}
.cc-revoke:hover {
  text-decoration: underline;
}

.cc-header {
  font-size: 18px;
  font-weight: bold;
}

/* clickable things */
.cc-btn,
.cc-link,
.cc-close,
.cc-revoke {
  cursor: pointer;
}

.cc-link {
  opacity: 0.8;
  display: inline-block;
  border: none;
  padding: 0.2em;
  text-decoration: underline;
}
.cc-link:hover {
  opacity: 1;
}
.cc-link:active,
.cc-link:visited {
  color: initial;
}

.cc-btn {
  display: block;
  padding: 0.4em 0.8em;
  font-size: 0.9em;
  font-weight: bold;
  border-width: 2px;
  border-style: solid;
  text-align: center;
  white-space: nowrap;
}

.cc-highlight .cc-btn:first-child {
  background-color: transparent;
  border-color: transparent;
}

.cc-highlight .cc-btn:first-child:hover,
.cc-highlight .cc-btn:first-child:focus {
  background-color: transparent;
  text-decoration: underline;
}

.cc-close {
  display: block;
  position: absolute;
  top: 0.5em;
  right: 0.5em;
  font-size: 1.6em;
  opacity: 0.9;

  /* seeing as this contains text and not an image, the element taller than it is wide (because it is text) */
  /*  - we want it to be a square, because it's acting as an icon */
  /*  - setting the line height normalizes the height */
  line-height: 0.75;
}
.cc-close:hover,
.cc-close:focus {
  opacity: 1;
}

/* This file should contain styles that modifies the popup layout. */
/* By layout, we mean the physical position of the elements on the popup window, and the margin / padding around those elements. */

.cc-revoke.cc-top {
  top: 0;
  left: 3em;
  border-bottom-left-radius: 0.5em;
  border-bottom-right-radius: 0.5em;
}
.cc-revoke.cc-bottom {
  bottom: 0;
  left: 3em;
  border-top-left-radius: 0.5em;
  border-top-right-radius: 0.5em;
}
.cc-revoke.cc-left {
  left: 3em;
  right: unset;
}
.cc-revoke.cc-right {
  right: 3em;
  left: unset;
}

/**************************************** FLOATING ****************************************/

/* these classes position the floating element */
.cc-top {
  top: 1em;
}
.cc-left {
  left: 1em;
}
.cc-right {
  right: 1em;
}
.cc-bottom {
  bottom: 0;
}

/* links that are direct decendants should be displayed as block */
.cc-floating > .cc-link {
  margin-bottom: 1em;
}

.cc-floating .cc-message {
  display: block;
  margin-bottom: 1em;
}

.cc-window.cc-floating .cc-compliance {
  flex: 1 0 auto;
}

/**************************************** BANNER ****************************************/

.cc-window.cc-banner {
  align-items: center;
}

.cc-banner.cc-top {
  left: 0;
  right: 0;
  top: 0;
}
.cc-banner.cc-bottom {
  left: 0;
  right: 0;
  bottom: 0;
}

.cc-banner .cc-message {
  display: block;
  flex: 1 1 auto;
  max-width: 100%;
  margin-right: 1em;
}

/* COMPLIANCE BOX */

.cc-compliance {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.cc-floating .cc-compliance > .cc-btn {
  flex: 1;
}

.cc-btn + .cc-btn {
  margin-left: 0.5em;
}

/* Categories Layout */
.cc-window.cc-type-categories {
  display       : inline-flex;
  flex-direction: column;
  overflow      : visible;
  .form{
    text-align: right;
  }
  .cc-btn {
    margin: 0;
    &.cc-save {
      margin        : 0;
      display       : inline-block;
    }
  }
}
.cc-categories {
  display: inline-flex;
  .cc-category{
    display  : flex;
    max-width: 100%;
    margin   : 0 2px;
    position : relative;
  }
  .cc-btn {
    border-right: none;
    outline     : none;
    input[type=checkbox]{
      float: left;
      height: 26px;
      width: calc( 100% - 22px );
      display: block;
      position: absolute;
      top: 0;
      left: 2px;
      cursor: pointer;
    }
    &:not(.cc-info):not(.cc-save){
      padding-left: 26px;
    }
  }
  .cc-info {
    border-left : none;
    border-right: 2px solid lightgrey;
    padding     : 4px;
    font-variant: all-small-caps;
    &:focus + .cc-tooltip{
      display: block;
    }
  }
  .cc-tooltip{
    display      : none;
    position     : absolute;
    z-index      : 3;
    width        : 190px;
    bottom       : 46px;
    padding      : 8px;
    border       : thin solid lightgrey;
    box-shadow: 1px 1px 4px rgba( 150, 150, 150, .7 );
    &:after{
      content   : "";
      width     : 10px;
      height    : 10px;
      transform : rotate(45deg);
      position  : absolute;
      bottom    : -7px;
      left      : 10px;
      box-shadow: 2px 1px 1px rgba( 200, 200, 200, .5 );
    }
    p {
      margin: 0;
    }
  }
}

@media print {
  .cc-window,
  .cc-revoke {
    display: none;
  }
}

@media screen and (max-width: 900px) {
  .cc-btn {
    white-space: normal;
  }
}

/* dimensions for 'iPhone6 Plus' and lower */
@media screen and (max-width: 414px) and (orientation: portrait),
  screen and (max-width: 736px) and (orientation: landscape) {
  .cc-window {
    &.cc-top {
      top: 0;
    }
    &.cc-bottom {
      bottom: 0;
    }
    &.cc-banner,
    &.cc-floating,
    &.cc-right,
    &.cc-left {
      left: 0;
      right: 0;
    }
    
    &.cc-banner {
      flex-direction: column;
      align-items: unset;
      .cc-compliance {
        flex: 1 1 auto;
      }
      .cc-message {
        margin-right: 0;
        margin-bottom: 1em;
      }
    }
    &.cc-floating {
      max-width: none;
    }
    &.cc-type-categories {
      flex-direction: column;
    }
    .cc-message {
      margin-bottom: 1em;
    }
    .cc-categories{
      flex-direction: column;
      width: 100%;
      margin-right: 8px;
    }
    .cc-category {
      margin: 4px 0;
      .cc-btn:not(.cc-info){
        width: calc( 100% - 16px);
        min-width: 140px;
      }
    }
  } 
}
@media screen and (max-width: 854px) {
  .cc-window.cc-type-categories .cc-btn.cc-save {
    margin: 8px 0;
  }
}
