/*
 * Copyright 2018 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

@import url('/static/css/fonts/VPPixel-Simplified.css');
:root {
  --heading-2-text-size: 32pt;
  --heading-3-text-size: 24pt;
  --heading-4-text-size: 18pt;
  --normal-text-size: 16pt;

  --heading-text-color: #36c659;
  --task-heading-text-color: #51fd7c;
  --checkbox-border-color: var(--task-heading-text-color);
  --normal-text-color: white;
  --login-link-text-color: var(--task-heading-text-color);
  --login-dialog-background-color: #122c0f;

  --toolbar-underline-color: #49e744;
  --toolbar-menu-border-color: #49e744;

  --row-hover-text-color: #9858ad;
  --row-odd-background-color: rgba(4, 127, 0, 0.1);
  --row-border-color: #3ac13a;
  --row-background-color: rgba(60, 255, 0, 0.2);
  --row-hover-background-color: rgba(51, 255, 0, 0.3);

  --min-height: 350px;

  --shadow-height: 100px;
  --shadow-color: rgb(2, 17, 0);

  --main-margin-vertical: 2vh;
  --main-margin-horizontal: 7vw;

  --logo-min-height: 150px;
  --logo-min-width: 150px;
  --logo-max-width: 500px;

  --portrait-min-width: 320px;
  --portrait-logo-min-width: var(--logo-max-width);
  --portrait-logo-min-height: var(--logo-min-height);
  --portrait-dialog-margin: 1%;

  --landscape-dialog-max-width: 50%;
  --landscape-task-max-width: 30%;
  --landscape-logo-max-width: var(--logo-max-width);
  --landscape-logo-min-width: var(--logo-min-width);
  --landscape-logo-min-height: var(--logo-min-height);
  --landscape-toolbar-margin-top: 3vh;
  --landscape-screen-size: 2vh;

  --team-column-min-width: 100pt;
  --team-column-margin: 1vw;
  --team-list-min-height: 400px;
  --team-list-min-width: 600px;

  --dashed-width: 3px;
  --dashed-color: var(--heading-text-color);

  --task-category-min-width: 25ex;
  --task-category-margin: 1%;
  --task-category-width: 30%;

  --task-stats-min-width: 12ex;
  --task-meta-text-size: 12pt;

  --task-dialog-backdrop-color: rgba(0, 0, 0, 0.5);
  --task-dialog-width: 50%;
  --task-dialog-min-width: 30ex;
  --task-dialog-min-height: 50ex;
  --task-dialog-background-color: rgba(25, 51, 18, 0.9);
  --task-dialog-padding-bottom: 1em;
  --task-dialog-link-color: #36c659;
  --task-dialog-footer-link-color: #5dd140;
  --task-dialog-close-button-size: 40px;
  --task-dialog-padding: 5%;
  --task-dialog-max-width: 90%;

  --task-header-min-height: 75px;
  --task-header-padding-horizontal: 2em;
  --task-header-padding-vertical: 1ex;

  --glow-border-color: var(--row-border-color);
  --glow-focus-border-color: white;
  --glow-border-width: 1px;
  --glow-border-blur: 10px;

  --sb-chart-color-1: #f0bf13;
  --sb-chart-color-2: #ec642a;
  --sb-chart-color-3: #d33345;
  --sb-chart-color-4: #fe00fd;
  --sb-chart-color-5: #2730b1;
  --sb-chart-color-6: #65dbfb;
  --sb-chart-color-7: #79c455;
  --sb-chart-color-8: #7181cc;
  --sb-chart-color-9: #f8c180;
  --sb-chart-color-10: #c7cfd9;
}
body {
  background: #1d2030 radial-gradient(rgb(76, 102, 68), #21301d);
  font-family: 'VPPixel-Simplified', monospace;
  margin: 0;
  word-break: break-word;
}
.timewarp {
  width: 280px;
  margin-left: -30px;
}
.flagtext {
  margin-top: -35px; 
  color: #3bf557; 
}
sb-main {
  width: 100%;
  height: 100%;
  background: url(/static/images/background2.png) no-repeat center center fixed,
    url(/static/images/background.jpg) repeat-x;
  background-size: cover;
  display: flex;
  flex-direction: column;
  font-size: var(--normal-text-size);
  color: var(--normal-text-color);
  overflow-y: auto;
  min-height: var(--min-height);
}
sb-main::-webkit-scrollbar {
  display: none;
}
sb-main h2 {
  color: var(--heading-text-color);
  font-size: var(--heading-2-text-size);
  font-weight: normal;
  text-transform: uppercase;
  text-shadow: 0 0 1ex var(--heading-text-color);
}
sb-main h3 {
  color: var(--normal-text-color);
  font-size: var(--heading-3-text-size);
  font-weight: normal;
}
sb-main h4 {
  color: var(--heading-text-color);
  font-size: var(--heading-4-text-size);
  font-weight: normal;
  text-transform: uppercase;
}
sb-main > * {
  margin: var(--main-margin-vertical) var(--main-margin-horizontal);
}
@media (orientation: portrait), (max-width: 850px) {
  sb-toolbar {
    display: flex;
    min-height: var(--portrait-logo-min-height);
    flex-direction: column;
    justify-content: space-evenly;
    margin: 0;
    min-width: var(--portrait-min-width);
  }
  sb-content {
    min-width: var(--portrait-min-width);
  }
  sb-toolbar sb-logo {
    order: 1;
    min-width: var(--portrait-logo-min-width);
    padding: 0;
  }
  sb-toolbar sb-logo::after {
    content: '...';
    float: right;
    font-size: var(--heading-2-text-size);
    justify-content: center;
    flex-direction: column;
    display: flex;
    height: 100%;
  }
  sb-main[data-menu='true'] sb-logo::before {
    content: 'Menu';
    float: left;
    text-shadow: 0 0 1ex var(--heading-text-color);
    color: var(--heading-text-color);
    font-size: var(--heading-2-text-size);
    justify-content: center;
    flex-direction: column;
    display: flex;
    height: 100%;
  }
  sb-main[data-menu='true'] sb-logo::after {
    content: '\00d7';
    font-family: monospace;
    font-size: calc(var(--portrait-logo-min-height) / 2);
  }
  sb-toolbar a {
    display: none;
    flex: 1 0;
    order: 3;
  }
  sb-main[data-menu='true'] sb-toolbar {
    height: calc(100% - var(--shadow-height));
  }
  sb-toolbar > * {
    padding: 0 var(--heading-2-text-size);
  }
  sb-main[data-menu='true'] sb-toolbar a {
    display: flex;
    border: 0 dashed transparent;
    border-top-width: 1px;
    border-bottom-width: 1px;
    text-decoration: none;
    color: var(--normal-text-color);
    font-size: var(--heading-3-text-size);
    justify-content: center;
    flex-direction: column;
    text-align: left;
  }
  sb-main[data-menu='true'] sb-toolbar a:hover {
    border-color: var(--toolbar-menu-border-color);
    background-color: var(--row-odd-background-color);
  }
  sb-main[data-menu='true'] sb-toolbar ~ * {
    display: none;
  }
  sb-task-dialog {
    margin: var(--portrait-dialog-margin);
  }
  sb-login-dialog {
    margin: var(--portrait-dialog-margin);
  }
}
@media (min-width: 850px) and (orientation: landscape) {
  sb-toolbar {
    margin-top: var(--landscape-toolbar-margin-top);
    display: flex;
    justify-content: space-evenly;
    order: 0;
    align-items: center;
    min-height: var(--landscape-logo-min-height);
    margin-bottom: -18px;
  }
  sb-toolbar sb-logo {
    max-width: var(--landscape-logo-max-width);
    min-width: var(--landscape-logo-min-width);
    margin-top: -40px;
    flex: 1;
  }
  sb-toolbar a {
    flex: 0 0 auto;
    text-decoration: none;
    color: var(--normal-text-color);
    display: block;
    border-bottom: 2px solid transparent;
    text-align: center;
  }
  sb-toolbar a:hover {
    border-bottom: 2px solid var(--toolbar-underline-color);
  }

  sb-border {
    position: fixed;
    top: 0;
    bottom: 0;
    right: 0;
    left: 0;
    overflow: hidden;
  }

  sb-task-dialog {
    max-width: var(--landscape-dialog-max-width);
  }
  sb-login-dialog {
    max-width: var(--landscape-dialog-max-width);
  }
  sb-category {
    max-width: var(--landscape-task-max-width);
  }
}
sb-content {
  display: flex;
  flex: 1 0 auto;
}
sb-logo {
  height: var(--logo-min-height);
  flex: 1;
  min-width: var(--logo-min-width);
  background: url(/static/images/logo.png) no-repeat center center;
  background-size: contain;
}
.sb-table {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  flex-shrink: 1;
}
.sb-table > * {
  display: flex;
  align-items: center;
}
.sb-table-row {
  /* flex: 1; */
  outline: 0;
  padding: 1ex 0;
  overflow: hidden;
}
sb-teamlist {
  min-height: var(--team-list-min-height);
  min-width: var(--team-list-min-width);
}
sb-teamlist > * > * {
  flex: 0;
  margin: 0 var(--team-column-margin);
  min-width: var(--team-column-min-width);
}
sb-teamlist > * > :first-child,
sb-teamlist > * > :last-child {
  text-align: center;
}
sb-teamlist .sb-dashed {
  min-width: calc(2 * var(--team-column-min-width) + var(--team-column-margin));
}
.sb-spacer,
sb-teamlist .sb-table-row :nth-child(3) {
  flex: 1;
}
sb-teamlist .sb-table-row[data-rank$='0'],
sb-teamlist .sb-table-row[data-rank$='2'],
sb-teamlist .sb-table-row[data-rank$='4'],
sb-teamlist .sb-table-row[data-rank$='6'],
sb-teamlist .sb-table-row[data-rank$='8'] {
  background-color: var(--row-odd-background-color);
}

sb-main:not([data-show-all='true']) .sb-table-row:not([data-top10='true']) {
  display: none;
}

sb-main[data-show-all='true'] .sb-table-row:not([data-top100='true']) {
  display: none;
}

sb-teamlist .sb-table-row:hover {
  color: var(--row-hover-text-color);
  cursor: default;
}
.sb-dashed {
  border-bottom: var(--dashed-width) dashed var(--dashed-color);
}
h4.sb-load-more {
  text-shadow: 0 0 1ex var(--heading-text-color);
  text-transform: none;
  flex: 0;
  text-align: center;
  position: relative;
  z-index: 2;
  cursor: pointer;
}
sb-categoryList {
  display: flex;
  flex-direction: row;
  width: 100%;
  justify-content: space-evenly;
  flex-wrap: wrap;
  margin-bottom: var(--shadow-height);
}
sb-task:hover {
  background-color: var(--row-hover-background-color);
  cursor: pointer;
}
sb-task:hover sb-task-dialog-container {
  cursor: default;
}
sb-task[data-host=''] .sb-task-host,
sb-quest-task[data-host=''] .sb-task-host {
  display: none;
}
sb-task[data-link=''] .sb-task-link,
sb-quest-task[data-link=''] .sb-task-link {
  display: none;
}
sb-task[data-attachment=''] .sb-task-attachment,
sb-quest-task[data-attachment=''] .sb-task-attachment {
  display: none;
}
sb-task[data-attachment2=''] .sb-task-attachment2,
sb-quest-task[data-attachment2=''] .sb-task-attachment2 {
  display: none;
}
sb-quest-label {
  position: relative;
  margin-left: 35px;
  margin-bottom: -50px;
  margin-right: auto;
}
.sb-task-attachment sb-var {
  display: none;
}
.sb-task-attachment::after {
  content: '[Attachment]';
  color: #bb4ad5;
}
.sb-task-attachment2 sb-var {
  display: none;
}
.sb-task-attachment2::after {
  content: '[Attachment 2]';
  color: #bb4ad5;
}
.sb-task-host::before {
  content: '$ nc ';
}
.sb-task-host {
  color: #bb4ad5;
  margin-left: 1ex;
  white-space: normal;
  word-break: normal;
}
sb-category {
  min-width: var(--task-category-min-width);
  margin: var(--task-category-margin);
  flex-basis: var(--task-category-width);
}
sb-category sb-task {
  background-color: var(--row-background-color);
}
.sb-glow-border {
  box-shadow: 0 0 var(--glow-border-blur) var(--glow-border-width)
      var(--glow-border-color),
    inset 0 0 var(--glow-border-blur) var(--glow-border-width)
      var(--glow-border-color);
  border: var(--glow-border-width) solid var(--glow-border-color);
}
.sb-glow-border:focus {
  outline: none;
  --glow-border-color: var(--glow-focus-border-color);
}
sb-task-details {
  display: flex;
  flex-direction: column;
  flex: 1;
  align-items: flex-start;
  margin: 0;
}
sb-category h2 {
  --heading-text-color: var(--task-heading-text-color);
  align-self: center;
  margin: 0;
  margin-bottom: 1ex;
}
sb-category h3 {
  --heading-text-color: var(--normal-text-color);
  margin: 0;
}
sb-category h4 {
  --heading-text-color: var(--normal-text-color);
  margin: 0;
  text-align: left;
}
sb-task,
sb-quest-task {
  justify-content: space-between;
  padding: 0 1ex;
}
sb-task[data-solved='true'] {
  background: #00600080;
  border-color: #0c0;
}
sb-task[data-solved='true'] sb-task-details,
sb-task[data-solved='true'] sb-task-stats {
  color: var(--normal-text-color);
  --normal-text-color: #0a0;
}
sb-task[data-solved='true'] sb-task-dialog,
sb-quest-task[data-solved='true'] sb-task-dialog {
  --task-dialog-background-color: #003000e0;
  --glow-border-color: #0c0;
  --dashed-color: #0c0;
}
sb-task-stats {
  min-width: var(--task-stats-min-width);
  margin: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  overflow: hidden;
}
sb-meta {
  font-size: var(--task-meta-text-size);
  margin-bottom: 1ex;
}
sb-task-dialog-container {
  position: fixed;
  z-index: 2;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: var(--task-dialog-backdrop-color);
  display: flex;
  justify-content: center;
  overflow: auto;
}
sb-task:not([data-active='true']) sb-task-dialog-container,
sb-quest-task:not([data-active='true']) sb-task-dialog-container {
  display: none;
}
@keyframes errorDialog {
  to {
    --glow-border-color: red;
    --task-dialog-background-color: #800000a0;
    --login-dialog-background-color: #800000a0;
    --dashed-color: red;
  }
}
[data-wrong-flag='true'],
[data-account-error='true'] {
  animation: errorDialog 1s alternate 2;
}
sb-task-dialog {
  flex: 1 1 var(--task-dialog-width);
  min-width: var(--task-dialog-min-width);
  min-height: var(--task-dialog-min-height);
  max-height: 95%;
  overflow: auto;
  align-self: center;
  background-color: var(--task-dialog-background-color);
  display: flex;
  flex-direction: column;
  padding-bottom: var(--task-dialog-padding-bottom);
}
sb-task-dialog p {
  margin: 1ex 0;
}
sb-task-dialog form {
  margin-bottom: 0;
  overflow: hidden;
  min-height: 4em;
}
sb-task-dialog a {
  color: var(--task-dialog-link-color);
  text-decoration: none;
}
sb-task-dialog .sb-task-foot a {
  color: var(--task-dialog-footer-link-color);
  text-decoration: none;
}
sb-task-dialog sb-task-header::after {
  content: '\00d7';
  font-family: monospace;
  display: flex;
  padding-left: 20px;
  flex: 1;
  justify-content: flex-end;
  font-size: var(--task-dialog-close-button-size);
}
sb-task-dialog > * {
  padding: 0 var(--task-dialog-padding);
  max-width: var(--task-dialog-max-width);
  flex: 1 1 auto;
}
input[type='text'] {
  font-family: inherit;
  font-size: large;
  color: var(--normal-text-color);
  width: 94%;
  height: 2em;
  padding: 1em;
  background-color: rgba(0, 0, 0, 0.2);
  display: flex;
}
input[type='checkbox'] {
  height: 0;
  width: 0;
  overflow: visible;
  margin-right: 60px;
}
input[type='checkbox']::before {
  content: ' ';
  height: 20px;
  width: 40px;
  display: block;
  float: left;
  border: 2px solid #666;
  border-radius: 15%;
}
input[type='checkbox']::after {
  content: ' ';
  height: 20px;
  width: 20px;
  display: block;
  position: relative;
  border: 2px solid var(--checkbox-border-color);
  border-radius: 20%;
  left: 0;
}
input[type='checkbox']:checked::after {
  left: 20px;
  background: var(--checkbox-border-color);
}
sb-task-header {
  display: flex;
  align-items: baseline;
  overflow: hidden;
  min-height: var(--task-header-min-height);
  padding: var(--task-header-padding-vertical)
    var(--task-header-padding-horizontal);
  font-size: large;
  max-width: none;
}
sb-task-header h2 {
  --heading-text-color: var(--normal-text-color);
  margin: 0;
}
sb-task-header h3 {
  border: 1px solid var(--task-heading-text-color);
  color: var(--task-heading-text-color);
  border-radius: 10%;
  padding: 0 1ex;
  margin-left: 1em;
  white-space: normal;
  word-break: normal;
}
.sb-task-title {
  display: flex;
  flex-direction: column;
}
.sb-task-foot {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 1ex;
}
.sb-task-foot input[type='submit'] {
  font-family: inherit;
  font-size: var(--heading-4-text-size);
  color: var(--normal-text-color);
  background-color: rgba(0, 0, 0, 0.2);
  padding: 1ex;
}

.sb-account-page {
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
  align-content: center;
  margin: 0;
}

sb-login-dialog {
  display: flex;
  flex-direction: column;
  background: var(--login-dialog-background-color);
  margin-bottom: 1em;
  flex: 0 1 100%;
}

sb-login-dialog > * {
  flex: 1 0 auto;
  padding: 0 5%;
}

sb-login-dialog h3 {
  text-transform: uppercase;
}

sb-login-dialog h4 {
  margin: 0;
}

sb-login-dialog input[type='submit'] {
  background-color: rgba(0, 0, 0, 0.2);
  font-size: var(--heading-3-text-size);
  color: var(--normal-text-color);
  font-family: inherit;
}

sb-login-dialog input[type='text']:not(:invalid) + span {
  display: none;
}

sb-login-dialog label {
  padding-bottom: 1em;
}

sb-login-dialog .sb-email-consent {
  display: flex;
}

sb-login-dialog form {
  display: none;
}

.sb-account-page > div {
  text-transform: uppercase;
  flex: 1 0 100%;
  text-align: center;
}

.sb-account-page a,
sb-readme a {
  text-decoration: none;
  color: var(--login-link-text-color);
}

sb-content#teams {
  flex-direction: column;
}

sb-content#challenges {
  flex-direction: row;
}
sb-content#challenges::after {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  display: block;
  content: ' ';
  box-shadow: 0 calc(-1 * var(--shadow-height)) var(--shadow-height)
      calc(var(--shadow-height) / -2) var(--shadow-color) inset,
    0 0;
  height: var(--shadow-height);
}

.sb-login-link::after {
  content: 'Join a Team';
  display: block;
}

.sb-login-link[data-team-name]::after {
  content: 'Logout [' attr(data-team-name) ']';
}

sb-chart {
  flex: 1 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  align-items: stretch;
}

sb-chart-head {
  flex: 1 0 100%;
  display: flex;
  align-items: center;
}

sb-chart-head > * {
  margin: 0;
}

sb-chart-head .sb-spacer {
  margin: 20pt 12pt;
}

sb-chart sb-chart-labels {
  margin: 0;
  margin-right: 1em;
  padding: 1ex;
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  background-color: rgba(24, 51, 18, 0.3);
  justify-content: space-evenly;
  max-width: 10em;
  overflow: hidden;
}

sb-chart sb-chart-label {
  word-break: normal;
  display: flex;
  align-items: center;
}

sb-chart sb-chart-label::before {
  content: ' ';
  background: var(--sb-chart-color);
  display: block;
  height: 0.75em;
  width: 1.5em;
  border-radius: 20%;
  margin: 0 1ex;
}

.sb-chart-graph {
  flex: 1;
  box-shadow: calc(var(--glow-border-blur) / -2)
      calc(var(--glow-border-blur) / 2) var(--glow-border-blur)
      calc(var(--glow-border-blur) / -2) var(--glow-border-color),
    inset calc(var(--glow-border-blur) / 2) calc(var(--glow-border-blur) / -2)
      var(--glow-border-blur) calc(var(--glow-border-blur) / -2)
      var(--glow-border-color);
  border-bottom: var(--glow-border-width) solid var(--glow-border-color);
  border-left: var(--glow-border-width) solid var(--glow-border-color);
  display: flex;
  background-color: rgba(17, 43, 16, 0.2);
  width: 500px;
}

.sb-chart-graph svg {
  align-self: flex-end;
  flex: 1;
  filter: drop-shadow(0 0 var(--glow-border-blur) var(--glow-border-color));
}
.sb-chart-graph polyline {
  fill: none;
  stroke: var(--sb-chart-color);
  stroke-width: 0.6px;
}
.sb-chart-graph circle {
  fill: transparent;
}
.sb-chart-graph text {
  fill: transparent;
  font-size: 4pt;
}
.sb-chart-graph g circle:hover + text,
.sb-chart-graph g text:hover {
  fill: white;
}
.sb-chart-graph g:hover circle {
  fill: var(--sb-chart-color);
}
.sb-chart-graph rect {
  fill: url(#sb-chart-graph-grid);
  width: 100%;
  height: 100%;
}

.sb-chart-graph svg .sb-chart-graph-grid {
  fill: none;
  stroke: #3ac15160;
  stroke-width: 0.5px;
}

.sb-chart-graph svg:hover .sb-chart-graph-grid {
  stroke-width: 1px;
}

[data-id='rank-1'] {
  --sb-chart-color: var(--sb-chart-color-1);
}
[data-id='rank-2'] {
  --sb-chart-color: var(--sb-chart-color-2);
}
[data-id='rank-3'] {
  --sb-chart-color: var(--sb-chart-color-3);
}
[data-id='rank-4'] {
  --sb-chart-color: var(--sb-chart-color-4);
}
[data-id='rank-5'] {
  --sb-chart-color: var(--sb-chart-color-5);
}
[data-id='rank-6'] {
  --sb-chart-color: var(--sb-chart-color-6);
}
[data-id='rank-7'] {
  --sb-chart-color: var(--sb-chart-color-7);
}
[data-id='rank-8'] {
  --sb-chart-color: var(--sb-chart-color-8);
}
[data-id='rank-9'] {
  --sb-chart-color: var(--sb-chart-color-9);
}
[data-id='rank-10'] {
  --sb-chart-color: var(--sb-chart-color-10);
}

g[data-id='labels'] text {
  fill: #ffffff80;
  font-size: 3pt;
}

sb-quest {
  align-content: flex-start;
  min-width: 500px;
  justify-content: center;
}

sb-quest,
sb-quest-head,
sb-quest-map {
  flex: 1 0 100%;
  display: flex;
  flex-wrap: wrap;
}

sb-quest-head {
  flex: 1 0 100%;
  display: flex;
  align-items: center;
  align-self: flex-start;
  flex-wrap: nowrap;
}

sb-quest-head > * {
  margin: 0 1vw;
}

sb-quest-map {
  justify-content: center;
  align-items: center;
  text-transform: uppercase;
  flex-wrap: nowrap;
  margin-top: 0;
  background: url(/images/plasma_off.gif) no-repeat center center;
  background-size: 21%;
}

sb-quest-map img {
  width: 100vw; 
}

sb-quest-map svg {
  flex: 0 1 600px;
  filter: brightness(1.3) contrast(1.3) saturate(3)
    drop-shadow(0 0 8px #fff) 
    drop-shadow(0 0 20px var(--glow-border-color));
}

#quest-graph g {
  outline: 0;
}

#quest-graph g circle {
  stroke: var(--quest-circle-color);
}

#quest-graph {
  mask: url(#quest-mask);
}

#quest-graph g:not([data-visible='true']) {
  opacity: 0.4;
  cursor: not-allowed;
}

#quest-graph circle,
#quest-graph line {
  stroke-width: 0.75;
}

#quest-graph g[data-solved='true'] circle,
#quest-graph g[data-visible='true'] circle:hover {
  fill: var(--quest-circle-color);
}

#quest-graph g line {
  stroke: #4b8eff;
  stroke-dasharray: 2 1;
  stroke-width: 0.5;
}

#quest-graph g[data-for^='web'] {
  --quest-circle-color: #4b8eff;
}

#quest-graph g[data-for^='misc'] {
  --quest-circle-color: #a570eb;
}

#quest-graph g[data-for^='crypto'] {
  --quest-circle-color: #fa8c7d;
}

#quest-graph g[data-for^='pwn'] {
  --quest-circle-color: #ff86eb;
}

#quest-graph g[data-for^='stego'] {
  --quest-circle-color: #7dfae9;
}

#quest-graph g[data-for^='re'] {
  --quest-circle-color: #e7ce42;
}

sb-quest-legend {
  justify-self: center;
  background-color: rgba(22, 51, 18, 0.9);
  padding: 1ex 1em;
  position: absolute;
  left: auto;
  right: auto;
}

sb-quest-legend span {
  margin: 1ex;
}

@keyframes glow {
  from {
    text-shadow: 0 0 0 transparent;
  }
  to {
    text-shadow: 0 0 3em white;
  }
}

sb-main[data-new-readme='true'] .sb-readme-link {
  animation: glow 1s infinite alternate;
}

sb-quest-power {
  margin-top: 80px;
}

sb-readme {
  display: flex;
  flex-direction: column;
}

sb-update {
  width: 100%;
  outline: 0;
}

sb-update[data-title=''][data-content=''] {
  display: none;
}

sb-readme p sb-var {
  white-space: pre-wrap;
  word-break: normal;
}

@keyframes zoomin {
  from {
    transform: scale(0.1);
  }
  to {
    transform: none;
  }
}

sb-main[data-subpage=''] {
  /* hide everything except dialogs behind corners */
  mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
  -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
}

sb-main[data-content='scoreboard'],
sb-main[data-content='teams'],
sb-main[data-content='readme'] {
  background: url(/images/background.jpg) repeat-x 0% 0% rgba(0, 0, 0, 0);
  background-size: auto 100%;
}
sb-main[data-content='login'],
sb-main[data-content='register'] {
  background: linear-gradient(
    to top,
    transparent,
    transparent 45%,
    rgb(77, 37, 92) 45%,
    rgb(77, 37, 92) 47%,
    transparent 47%,
    transparent 49%,
    rgb(11, 68, 0) 49%,
    rgb(11, 68, 0) 51%,
    transparent 51%,
    transparent 53%,
    rgb(66, 66, 0) 53%,
    rgb(66, 66, 0) 55%,
    transparent 55%),
    url(/images/background.jpg) repeat-x 0% 0% #19171b;
    background-size: auto 100%;
}

sb-main[data-content='challenges'] {
  box-shadow: 0 calc(-2 * var(--shadow-height)) calc(2 * var(--shadow-height))
      calc(-1 * var(--shadow-height)) black inset,
    0 0;
}

sb-main[data-content='home'] {
  background: url(/images/background1.jpg) no-repeat center center fixed;
  background-size: cover;
}
sb-toolbar {
  animation-direction: reverse;
}
sb-main[data-content='home'] sb-toolbar {
  height: 100%;
  flex-direction: column;
  justify-content: center;
  animation: zoomin 1s forwards;
}
sb-main[data-content='home'] sb-toolbar a {
  display: none;
}
sb-main[data-content='home'] sb-logo {
  flex: 0;
  margin-top: -150px;
  min-height: 50%;
  min-width: calc(85% - 2 * var(--heading-2-text-size));
}
sb-main[data-content='home'] sb-toolbar::after {
  content: '[ Click Logo to Enter ]';
  flex: 1;
  max-height: 1em;
  font-size: var(--heading-2-text-size);
  order: 2;
  align-self: center;
}

sb-content {
  animation: zoomin 1s forwards;
  transform-origin: 50% 0%;
}

sb-content#challenges {
  transform-origin: 50% 100%;
}

sb-main:not([data-content='login']) #login,
sb-main:not([data-content='register']) #register,
sb-main:not([data-content='profile']) #profile,
sb-main:not([data-content='teams']) #teams,
sb-main:not([data-content='challenges']) #challenges,
sb-main:not([data-content='scoreboard']) #scoreboard,
sb-main:not([data-content='quest']) #quest,
sb-main:not([data-content='readme']) #readme {
  display: none;
  animation-name: none;
}

sb-main[data-potato='true'],
sb-main[data-potato='true'] *,
sb-main[data-potato='true'] *::after,
sb-main[data-potato='true'] *::before {
  border-radius: 0 !important;
  box-shadow: none !important;
  filter: none !important;
  animation: none !important;
  text-shadow: none !important;
  mask-image: none !important;
  -webkit-mask-image: none !important;
}

@keyframes flicker {
  from {
    --fw-co: #ffffffaa;
  }
  to {
    --fw-co: #ffffffff;
  }
}

@keyframes fw {
  0% {
    --fw-sh: 0;
    bottom: 0;
    right: 50%;
    width: 0;
    opacity: 0.5;
    background: white;
    border-radius: 50%;
  }
  40% {
    --fw-sh: 1em;
    bottom: 40vh;
    right: 50%;
    width: 5px;
    opacity: 1;
    background: transparent;
    border-radius: 50%;
  }
  50% {
    --fw-sh: 2em;
    bottom: 40vh;
    right: 40%;
    width: 20%;
    opacity: 1;
  }
  70% {
    --fw-sh: 3em;
    bottom: 40vh;
    right: 25%;
    opacity: 0.01;
    width: 50%;
  }
  100% {
    --fw-sh: 5em;
    bottom: 40vh;
    right: 0;
    opacity: 0;
    width: 100%;
  }
}
.fw {
  display: none;
  position: absolute;
  filter: drop-shadow(0 0 5px whitesmoke);
  margin: 0;
  padding: 0;
}
.fw * {
  fill: transparent;
  stroke: var(--fw-co);
  stroke-dasharray: 0.05 2;
  stroke-linecap: round;
  stroke-width: 0.5;
}
sb-main[data-quest-done='true'] .fw {
  animation: fw 7s 1 linear, flicker 0.1s infinite alternate;
  display: block;
  bottom: 0;
  width: 0;
}
sb-team {
  order: var(--rank);
}

.sb-load-more::after {
  content: '[ Load More ]';
}

[data-show-all='true'] .sb-load-more::after {
  content: '[ Show Less ]';
}

[data-click] {
  cursor: pointer;
}

template {
  display: none !important;
}

.soundBox {
  position: absolute;
  top: 7px;
  left: 15px;
  cursor: pointer;
}

.gameBox {
  position: absolute;
  top: 10px;
  right: 26px;
  cursor: pointer;
  width: 37px;
  height: 52px;
}

.gameBox img {
  float: right;
}
