/*! normalize.css v3.0.2 | MIT License | git.io/normalize */

/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
  font-family: sans-serif; /* 1 */
  -ms-text-size-adjust: 100%; /* 2 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/**
 * Remove default margin.
 */

body {
  margin: 0;
}

/* HTML5 display definitions
   ========================================================================== */

/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11
 * and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */

audio,
canvas,
progress,
video {
  display: inline-block; /* 1 */
  vertical-align: baseline; /* 2 */
}

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */

audio:not([controls]) {
  display: none;
  height: 0;
}

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
 */

[hidden],
template {
  display: none;
}

/* Links
   ========================================================================== */

/**
 * Remove the gray background color from active links in IE 10.
 */

a {
  background-color: transparent;
}

/**
 * Improve readability when focused and also mouse hovered in all browsers.
 */

a:active,
a:hover {
  outline: 0;
}

/* Text-level semantics
   ========================================================================== */

/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
 */

abbr[title] {
  border-bottom: 1px dotted;
}

/**
 * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
 */

b,
strong {
  font-weight: bold;
}

/**
 * Address styling not present in Safari and Chrome.
 */

dfn {
  font-style: italic;
}

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari, and Chrome.
 */

h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/**
 * Address styling not present in IE 8/9.
 */

mark {
  background: #ff0;
  color: #000;
}

/**
 * Address inconsistent and variable font size in all browsers.
 */

small {
  font-size: 80%;
}

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

/* Embedded content
   ========================================================================== */

/**
 * Remove border when inside `a` element in IE 8/9/10.
 */

img {
  border: 0;
}

/**
 * Correct overflow not hidden in IE 9/10/11.
 */

svg:not(:root) {
  overflow: hidden;
}

/* Grouping content
   ========================================================================== */

/**
 * Address margin not present in IE 8/9 and Safari.
 */

figure {
  margin: 1em 40px;
}

/**
 * Address differences between Firefox and other browsers.
 */

hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  height: 0;
}

/**
 * Contain overflow in all browsers.
 */

pre {
  overflow: auto;
}

/**
 * Address odd `em`-unit font size rendering in all browsers.
 */

code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}

/* Forms
   ========================================================================== */

/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */

/**
 * 1. Correct color not being inherited.
 *    Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
 */

button,
input,
optgroup,
select,
textarea {
  color: inherit; /* 1 */
  font: inherit; /* 2 */
  margin: 0; /* 3 */
}

/**
 * Address `overflow` set to `hidden` in IE 8/9/10/11.
 */

button {
  overflow: visible;
}

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
 * Correct `select` style inheritance in Firefox.
 */

button,
select {
  text-transform: none;
}

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */

button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button; /* 2 */
  cursor: pointer; /* 3 */
}

/**
 * Re-set default cursor for disabled elements.
 */

button[disabled],
html input[disabled] {
  cursor: default;
}

/**
 * Remove inner padding and border in Firefox 4+.
 */

button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */

input {
  line-height: normal;
}

/**
 * It's recommended that you don't attempt to style these elements.
 * Firefox's implementation doesn't respect box-sizing, padding, or width.
 *
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */

input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
 *    (include `-moz` to future-proof).
 */

input[type="search"] {
  -webkit-appearance: textfield; /* 1 */
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box; /* 2 */
  box-sizing: content-box;
}

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * Define consistent border, margin, and padding.
 */

fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

/**
 * 1. Correct `color` not being inherited in IE 8/9/10/11.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 */

legend {
  border: 0; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Remove default vertical scrollbar in IE 8/9/10/11.
 */

textarea {
  overflow: auto;
}

/**
 * Don't inherit the `font-weight` (applied by a rule above).
 * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
 */

optgroup {
  font-weight: bold;
}

/* Tables
   ========================================================================== */

/**
 * Remove most spacing between table cells.
 */

table {
  border-collapse: collapse;
  border-spacing: 0;
}

td,
th {
  padding: 0;
}
html {
  font-size: 62.5%;
}

body {
  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
  font-size: 1.6rem;
  margin: 0;
}


/*---------------------------------------------------
    Pluggy and msg
---------------------------------------------------*/
#headblock {
  background: url('../img/grid.png');
  padding-bottom: 1rem;
}

#topcontent {
  padding-top: 2.5rem;
  text-align: center;
  max-width: 80rem;
  margin: 0 auto;
}

#pluggy {
  background: transparent url('../img/pluggy.png') no-repeat;
  background-size: contain;
  width: 10rem;
  height: 20rem;
  margin-left: 2.5rem;
}

#discovermessage {
  display: inline-block;
  max-width: 60rem;
  vertical-align: top;
}

#discovermessage h1 {
  background-color: white;
  text-align: left;
  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
}

/*---------------------------------------------------
    Searchbox
---------------------------------------------------*/

#search {
  margin: 2.5rem auto 0 auto;
  border: 2px solid gray;
  background-color: white;
}

#search .searchBox {
  display: block;
  height: 3.5rem;
  width: 100%;
  border: 0;
  background: none;
  outline: 0;
  font-size: 1.4rem;
  padding: 0 5px 0 35px;
  color: #363636;
  background: url('../img/search.png') no-repeat;
  background-position: 5.5px 5.5px;
}

#supportedPlatforms div {
  margin: 12px 2px 2px 0;
  border: 1px solid #363636;
  border-radius: 8px;
  padding: .4em .5em;
  height: 11px;
  font-size: 11px;
  line-height: 11px;
  display: inline-block;
  align-items: center;

}

/*---------------------------------------------------
    Plugin List
---------------------------------------------------*/

.pluginList {
  list-style-type: none;
  padding: 0px;
}

.pluginList li {
  margin: 0 0 2rem 0;
}

/*---------------------------------------------------
    PluginCards
---------------------------------------------------*/
.pluginCard {
  position: relative;
  border: 1px solid #CDCDCD;
  background: white;
  min-height: 3em;
  padding: 0.2rem 1rem 0.5rem 1rem;
}

.pluginCard:after {
  z-index: -1;
  position: absolute;
  content: "";
  bottom: 18px;
  right: 2px;
  left: auto;
  width: 50%;
  top: 80%;
  max-width:300px;
  background: #777;
  -webkit-box-shadow: 0 15px 10px #777;
  -moz-box-shadow: 0 15px 10px #777;
  box-shadow: 0 15px 10px #777;
  -webkit-transform: rotate(3deg);
  -moz-transform: rotate(3deg);
  -o-transform: rotate(3deg);
  -ms-transform: rotate(3deg);
  transform: rotate(3deg);
}

.pluginCard h3 {
  margin: 0 0.2rem 0.1rem 0;
  font-size: 1.5em;
  display: inline-block;
}

.pluginCard a:link,
.pluginCard a:visited {
  text-decoration: none;
  color: #404D58;
}

.pluginCard a:hover,
.pluginCard a:active {
  text-decoration: underline;
}

.featuredPlugin {
  -webkit-box-shadow: inset 3px 0 0 0 #4CC2E4;
  -moz-box-shadow: inset 3px 0 0 0 #4CC2E4;
  box-shadow: inset 3px 0 0 0 #4CC2E4;
  border-left-width: 0px;
}

.pluginCardContents {
  border: 1px solid #363636;
  margin-bottom: 10px;
  position: relative;
  background: white;
}

.primaryContent {
  display: flex;
  display: -webkit-flex;
  flex-direction: column;
  -webkit-flex-direction: column;
}

.primaryContent .header small {
  color: #83878B;
}

.primaryContent .pluginAuthor {
  font-weight: bold;
}

.primaryContent .pluginDesc {
  -webkit-flex-grow: 1;
  flex-grow: 1;
  font-size: 1em;
  color: #404040;
}

.supportedPlatforms {
  width: 75%;
  display: inline-block;
  list-style-type: none;
  text-align: left;
  font-size: 0.8em;
  padding-left: 0;
}

.supportedPlatforms li {
  margin: 0 5px 0 0;
  display: inline-block;
  border: 1px solid #F2F2F2;
  padding: 2px 10px;
  color: #7A828B;
}

.secondaryContent {
  min-height: 7rem;
  width: 100%;
  display: block;
  text-align: right;
  font-size: 0.9em;
  color: #7A828B;
}

.extraInfo p {
  margin-top: 2px;
  margin-bottom: 2px;
}

.extraInfo {
  display: inline-block;
  width: 25%;
}

.clickable {
  cursor: pointer;
}

/*---------------------------------------------------
    Misc
---------------------------------------------------*/

.icon {
  background: url('../img/sprite.png') no-repeat;
}

/*---------------------------------------------------
    Layout - Header
---------------------------------------------------*/
#header {
  position: fixed;
  z-index: 10;
  left: 0;
  right: 0;
  background: #fff;
  border-bottom: 1px solid #ddd;
}
#header .shadow {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -3px;
  height: 3px;
  background: url('../img/shadow.png');
}

.logo {
  top: 7rem;
  width: 11rem;
  height: 3.7rem;
  background-size: 11.2rem 42.5rem;
}

.logo,
.closing {
  background: url('../img/sprite.png') no-repeat;
  -webkit-transition: background 0.25s linear;
  -moz-transition: background 0.25s linear;
  transition: background 0.25s linear;
  background-color: #3b4854;
  background-position: 0 0px;
  position: absolute;
  left: 0;
  top: 5px;
  width: 220px;
  height: 75px;
}
.logo:hover {
  background-color: #4cc2e4;
}
.menu {
  padding: 16px 0;
  float: right;
}
.menu a {
  text-decoration: none;
  -webkit-transition: background 0.25s linear;
  -moz-transition: background 0.25s linear;
  transition: background 0.25s linear;
  padding: 8px;
  margin: 0 8px;
  line-height: 55px;
}
.menu a:hover,
.menu a:link,
.menu a:visited {
  color: #4cc2e4;
}
.menu-dropdown {
  display: none;
  position: absolute;
  right: 16px;
  top: 32px;
  width: 40%;
}
.menu-dropdown select {
  width: 100%;
}

/*---------------------------------------------------
    Code
---------------------------------------------------*/
pre, code {
  font-size: 12px;
  font-family: Consolas, "Liberation Mono", Courier, monospace;
}

code {
  margin: 0 0px;
  padding: 0px 0px;
  white-space: nowrap;
  border: 1px solid #eaeaea;
  background-color: #f8f8f8;
  border-radius: 3px;
}

pre>code {
  margin: 0;
  padding: 0;
  white-space: pre;
  border: none;
  background: transparent;
}

pre {
  background-color: #f8f8f8;
  border: 1px solid #ccc;
  font-size: 1.3rem;
  line-height: 1.9rem;
  overflow: auto;
  padding: 0.6rem 1rem;
  border-radius: 3px;
}

pre code {
  background-color: transparent;
  border: none;
}


/*---------------------------------------------------
    Mobile
---------------------------------------------------*/

/* Extra small devices (phones, less than 768px) */
/* No media query since this is the default in Bootstrap */
.contentwrap {
  margin: 0 auto;
  max-width: 80rem;
}
.menu {
  display: none;
}
.menu-dropdown {
  display: block;
  top: 1.6rem;
}

h2 {
  font-size: 2rem;
  padding-top: 0;
  letter-spacing: 0;
}

.wrap {
  position: relative;
  margin-left: 1.2rem;
  margin-right: 1.2rem;
}

#header,
.header-placeholder {
  height: 5.2rem;
}

.logo {
  top: 0.7rem;
  width: 11rem;
  height: 3.7rem;
  background-size: 11.2rem 42.5rem;
}

#pluggy {
  display: none;
}

#discovermessage {
  height: auto;
  padding: 0 4rem 0 4rem;
}

#discovermessage h1 {
  font-size: 4rem;
}

.icon {
  background-position: 0px -110px;
  background-size: 112px 425px;
  display: block;
  font-size: 2.2rem;
  padding: 2rem 4.8rem 2rem 4.8rem;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

/* Small devices (tablets, 768px and up) */
@media (min-width: 768px) {
  #discovermessage {
    height: 20rem;
    padding: 0 0 0 4rem;
  }
  #discovermessage h1 {
    font-size: 5rem;
  }
  .icon {
    background-position: 0px -220px;
    background-size: auto;
    font-size: 2.4rem;
    padding: 5.4rem 0 4.8rem 7.8rem;
  }
  h2 {
    font-size: 2.2rem;
    padding: 5.4rem 0;
  }
  #pluggy {
    display: inline-block;
  }
}

/* Medium devices (desktops, 992px and up) */
@media (min-width: 992px) {
  h2 {
    font-size: 2.4rem;
    padding-top: 5.4rem 0;
  }
  #header,
  .header-placeholder {
    height: 9rem;
  }
  .menu {
    display: block;
  }
  .menu-dropdown {
    display: none;
  }
  .contentwrap {
    margin: 0 auto;
    max-width: 80rem;
  }
  #wrap,
  .wrap {
    width: auto;
    margin-left: 12rem;
    margin-right: 12rem;
  }
  .logo {
    top: 5px;
    width: 220px;
    height: 75px;
    background-size: auto;
  }
  .icon {
    background-position: 0 -220px;
    padding-left: 78px;
  }
  .icon-about {
    background-position: 0 -220px;
  }
}

/* Large devices (large desktops, 1200px and up) */
@media (min-width: 1200px) {
  h2 {
      padding: 4.8rem 0;
      font-size: 3.4rem;
  }
  .contentwrap {
    max-width: 100rem;
  }
  #wrap,
  .wrap {
    width: 1008px;
    margin: 0 auto;
  }
}
