:root {
  --main-foreground: #111;
  --main-background: #eee;
  --nav-element: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
  :root {
    --main-foreground: #eee;
    --main-background: #222;
    --nav-element: #d0d0d0;
  }
}
html, body {
  min-height: 100%;
}
body {
  background: var(--main-background);
  color: var(--main-foreground);
  font-family: sans-serif;
  margin: 0 0 0 5em;
  padding: 1em;
}
nav {
  position: fixed;
  left: 0;
  top: 0;
  width: 4em;
  height: 100%;
  overflow: hidden;
  background: linear-gradient(90deg, #f9f9f9 80%, #f0f0f0 93%, #ddd);
}
@media (prefers-color-scheme: dark) {
  nav {
    background: linear-gradient(90deg, #222 80%, #181818 93%, #0a0a0a);
  }
}
.forms {
  margin-right: 5em;
  min-height: calc(100vh - 2em);
  display: flex;
  flex-direction: column;
  justify-content: space-evenly;
}
.forms h1 {
  margin-top: 0;
}
.forms form {
  text-align: center;
}
.forms form div {
  margin-top: 1em;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1ex;
}
.forms form > div > div {
  margin: 0;
  flex-direction: column;
}
.forms form label {
  margin-right: 2em;
}
.forms .error {
  border: .1em solid #c00;
  border-radius: .5em;
  width: max-content;
  margin: .5em auto;
  padding: .3em .6em;
}
#menulogo {
  width: 90%;
  margin-top: .5em;
}
nav ul {
  list-style-type: none;
  margin: 1em 0;
  padding: 0;
  width: 90%;
}
nav li {
  padding: .5em;
}
nav svg {
  width: 100%;
  fill: var(--nav-element);
  stroke: var(--nav-element);
}
nav .logout {
  position: absolute;
  bottom: .5em;
  margin: 0;
  width: 90%;
  stroke: #ccc;
  display: flex;
}
nav .logout svg {
  width: 75%;
  margin: auto;
}
#change_feed {
  margin-bottom: 1.5em;
}
ol {
  list-style-type: none;
  margin: 0;
  padding: 0;
}
ol.feed {
  display: flex;
  justify-content: left;
  flex-wrap: wrap;
  gap: 2em 1em;
}
ol.feed li {
  position: relative;
}
ol.feed .actions {
  position: absolute;
  box-sizing: border-box;
  padding: .3em .7em;
  width: 100%;
  background: #0008;
  display: none;
}
ol.feed li:hover .actions {
  display: flex;
}
ol.feed .actions img {
  margin-right: 1em;
  cursor: pointer;
  width: 2em;
  height: 2em;
}
ol.feed .thumbnail {
  width: 16em;
  height: 9em;
  background-size: cover;
  background-position: center;
}
ol.feed .title {
  display: block;
  width: 16em;
  margin-top: 1em;
  overflow: hidden;
}
ol.feed .duration {
  background: #000b;
  display: block;
  position: relative;
  right: .2em;
  top: -.8em;
  float: right;
  padding: .2em .5em;
  border-radius: .1em;
  font-size: .7em;
  color: #fff;
  margin-top: -1em;
}
ol.feed .subscribable_name, ol.feed .item_date {
  font-size: .85em;
  opacity: .7;
  display: block;
  margin-top: 1em;
  max-width: 16em;
}
ol.feed .item_date:nth-child(4) {
  margin-top: .5em;
}
form#change_password {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}
form#change_password > * {
  margin-right: 1em;
}
form#change_password div input {
  display: block;
}
ol.subscriptions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}
ol.subscriptions:empty {
  display: none;
}
ol.subscriptions .info {
  width: 17em;
}
ol.subscriptions .icon {
  width: 5em;
  margin-right: 2em;
  position: relative;
}
ol.subscriptions .icon.channel img {
  height: 5em;
  border-radius: 50%;
}
ol.subscriptions .icon.playlist img {
  width: 5em;
  height: calc(5em / 16 * 9);
  margin-top: calc((5em - (5em / 16 * 9)) / 2);
  margin-bottom: calc((5em - (5em / 16 * 9)) / 2);
  object-fit: cover;
}
ol.subscriptions .icon button.refresh {
  opacity: 0;
  position: absolute;
  top: 0;
  left: 0;
  border: none;
  background: #0008;
  color: #fffd;
  font-size: 3rem;
  line-height: 3rem;
  font-weight: bold;
  transition: opacity 200ms;
}
ol.subscriptions li:hover .icon button.refresh {
  opacity: 1;
}
ol.subscriptions .icon.channel button.refresh {
  width: 5rem;
  height: 5rem;
  border-radius: 50%;
}
ol.subscriptions .icon.playlist button.refresh {
  width: 5rem;
  height: calc(5rem / 16 * 9);
  margin-top: calc((5rem - (5rem / 16 * 9)) / 2);
  margin-bottom: calc((5rem - (5rem / 16 * 9)) / 2);
  font-size: 2rem;
  line-height: 2rem;
}
ol.subscriptions .icon button.refresh span {
  display: block;
  transform: rotate(70deg);
  transition: transform 350ms;
}
ol.subscriptions .name {
  display: block;
  margin-bottom: .5em;
  font-weight: bold;
  font-size: large;
}
ol.subscriptions .date {
  opacity: 0.8;
  font-size: small;
}
ol.subscriptions > li {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  margin: 2em;
}
ol.subscriptions .interactions {
  margin-left: 1ex;
  width: 7em;
}
ol.subscriptions .interactions button {
  display: block;
  width: 100%;
  margin: 0;
  padding: .2em .4em;
  background: #888;
  opacity: 0.1;
  color: #fff;
  border-radius: .3em;
}
li:hover .interactions button {
  opacity: 1.0;
}
li:hover button.unsubscribe {
  background: #f54;
}
li:hover button.subscribe {
  background: #4a5;
}
li:hover button.filter {
  background: #a96;
}
a, a:visited {
  color: var(--main-foreground);
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
}
#status_indicator {
  position: fixed;
  right: 1em;
  top: 1em;
  width: 2em;
  height: 2em;
  opacity: 0;
  transition: opacity 500ms;
}
#status_indicator svg {
  width: 100%;
  margin: auto;
}
dialog.status_messages {
  max-width: min(40em, 80vw);
  background-color: var(--main-background);
  border: .15em solid #aaa;
}
dialog.status_messages::backdrop {
  background-color: #000;
  opacity: .3;
}
dialog.status_messages h2 {
  margin: 0;
  font-size: 1.2em;
}
dialog.status_messages p {
  margin: 1ex 0 2ex;
  font-size: .9em;
}
dialog.status_messages p:last-child {
  margin-bottom: 0;
}
#youtube-icon {
  position: fixed;
  right: 0;
  bottom: 0;
  width: 5em;
  height: calc(5em / 8 * 7);
  border-radius: 1.5em 0 0 0;
  background: var(--main-background);
  box-shadow: 0 0 .5em .5em var(--main-background);
  opacity: 0;
  transition: opacity 0.2s ease-in-out;
}
#youtube-icon:hover {
  opacity: 1.0;
}
#youtube-icon a {
  position: relative;
  left: .3em;
  top: .6em;
  display: block;
  width: 100%;
  height: 100%;
  outline: none;
}
#youtube-icon svg {
  width: 100%;
  height: 100%;
  fill: #bbb;
}
nav, .actions, .duration {
  user-select: none;
}

