/*
 * Copyright (c) 2018 Eclipse Foundation, Inc.
 * 
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 * 
 * Contributors:
 *   Eric Poirier <eric@eclipse.org>
 * 
 * SPDX-License-Identifier: EPL-2.0
*/
.container-photon {
  overflow: hidden;
}
.container-photon h2 {
  font-size: 42px;
}
.container-photon h3 {
  font-size: 28px;
}
#header-row {
  z-index:3;
  position:relative;
}
.header-photon {
  background-image: url(../images/photon-home-bg.jpg);
  position: relative;
  overflow: hidden;
}
.header-photon:after {
  content: "";
  display: block;
  width: 800px;
  height: 800px;
  background-image: url(../images/photon-home-circle-bg.svg);
  position: absolute;
  background-position: top left;
  background-size: 800px;
  top: 0;
  -webkit-animation: spin 120s linear infinite reverse;
  animation: spin 120s linear infinite reverse;
  opacity: 0.4;
  z-index: 1;
}
@-webkit-keyframes spin {
  100% {
    -webkit-transform: rotate(360deg);
  }
}
@keyframes spin {
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
.featured-jumbotron {
  position: relative;
  z-index: 2;
}
.featured-jumbotron h1 {
  font-size: 60px;
  text-transform: uppercase;
  line-height: 0.9;
}
@media (min-width: 768px) {
  .featured-jumbotron h1 {
    font-size: 120px;
  }
}
.featured-jumbotron h1 .small-title {
  font-size: 20px;
  margin-left: -170px;
}
@media (min-width: 768px) {
  .featured-jumbotron h1 .small-title {
    font-size: 30px;
    margin-left: -377px;
  }
}
.btn-photon-primary {
  background-color: #cda034;
  border-color: #cda034;
  color: #fff;
}
.btn-photon-primary:hover {
  color: #fff;
  background-color: #a58129;
  border-color: #a58129;
}
.btn-photon-secondary {
  background-color: #333;
  border-color: #333;
  color: #fff;
}
.btn-photon-secondary:hover {
  color: #fff;
  background-color: #1a1a1a;
  border-color: #1a1a1a;
}
.featured-new-noteworthy {
  text-align: center;
  padding: 20px 0 40px;
}
.featured-new-noteworthy-item {
  position: relative;
}
@media (max-width: 768px) {
  .featured-new-noteworthy-item {
    margin-bottom: 30px;
  }
}
.featured-new-noteworthy-title {
  cursor: pointer;
}
@media (min-width: 769px) {
  .featured-new-noteworthy-read-more {
    display: none;
    background-color: #333;
    padding: 30px;
    color: #fff;
    position: absolute;
    top: 0px;
    -webkit-box-shadow: 0px 1px 3px 0px #4a4a4a;
            box-shadow: 0px 1px 3px 0px #4a4a4a;
    height: 160px;
  }
  .featured-new-noteworthy-read-more .feather-x {
    cursor: pointer;
  }
}
.featured-circle {
  display: block;
  text-align: center;
  background-color: #cda034;
  margin: 0 auto 20px;
}
@media (max-width: 768px) {
  .featured-circle {
    margin-bottom: 10px;
  }
}
.featured-circle .feather {
  color: #fff;
}
.featured-circle-new-noteworthy {
  width: 100px;
  height: 100px;
  border-radius: 100px;
  padding-top: 27px;
  cursor: pointer;
}
.featured-circle-new-noteworthy .feather {
  width: 50px;
  height: 50px;
}
.featured-circle-stats {
  width: 70px;
  height: 70px;
  border-radius: 70px;
  padding-top: 18px;
}
.featured-circle-stats .feather {
  width: 30px;
  height: 30px;
}
.featured-more-videos {
  display: none;
}
.featured-videos {
  background-color: #cda034;
  padding: 20px 0 40px;
  text-align: center;
  color: #fff;
}
.featured-videos h2,
.featured-videos p {
  color: inherit;
}
.featured-stats {
  background-color: #333;
  padding: 20px 0 40px;
  text-align: center;
  color: #fff;
}
.featured-stats h2,
.featured-stats p {
  color: inherit;
}
.featured-stats hr {
  border-color: #4d4d4d;
  margin: 40px 0;
}
.featured-stats .btn-photon-secondary {
  background-color: #171717;
  border-color: #171717;
}
.featured-stats .btn-photon-secondary:hover {
  background-color: #000000;
  border-color: #000000;
}
.featured-stats-icon-container {
  padding-right: 0;
  margin-bottom: 30px;
}
.featured-stats-text-container {
  padding-left: 0;
  text-align: left;
  padding-top: 5px;
  line-height: 1.3;
}
.featured-stats-number {
  font-size: 26px;
}
.featured-download {
  text-align: center;
  padding: 20px 0 40px;
  position: relative;
  background: url(../images/photon-circle.svg);
  background-repeat: no-repeat;
  background-position: center top;
  background-size: 1000px;
}
.featured-webinar {
  background-image: url(../images/photon-webinar-bg.jpg);
  background-size: cover;
  color: #fff;
  padding: 20px 0 40px;
}
.featured-webinar h2,
.featured-webinar h3 {
  color: inherit;
}
.featured-webinar h3 {
  margin-top: 0;
}
.featured-webinar p {
  font-size: 16px;
}
@media (max-width: 768px) {
  .featured-webinar-container-left {
    text-align: center;
  }
}
@media (min-width: 769px) {
  .featured-webinar-container-left {
    border-right: 1px solid;
    padding-right: 30px;
  }
}
@media (max-width: 768px) {
  .featured-webinar-container-right {
    text-align: center;
  }
}
@media (min-width: 769px) {
  .featured-webinar-container-right {
    padding-left: 30px;
  }
}
.featured-social {
  text-align: center;
  padding: 40px 0 10px;
  position: relative;
  background: url(../images/photon-circle.svg);
  background-repeat: no-repeat;
  background-position: center bottom;
  background-size: 1000px;
}
.featured-social-links a,
.featured-social-links a:visited {
  color: #cda034;
}

.featured-footer.background-tertiary {
  background-color:#333;
}
