:root {
  --color-text: #1a1a1a;
  --color-title: #d2c4ff;
  --color-bg: #ffe4e1;
  --color-metadata: #ffd4d4;
  --color-link: #8c2626;
  --color-code-bg: #fecbcb;
  --color-tag-writing: #d2c4ff;
  --color-tag-project: #c4e0d2;
  --color-tag-reading: #c4d4e8;
  --color-filter-btn: #b35a5a;
  --color-filter-btn-active: #9c3a3a;
  --color-border: #d4c4c0;
}

a {
  color: var(--color-link);
  text-decoration: underline;
}

ul {
  padding-left: 20px;
  list-style-position: outside;
}

li {
  margin-top: 0.3em;
  margin-bottom: 0.3em;
}

body {
  padding: 3ch;
  margin: 0 auto;
  max-width: 108ch;
  display: flex;
  flex-direction: column;
  align-items: center;
  background: var(--color-bg);
  color: var(--color-text);
}

header {
  width: 100%;
}

main {
  width: 100%;
  flex-grow: 1;
}

footer {
  width: 100%;
}

/* Theme switcher */

.theme-switcher {
  width: 100%;
  text-align: right;
  margin-bottom: 0.5em;
  font-size: 0.85em;
  opacity: 0.6;
}

.theme-switcher select {
  font-family: inherit;
  font-size: inherit;
  background: var(--color-bg);
  color: var(--color-text);
  border: 1px solid rgba(128, 128, 128, 0.3);
  padding: 0.2em 0.4em;
}

/* Homepage title bar */

#index-title-container {
  background: var(--color-title);
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-left: 1em;
}

#index-title-text {
  margin: 0;
}

#index-title-image {
  height: 50px;
}

/* Post filters */

.post-filters {
  display: flex;
  gap: 0.5em;
  margin-bottom: 1em;
}

.post-filter {
  background: none;
  border: 1px solid var(--color-filter-btn);
  color: var(--color-filter-btn);
  padding: 0.3em 0.8em;
  cursor: pointer;
  font-size: inherit;
  font-family: inherit;
  opacity: 0.7;
}

.post-filter:hover {
  opacity: 1;
}

.post-filter.active {
  background: var(--color-filter-btn-active);
  color: var(--color-bg);
  opacity: 1;
}

.post-filter.active:hover {
  background: var(--color-filter-btn);
}

/* Post tags */

.post-tag {
  display: inline-block;
  font-size: 0.8em;
  font-style: normal;
  padding: 0.1em 0.5em;
  margin-right: 0.4em;
  vertical-align: middle;
}

.post-tag-writing {
  background: var(--color-tag-writing);
}

.post-tag-project {
  background: var(--color-tag-project);
}

.post-tag-reading {
  background: var(--color-tag-reading);
}

/* Post lists */

.post-list-item {
  margin-bottom: 15px;
}

.post-list-item-title a {
  text-decoration: none;
}

.post-list-item-subtitle {
  opacity: 0.6;
}

/* Theme picker */

.theme-picker {
  border: 1px solid var(--color-border);
  padding: 1em;
  margin-bottom: 1.5em;
}

.theme-picker-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1em;
  margin-bottom: 0.8em;
}

.theme-picker label {
  display: flex;
  align-items: center;
  gap: 0.4em;
  font-size: 0.9em;
}

.theme-picker input[type="color"] {
  width: 2em;
  height: 2em;
  border: 1px solid rgba(0, 0, 0, 0.2);
  padding: 0;
  cursor: pointer;
  background: none;
}

#theme-reset {
  background: none;
  border: 1px solid rgba(0, 0, 0, 0.2);
  padding: 0.3em 0.8em;
  cursor: pointer;
  font-size: 0.85em;
  font-family: inherit;
}

/* Article layout */

article h2,
article h3 {
  position: relative;
}

article h2 .heading-anchor,
article h3 .heading-anchor {
  text-decoration: none;
  opacity: 0;
  margin-left: 0.3em;
  font-weight: normal;
}

article h2:hover .heading-anchor,
article h3:hover .heading-anchor {
  opacity: 0.4;
}

article h2 .heading-anchor:hover,
article h3 .heading-anchor:hover {
  opacity: 1;
}

@media (hover: none) {
  article h2 .heading-anchor,
  article h3 .heading-anchor {
    opacity: 0.4;
  }
}

article > img,
article > p > img {
  width: 100%;
}

article .article-title {
  background: var(--color-title);
  padding: 5px;
  margin-bottom: 0.3em;
}

article .article-metadata {
  margin-bottom: 1.5em;
  opacity: 0.7;
  border: 1px solid var(--color-border);
  padding: 0.6em 0.8em;
}

article .article-date {
  vertical-align: middle;
}

article .article-source {
  margin-top: 0.3em;
}

article .article-toc {
  border: 1px solid var(--color-border);
  padding: 0.6em 0.8em;
  margin-bottom: 1.5em;
}

article .article-toc summary {
  cursor: pointer;
  font-weight: bold;
  font-size: 0.9em;
  opacity: 0.7;
}

article .article-toc nav {
  margin-top: 0.5em;
}

article .article-toc nav ul {
  list-style: none;
  padding-left: 1em;
  margin: 0;
}

article .article-toc nav > ul {
  padding-left: 0;
}

article .article-toc nav li {
  margin-top: 0.3em;
  margin-bottom: 0;
}

article .article-toc nav > ul > li > ul {
  padding-left: 1.5em;
}

article code {
  background-color: var(--color-code-bg);
  padding: 0.2em 0.4em;
  font-size: 0.9em;
}

article pre {
  background-color: var(--color-code-bg);
  overflow-x: auto;
  padding: 1em;
}

article pre code {
  display: block;
  white-space: pre;
  padding: 0;
  background: none;
  font-size: inherit;
}
