@font-face {
  font-family: 'HarmonyOS Sans';
  src: url(./fonts/HarmonyOS_Sans_Regular.ttf) format("truetype");
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'HarmonyOS Sans';
  src: url(./fonts/HarmonyOS_Sans_Bold.ttf) format("truetype");
  font-weight: bold;
  font-style: normal;
}

:root {
  --transition: color 200ms ease-in-out, border-color 200ms ease-in-out;

  /* H3 to h6 and text color */
  --text-color: #111;

  /* H1 and H2 */
  --heading-color: #669982;

  --background-color: #fff;
  --hero-bg-color: #e4f6ee;
  --hero-text-color: #669982;

  /* Buttons */
  --button-color: #fff;
  --button-bg: #109c5c;
  --button-bg-hover: #0e854e;
  --button-bg-active: #0b6e41;

  /* Links */
  --link-color: #07a55d;

  --control-bg: #e4f6ee;
  --control-color: #669982;
  --control-hover: #f2fbf7;
  --control-active: #bee9d6;
  --control-text-active: #669982;

  --shadow: 0 2px 6px rgb(0 0 0 / 25%);

  --alert-bg: #fff2ae;
  --alert-color: #ad6c00;
  --error-bg: #fdcdcd;
  --error-color: #d83e3e;
  --success-bg: #b4f1af;
  --success-color: #33722d;
}

@media (prefers-color-scheme: dark) {
  :root {
    /* H3 to h6 and text color */
    --text-color: #ddd;

    /* H1 and H2 */
    --heading-color: #6c9381;

    --background-color: #141f1a;
    --hero-bg-color: #1b2822;
    --hero-text-color: #6c9381;

    /* Buttons */
    --button-color: #141f1a;
    --button-bg: #109c5c;
    --button-bg-hover: #0e854e;
    --button-bg-active: #0b6e41;

    /* Links */
    --link-color: #07a55d;

    --control-color: #6c9381;
    --control-bg: #1b2822;
    --control-hover: #17231e;
    --control-active: #060908;
    --control-text-active: #6c9381;

    --shadow: 0 2px 6px rgb(0 0 0 / 50%);
  }
}

::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

::-webkit-scrollbar-track {
  border: 1px solid var(--button-bg-active);
}

::-webkit-scrollbar-thumb {
  background: var(--button-bg);
}

::-webkit-scrollbar-thumb:hover {
  background: var(--button-bg-hover);
}

html {
  box-sizing: border-box;
  font-family: 'HarmonyOS Sans', sans-serif;
}

body {
  background-color: var(--background-color);
  color: var(--text-color);
}

h1,
h2 {
  font-weight: 600;
  margin: 0;
  color: var(--heading-color);
}

h3,
h4,
h5,
h6 {
  font-weight: 600;
  margin: 0;
  color: var(--text-color);
}

a {
  text-decoration: none;
  color: var(--link-color);
  border-bottom: 1px solid var(--control-bg);
  transition: var(--transition);
}

a:hover {
  border-color: var(--link-color);
}

.layout {
  display: flex;
  flex-direction: column;
  height: 100vh;
}

.layout main {
  flex-grow: 1;
  display: flex;
  flex-direction: row;
}

main aside {
  display: flex;
  flex-direction: column;
  box-shadow: var(--shadow);
  background-color: var(--background-color);
  z-index: 2;
}

aside h2 {
  font-size: 21px;
  padding: 20px 16px;
}

.accordion {
  width: max-content;
  margin: 0 auto;
}

.accordion-item {
  margin-bottom: 1rem;
}

.accordion-label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1em;
  font-weight: bold;
  cursor: pointer;
}

.label-content {
  display: flex;
  align-items: center;
}

.accordion-label::after {
  content: '\2304';
  font-size: 1.5em;
  width: 1em;
  height: 1em;
  text-align: center;
  transition: all 0.35s;
}

.accordion-content {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s;
}

.icon {
  margin-right: 0.5em;
}

.device-box {
  transition: background-color 200ms ease-in-out;
}

.selected-device,
.selected-device:hover {
  background-color: var(--button-bg-active) !important;
  color: var(--button-color) !important;
}

input[type="checkbox"] {
  display: none;
}

input[type="checkbox"]:checked+.accordion-label::after {
  transform: rotate(-180deg);
}

input[type="checkbox"]:checked~.accordion-content {
  max-height: 1000px;
}

aside ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

aside a {
  display: block;
  border: 0;
  color: var(--text-color);
  border-radius: 10px;
  padding: 1.3em;
  margin: 1em;
}

aside a:hover {
  color: var(--link-color);
  background-color: var(--control-hover);
}

aside a.active {
  background-color: var(--control-active);
  color: var(--control-text-active);
}

main article {
  flex-grow: 1;
}

hr {
  border-style: solid;
  border-color: var(--control-bg);
}

footer {
  background-color: var(--hero-bg-color);
  padding: 20px 0;
  z-index: 3;
}

footer div {
  padding-bottom: 20px;
}

footer p {
  margin: 0;
  padding: 0;
  color: var(--control-color);
}

table.center thead th,
table.center tbody td {
  text-align: center;
}

#toggle-aside,
#toggle-navbar {
  display: none;
}

nav.navbar {
  background-color: var(--background-color);
  position: sticky;
  top: 0;
  z-index: 999;
  box-shadow: var(--shadow);
  display: flex;
  justify-items: center;
  height: 60px;
}

.navbar div {
  display: flex;
  align-items: center;
}

.navbar a.logo {
  padding: 0 20px;
  border: 0;
}

.navbar ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
}

.navbar ul li a {
  background-color: var(--background-color);
  display: inline-block;
  color: var(--control-color);
  text-align: center;
  padding: 21px 16px;
  border: 0;
  transition: var(--transition);
}

.navbar ul li a:hover:not(.active) {
  background-color: var(--control-hover);
  color: var(--link-color);
}

.navbar ul li a.active {
  background-color: var(--control-active);
  color: var(--control-text-active);
}

.container {
  margin-right: auto;
  margin-left: auto;
  padding: 30px 20px;
}

.container h2 {
  margin-bottom: 15px;
}

.button {
  padding: 10px 20px;
  background-color: var(--button-bg);
  color: var(--button-color);
  font-weight: 600;
  display: inline-block;
  transition: var(--transition);
  border-radius: 4px;
  border: 0;
}

.button:hover {
  background-color: var(--button-bg-hover);
}

.button:active {
  background-color: var(--button-bg-active);
}

.banner {
  background-color: var(--hero-bg-color);
  color: var(--hero-text-color);
}

.features {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 30px;
  row-gap: 25px;
}

.screenshot-gallery {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 30px;
  margin-left: auto;
  margin-right: auto;
  justify-content: center;
  align-items: center;
  padding: 10vw;
  padding: 30px 0;
}

.screenshot-gallery img {
  border-radius: 8px;
  flex-basis: 25%;
  width: 200px;
  box-shadow: 0 2px 8px black;
}

.wiki {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 30px;
}

.wiki .for-developers {
  column-span: 2;
}

.device-info {
  display: flex;
  gap: 8px;
}

.instructions {
  flex: 2;
}

.latest-builds {
  display: grid;
  gap: 10px;
}

.build-card {
  border: 1px solid var(--control-bg);
  border-radius: 4px;
}

.build-card .title {
  background-color: var(--control-bg);
  padding: 8px;
}

.specs {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.specs .heading h2,
.specs .heading p {
  text-align: center;
  margin: 0;
}

.specs .heading p {
  font-size: small;
}

.specs img {
  max-width: 200px;
  object-fit: contain;
  align-self: center;
  padding: 1rem 0;
}

.device-info table {
  border-collapse: collapse;
  width: 100%;
}

.device-info th,
td {
  padding: 12px;
}

.device-info tr:not(:last-of-type) {
  border-bottom: 1px solid var(--control-bg);
}

.device-info tbody {
  font-size: small;
}

.device-info tbody p {
  padding: 0;
  margin: 0;
}

.device-info tbody ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.device-info tbody td:nth-child(1) {
  font-weight: bold;
}

.device-info tbody td:nth-child(2) {
  text-align: right;
}

.contribute {
  column-gap: 30px;
  display: grid;
  row-gap: 25px;
}

.error {
  display: flex;
  justify-content: center;
  flex-grow: 1;
  align-items: center;
  flex-direction: column;
  gap: 10px;
}

.error h2 {
  text-align: center;
  padding: 10px 0;
}

.error .buttons {
  display: flex;
  gap: 10px;
  padding: 20px 0;
}

/* Media queries */
@media (min-width: 576px) {
  .contribute {
    grid-template-columns: repeat(1, minmax(0, 1fr));
  }

  .latest-builds {
    grid-template-columns: repeat(1, minmax(0, 1fr));
  }

  .container {
    max-width: 540px;
  }
}

@media (min-width: 768px) {
  .contribute {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .container {
    max-width: 720px;
  }
}

@media (min-width: 992px) {
  .latest-builds {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .container {
    max-width: 960px;
  }
}

@media (min-width: 1200px) {
  .latest-builds {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .container {
    max-width: 1140px;
  }
}

@media (min-width: 1400px) {
  .container {
    max-width: 1320px;
  }
}

/* Mobile overrides */
@media (max-width: 600px) {
  main aside {
    display: none;
    position: fixed;
  }

  .navbar {
    justify-content: space-between;
  }

  .navbar ul {
    flex-direction: column;
    display: none;
    position: absolute;
    margin-top: 60px;
  }

  .navbar ul li {
    width: 100vw;
  }

  .navbar ul li a {
    background-color: var(--control-bg);
    display: block;
  }

  .navbar .label-aside,
  .navbar .label-navbar {
    display: block;
    cursor: pointer;
  }

  .navbar .label-aside .icon-bar {
    display: block;
    height: 6px;
    background-color: var(--control-color);
    margin: 10px;
    transition: all 0.2s;
  }

  .navbar .label-aside .top-bar {
    width: 24px;
    transform: translateY(9px) rotate(45deg);
  }

  .navbar .label-aside .middle-bar {
    opacity: 0;
  }

  .navbar .label-aside .bottom-bar {
    width: 24px;
    transform: translateY(-9px) rotate(-45deg);
  }

  #toggle-aside:checked~.navbar .label-aside .top-bar {
    transform: translateY(9px) rotate(-45deg);
  }

  #toggle-aside:checked~.navbar .label-aside .middle-bar {
    opacity: 0;
  }

  #toggle-aside:checked~.navbar .label-aside .bottom-bar {
    transform: translateY(-9px) rotate(45deg);
  }

  #toggle-aside:checked~main aside {
    display: block;
  }

  .navbar .label-navbar {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    justify-content: center;
    padding-right: 25px;
  }

  .navbar .label-navbar .icon-bar {
    display: block;
    width: 30px;
    height: 2px;
    background-color: var(--control-color);
    margin-top: 2px;
    margin-bottom: 2px;
    transition: all 0.2s;
  }

  .navbar .label-navbar .top-bar {
    transform: rotate(0);
  }

  .navbar .label-navbar .middle-bar {
    opacity: 1;
  }

  #toggle-navbar:checked~.label-navbar .top-bar {
    transform: translateY(8px) rotate(45deg);
  }

  #toggle-navbar:checked~.label-navbar .middle-bar {
    opacity: 0;
  }

  #toggle-navbar:checked~.label-navbar .bottom-bar {
    transform: translateY(-4px) rotate(-45deg);
  }

  #toggle-navbar:checked~ul {
    display: flex;
  }

  .wiki {
    grid-template-columns: repeat(1, minmax(0, 1fr));
  }

  .features {
    grid-template-columns: repeat(1, minmax(0, 1fr));
  }
}

#device-search {
  border-radius: 20px;
  padding-top: 10px;
  padding-bottom: 10px;
  padding-left: 20px;
  margin-left: 15px;
  margin-right: 10px;
  margin-bottom: 15px;
  border: none;
  outline: none;
}
