@keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

body {
  font: 1em Verdana, Geneva, sans-serif;
  color: WhiteSmoke;
  padding: 0;
  margin: 0;
  background-color: #010;
}

div {
  padding: 0;
  margin: 0;
}

button {
  cursor: pointer;
  padding: .25em .5em;
  border-radius: .25em;
  border: 1px solid gray;
}

.hidden, #tracking {
  display: none;
}

#cookie-consent-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  color: black;
  background: rgba(255, 255, 255, 0.9);
  box-shadow: 0px -3px 4px rgba(0, 0, 0, 0.4);
  text-align: center;
  animation: fadeIn .5s ease-in, slideCookie .5s ease-in;
}

#cookie-consent-banner button {
  font-size: 1em;
}

#cookie-consent-banner > button {
  float: left;
  margin: 1em;
}

@keyframes slideCookie {
  0% {
    height: 0;
  }
  100% {
    height: 3em;
  }
}

/****************************************************************************/
/* App */
/****************************************************************************/
#background {
  position: fixed;
  margin: 0;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: -2;
  background: -webkit-radial-gradient(center, #7c807c, #001400);
  background: -moz-radial-gradient(center, #7c807c, #001400);
  background: -ms-radial-gradient(center, #7c807c, #001400);
  background: radial-gradient(center, #7c807c, #001400);
  background-attachment: fixed;
}

#app {
  position: relative;
  width: 100%;
}

#app > header {
  position: fixed;
  margin: 0;
  left: 0;
  top: 0;
  width: 100%;
  height: 4em;
  padding: 0 0.5em;
  text-transform: lowercase;
  background-color: #eee;
  background-color: rgba(0, 0, 0, 0.85);
  color: #eee;
  text-align: center;
  box-shadow: 3px 3px 4px rgba(0, 0, 0, 0.4);
  z-index: 1000;
  /** Medium display < 1280px */
  /** Small display < 864px */
}

#app > header #site-menu {
  display: none;
  float: left;
  color: whitesmoke;
  background-color: transparent;
  border: none;
  font-size: 2.5em;
}

#app > header h1 {
  float: left;
  font-size: 100%;
  margin: 0;
  margin-top: .25em;
  text-transform: lowercase;
  font: 2.25em Georgia, serif;
}

#app > header h1 a {
  text-decoration: none;
  color: WhiteSmoke;
}

#app > header h1 a span {
  display: inline-block;
}

#app > header img {
  position: absolute;
  top: 0;
  right: 0;
}

#app > header nav {
  display: block;
  position: absolute;
  width: 100%;
  padding-top: 1.125em;
}

#app > header nav a {
  font-size: 1.25em;
  color: DodgerBlue;
  text-decoration: none;
  vertical-align: middle;
}

#app > header nav a.selected, #app > header nav a:hover {
  color: LightSkyBlue;
}

@media only screen and (max-width: 80em) {
  #app > header h1 {
    font-size: 1.75em;
    margin-top: 0;
  }
  #app > header h1 a span {
    display: block;
    text-align: right;
  }
}

@media only screen and (max-width: 54em) {
  #app > header #site-menu {
    display: inline-block;
    padding: 0 .25em;
  }
  #app > header img {
    display: none;
  }
  #app > header h1 {
    margin-top: .25em;
    font-size: 2.25em;
  }
  #app > header h1 a span {
    display: inline-block;
    text-align: left;
  }
  #app > header nav {
    display: none;
    left: 0;
    background-color: black;
    max-width: 25em;
    margin-top: 4em;
    padding: 0 0 .5em 0;
    box-shadow: 3px 3px 4px rgba(0, 0, 0, 0.4);
    animation: fadeIn .5s;
  }
  #app > header nav.visible {
    display: block;
  }
  #app > header nav > span {
    display: none;
  }
  #app > header nav a {
    display: block;
    font-size: 1.75em;
  }
  #app > header nav a:hover {
    background-color: rgba(255, 255, 255, 0.25);
  }
}

@media only screen and (max-width: 25em) {
  #app > header h1 {
    font-size: 1.75em;
  }
}

#app footer {
  margin: 1em 0;
  text-align: center;
  font-size: 0.8em;
  color: silver;
}

#app footer a {
  text-decoration: none;
  color: silver;
}

#main {
  margin: 5em auto 0 auto;
  display: block;
  text-align: center;
  animation: fadeIn 1s ease-out;
}

.widget {
  max-width: 30em;
  min-height: 8em;
  margin: 1em;
  padding: 1em;
  border-radius: 8px;
  color: #201;
  background-color: #eee;
  background-color: rgba(255, 255, 255, 0.2);
  display: inline-block;
  text-align: center;
  text-decoration: none;
  color: WhiteSmoke;
  cursor: pointer;
  box-shadow: 1px 1px 12px rgba(0, 0, 0, 0.5);
  transition: all 125ms ease-in-out;
}

.widget:hover {
  transform: scale(1.02);
}

.feature-widgets {
  display: flex;
  flex-wrap: wrap;
  margin: 0 auto;
  max-width: 60em;
  text-align: center;
  justify-content: center;
}

.feature-widgets .widget {
  text-align: center;
  display: inline-block;
  margin: 1em;
  color: whitesmoke;
  max-width: 10em;
}

.feature-widgets .widget img {
  border: none;
}

.feature-widgets .widget .image-not-available {
  float: left;
  margin-right: .5em;
  width: 128px;
  height: 128px;
  background-color: rgba(0, 0, 0, 0.4);
  color: gray;
}

.feature-widgets .widget header {
  font-size: 1.2em;
  font-weight: bold;
  margin-bottom: .5em;
}

.feature-widgets .widget span {
  color: black;
  text-align: center;
  display: block;
}

@media only screen and (max-width: 54em) {
  .feature-widgets .widget {
    display: block;
    text-align: left;
    margin: 1em auto;
    color: whitesmoke;
    max-width: 30em;
    border-radius: 0;
  }
  .feature-widgets .widget img {
    float: left;
    margin-right: .5em;
  }
  .feature-widgets .widget span {
    text-align: left;
  }
}

@media only screen and (max-width: 80em) {
  .feature-widgets {
    max-width: 50em;
  }
}

article {
  margin: 1em auto;
  padding: 1em;
  border-radius: 4px;
  background-color: #eee;
  background-color: rgba(255, 255, 255, 0.5);
  box-shadow: 1px 1px 24px rgba(0, 0, 0, 0.5);
  color: #201;
  max-width: 46em;
}

@media only screen and (max-width: 54em) {
  article {
    border-radius: 0;
  }
}

article a {
  text-decoration: none;
  border-bottom: 1px dashed black;
  color: #002;
}

article p, article ul, article ol {
  margin: 1em;
  text-align: left;
}

article ul {
  max-width: 38em;
}

article h2, article h3, article h4 {
  max-width: 40em;
  margin: 0;
  text-align: center;
}

article > p.hilight {
  padding: 1em;
  border-radius: 8px;
  background-color: #eee;
  background-color: rgba(255, 255, 255, 0.5);
  box-shadow: 1px 1px 24px rgba(0, 0, 0, 0.5);
}

.index-widgets {
  text-align: center;
  max-width: 46em;
  margin: 0 auto;
}

.index-widgets .widget {
  width: 10em;
  height: 10em;
  background-repeat: no-repeat;
  background-position: center 3em;
}

.index-widgets .widget > div {
  background-image: url(../images/widgets.png);
  margin: 0.5em auto;
  width: 128px;
  height: 128px;
}

.index-widgets .widget.apps > div {
  background-position: 0 0;
}

.index-widgets .widget.games > div {
  background-position: -128px 0;
}

.index-widgets .widget.contact > div {
  background-position: -256px 0;
}

.index-widgets .widget.about > div {
  background-position: -384px 0;
}

.index-widgets .widget.resume > div {
  background-position: 0 -128px;
}

.index-widgets .widget.lab > div {
  background-position: -128px -128px;
}

.index-widgets .widget.sitemap > div {
  background-position: -256px -128px;
}

.start-button {
  background-color: white;
  background-color: rgba(255, 255, 255, 0.3);
  padding: .5em;
  border: 1px solid #0026FF;
  border-radius: 4px;
  box-shadow: 0px 2px 10px #0026FF;
  cursor: pointer;
  -webkit-transition: all .2s ease-in-out;
  -moz-transition: all .2s ease-in-out;
  transition: all .2s ease-in-out;
}

.start-button:hover {
  padding: .55em;
  background-color: rgba(255, 255, 255, 0.5);
}

.app-image {
  float: left;
  margin-right: 10px;
}

.app-description {
  min-height: 240px;
}

.slide-show {
  width: 320px;
  height: 240px;
  max-width: 320px;
  max-height: 240px;
  overflow: hidden;
  background-color: black;
  margin-bottom: 4px;
}

.slide-show img {
  transition: margin-left .5s ease-out;
}

/***************************************/
/* Contact Form */
/***************************************/
#contact-form {
  text-align: left;
}

#contact-form label {
  display: block;
  text-align: left;
  margin: 0.25em;
}

#contact-form p {
  text-align: left;
  margin-left: .25em;
}

#contact-form button {
  font-size: 1.5em;
  margin: 0;
  border: 1px solid black;
  padding: 0.25em;
  box-shadow: 3px 3px 4px rgba(0, 0, 0, 0.4);
  border-radius: 3px;
}

#contact-form input, #contact-form textarea {
  display: block;
  font-size: 1em;
  margin: .25em;
  padding: .25em;
  border: 1px solid gray;
  max-width: 99%;
}

#contact-form textarea {
  width: 99%;
}

/***************************************/
/* Resume */
/***************************************/
.resume {
  text-align: left;
  width: auto;
}

.resume h3 {
  text-transform: uppercase;
  font-size: 1em;
  font-weight: normal;
  border-top: 1px solid black;
  border-bottom: 2px solid black;
}

.resume h4 {
  font-size: 1em;
  font-weight: bold;
  display: inline;
}

.resume-index {
  text-align: left;
  margin: 0 1em;
}

.resume-index a {
  text-decoration: none;
  color: black;
  border-bottom: 1px dashed black;
}

.resume-index ul {
  margin: 0 1em;
  padding: 0 1em;
  animation: fadeIn .5s;
}

/***************************************/
/* About */
/***************************************/
a.about-book {
  float: right;
  margin-left: 1em;
  box-shadow: 0 0 24px rgba(0, 0, 0, 0.4);
  border-bottom: none;
}

.about-jmg > img {
  float: left;
  margin-right: 1em;
  margin-top: -1em;
  box-shadow: 0 0 24px rgba(0, 0, 0, 0.4);
}

.index-widgets .wts.widget > div {
  background-image: url(../images/wtree_square.png);
  background-repeat: no-repeat;
  background-position: center;
}

.index-widgets .jmg.widget > div {
  background-image: url(../images/jmg-square.png);
  background-repeat: no-repeat;
  background-position: center;
}

/***************************************/
/* Site Map */
/***************************************/
.sitemap ul {
  margin: 0 1em;
  padding: 0;
}

.sitemap h3, .sitemap h4 {
  margin: 0;
  padding: 0;
  font-weight: normal;
  text-align: left;
}

.sitemap h3 {
  font-size: 1.3em;
}

.sitemap h4 {
  font-size: 1.1em;
}

.mystery {
  color: transparent;
  border: none;
  max-width: 40em;
}

#promo {
  position: absolute;
  top: 0;
  right: 0;
  width: 310px;
  height: 215px;
  z-index: 99;
  text-align: center;
  animation: slidePromo 2s ease-out;
}

@media only screen and (max-width: 80em) {
  #promo {
    display: none;
  }
}

#promo a.img {
  background-image: url(../images/book-promo.png);
  background-repeat: no-repeat;
  width: 310px;
  height: 215px;
  display: block;
}

#promo a.close {
  color: white;
  text-decoration: none;
  position: absolute;
  top: 0;
  right: 180px;
}

@keyframes slidePromo {
  0% {
    top: -215px;
    opacity: 0;
  }
  50% {
    top: -215px;
    opacity: 0;
  }
  100% {
    top: 0;
    opacity: 1;
  }
}

.article h3, .article h4, .article h5, .article h6 {
  text-align: left;
}

.article li {
  text-align: left;
}

.article img {
  width: 100px;
  height: 100px;
  padding: 4px;
}

.article .images {
  text-align: center;
}

.article .images a {
  border: none;
}

.article > article {
  width: 44em;
}
