//
// Downloads.less
//
// author: Christopher Guindon <chris.guindon@eclipse.org>
// -------------------------------------------------------
.download-link-1{
  a{
    padding-left:12px;
    border-left:1px solid #fff;
  }
}

.padding-left-0{
  padding-left:0;
}

.icon{
  text-align: center;
  @media (min-width: 768px) {
    text-align: right;
  }
}

@media (max-width: 767px) {
  .xs-sm-text-center{
    text-align: center;
  }
}

.downloadLink-icon{
  text-align: center;
      padding-top:26px;
  @media (min-width: 768px) {
    text-align:right;
  }
}

.downloadLink-content{
  ul{
    margin-bottom:0;
    li{
      padding-bottom:0;
    }
  }
}

@media (min-width: 768px) {
  .downloadLink-content{
    padding-left:0;
  }
  .downloadLink-icon{
    pading-right:0;
  }
}


.ad{
  margin-bottom:2em;
}

.package-row{
  &.zebra{
    background:#fafafa;
  }
  border-top:1px solid #dddddd;
  padding:12px 6px;
  @media ( max-width : 767px) {
    padding:24px 12px;
  }
  .icon{
     @media ( max-width : 767px) {
       margin-bottom:20px;
     }
  }
  .download-icon{
     font-size:3em;
     text-align:right;
     margin-top:-7px;
  }
  &.promo{
    .download-icon{
      margin-top:7px
    }
  }
  .download-link{
     a{
       font-weight:bold;
     }
  }
  h2{
    margin:10px 0 0 0;
    font-weight:700;
    font-size:1.3em;
    a{
      color:#111111;
    }
  }
}

.os-warning{
  padding:10px;
  background:#ffe5b4;
}

/* Download Page */
.download-container{
  .options,
  #download-packages{
    a{
      color: #f7941e;
      font-weight: normal;
    }
  }

  .well{
    border-radius:0;
    border-top:0;
  }

  .default-download{
    .btn-primary{
      margin-bottom:10px;
    }

    .package-row{
      border-top:1px solid #E6E6E6;
      .download-counts{
        background-color:#E6E6E6;
        padding:3px 5px;
        font-size:10px;
      }
      .list-inline{
        margin-left:0;
      }
      p{
        font-size:12px;
      }
      .download{
        .fa-download{
          font-size:20px;
        }
        @media (max-width: 767px) {
          p{
            font-weight:bold;
          }
        }
      }
    }
    .package-row.promo{
      position:relative;
      .more-info{
        position:absolute;
        right:0;
        bottom:0;
        background-color:#F7941E;
        border-radius:5px 0 0 0px;
        padding:0 5px;
        a{
          color:#fff;
          &:hover{
            text-decoration:none;
          }
        }
      }
    }
    h2, h3{
      margin-top:10px;
    }
    h3{
      font-size:21px;
      a{
        color:#2C2255;
      }
    }
    .form-choose-platform{
      color:#fff;
      label{
        @media (min-width: 768px) {
          float:right;
        }
        @media (max-width: 767px) {
          float:left;
        }
        font-weight:normal;
        font-size:12px;
        position:relative;
        top:3px;
        margin-right:10px;
      }
      select{
        font-size:12px;
        @media (min-width: 768px) {
          float:right;
          margin-left:10px;
        }
      }
      @media (max-width: 767px) {
        &.text-right{
          text-align:left;
        }
      }
    }
  }
}


ul.list-inline{
  .divider.white{
    border-left: 1px solid #fff;
  }
  .divider.black{
    border-left: 1px solid #000;
  }
  .divider{
    line-height: 1.4;
    height: 100%;
    height: 15px;
    padding-right: 0;
    padding-left: 0px;
    margin-left: 4px;
    position: relative;
    top: 2px;
  }
}

.no-border{
  border:none;
}

.vertical-align-min-md {
  @media ( min-width : 768px) {
    display: flex;
    align-items: center;
  }
}

/* HACKS/OVERRIDES */
#filter-placeholder{
  margin-top:6px;
  text-transform: capitalize;
  background:#2c2f33;
  color:#a2a8ad;
  border-color: #414346;
  font-size:1.1em;
  ul.ft-menu > li.ft-field {
    margin-right:0;
    &> span.ft-label{
      &:before {
        content: "" !important;
        width: auto;
      }
    }
  }
}

/* Eclipse Installer */
.installer{
  background-image:url(../images/installer-bg.jpg);
  background-size:cover;
  background-position:bottom right;
  color:#fff;
  box-shadow: 0px 9px 4px -8px rgba(0,0,0,0.3) inset;
  .row-eq-height {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    height: 185px;
    overflow:hidden;
  }
  .content{
    padding:30px;
    h2{
      color:#fff;
      font-weight:100;
      font-size:26px;
      margin-top:0;
    }
    p{
      font-size: 18px;
      font-weight: 100;
    }
    ul{
      margin-bottom:0;
      li{
        font-size:16px;
        padding-bottom:0;
      }
    }
  }

  .options{
    text-align:center;
    font-weight:300;
    padding-top: 50px;
    font-size:16px;
    .title{
      font-size:20px;
      padding-bottom:0;
    }
    ul.links{
      li{
        padding:0 5px;
        a {
          font-weight:300;
        }
      }
    }
  }
  .orange{
    color:#F7941E;
  }
}

.header-row{
  padding:6px 6px 4px 6px;
  box-shadow: 0px 3px 2px -1px rgba(0,0,0,0.3);
  z-index: 999;
  position: relative;
  h2{
    font-size:1.5em;
  }
  a{
    color:#fff;
    font-weight:normal;
    &.active{
      font-weight:bold;
      color:#2f2f31;
    }
  }
}

.orange-download-link{
  a{
    color:#f7941e;
  }
}

.download-count-eclipse-installer{
  p{
    padding-top:10px;
  }
  span{
    font-size:18px;
    font-weight:700;
  }
}

.che-installer{
  background-image:url(../images/che-installer-bg.png);
  background-size:cover;
  background-position:bottom center;
  text-align:center;
  padding:40px 20px;
  height:215px;
  overflow:hidden;
  @media ( min-width : 992px) {
    padding:22px 20px;
  }
  @media ( min-width : 1200px) {
    padding:29px 20px;
  }
  .logo{
    margin:0 auto;
  }
  margin-bottom: 2em;
  h2{
    margin-top:0;
  }
  p{
    color:#fff;
    font-size:18px;
    font-weight:300;
    position:relative;
    margin-bottom:30px;
    &:after{
      position:absolute;
      width: 0;
      height: 0;
      border-left: 7px solid transparent;
      border-right: 7px solid transparent;
      border-top: 7px solid #f7941e;
      display:block;
      content:" ";
      left:50%;
      margin-left:-7px;
      margin-top:5px;
    }
  }
}