/* Warm paper palette, with a low-glare dark variant for readers. */
:root {
  color-scheme: light dark;
  --color-bg: #e8e4db;
  --color-text: #3d3935;
  --color-link: #7a6854;
  --color-link-hover: #5c503f;
  --color-link-border: #b5aea3;
  --color-link-border-hover: #8b7f6f;
  --color-target-bg: #d9d4c8;
  --color-border: #c2bdb0;
  --color-rule: #9a9287;
  --color-muted-bg: #ddd9cf;
  --color-accent: #9d7b5a;
  --color-quote-accent: #b8754e;
  --color-code-bg: #35322e;
  --color-code-text: #d6d2c7;
}

:root[data-theme="dark"] {
  --color-bg: #1d1b18;
  --color-text: #d9d2c6;
  --color-link: #c4af92;
  --color-link-hover: #e0cfb6;
  --color-link-border: #6e6253;
  --color-link-border-hover: #a89073;
  --color-target-bg: #2b2822;
  --color-border: #514a40;
  --color-rule: #837767;
  --color-muted-bg: #27241f;
  --color-accent: #b49a76;
  --color-quote-accent: #c48a65;
  --color-code-bg: #12110f;
  --color-code-text: #d8d0c2;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --color-bg: #1d1b18;
    --color-text: #d9d2c6;
    --color-link: #c4af92;
    --color-link-hover: #e0cfb6;
    --color-link-border: #6e6253;
    --color-link-border-hover: #a89073;
    --color-target-bg: #2b2822;
    --color-border: #514a40;
    --color-rule: #837767;
    --color-muted-bg: #27241f;
    --color-accent: #b49a76;
    --color-quote-accent: #c48a65;
    --color-code-bg: #12110f;
    --color-code-text: #d8d0c2;
  }
}

html {
  height: 100%;
  font-size: 17px;
}

body {
  min-height: 100%;
  margin: 0;
  padding-bottom: 30rem;
  overflow-wrap: break-word;
  word-wrap: break-word;
  hyphens: auto;
  line-height: 1.65;
  color: var(--color-text);
  background-color: var(--color-bg);
  font-family: "Quattrocento Sans", sans-serif;
}

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

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

.site-title {
  color: inherit;
  border-bottom: 0;
}

.site-title:hover {
  color: inherit;
  border-bottom: 0;
}

header,
main {
  max-width: 600px;
  margin-right: auto;
  margin-left: auto;
  padding: 0 1rem;
}

header {
  margin-top: 12px;
  margin-bottom: 12px;
}

main {
  margin-top: 2rem;
  margin-bottom: 2rem;
}

header p {
  font-style: italic;
}

.header-meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  margin: 0;
}

.header-meta span {
  font-style: italic;
}

.theme-toggle {
  padding: 0;
  color: var(--color-link);
  background: none;
  border: 0;
  border-bottom: 0;
  border-radius: 0;
  font: inherit;
  font-style: normal;
  line-height: 1;
  cursor: pointer;
}

.theme-toggle:hover,
.theme-toggle:focus-visible {
  color: var(--color-link-hover);
  border-bottom: 0;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: "Marcellus", serif;
  font-weight: 400;
  line-height: 1.3;
  letter-spacing: 0;
}

h1 {
  margin: 1.5em 0 0.75em;
  font-size: 2.5rem;
}

h2 {
  margin: 1.3em 0 0.6em;
  font-size: 2rem;
}

h3 {
  margin: 1.2em 0 0.5em;
  font-size: 1.5rem;
  font-style: italic;
}

p,
ul li,
ol li,
blockquote,
pre,
table,
code,
hr,
img,
figcaption {
  max-width: 68ch;
  font-family: "Quattrocento Sans", sans-serif;
  font-kerning: auto;
  font-optical-sizing: auto;
  font-weight: 400;
}

img {
  display: block;
  max-width: 100%;
}

*:target {
  background: var(--color-target-bg);
}

.post-meta {
  text-align: right;
}

ul#post-list {
  margin: 0;
  padding: 0;
}

#post-list {
  display: grid;
  grid-template-columns: 5rem minmax(0, 2fr) minmax(7rem, 1fr);
  gap: 0.45rem 1.2rem;
  list-style: none;
}

.post-list-item {
  display: contents;
}

.post-list-date,
.post-list-link,
.post-list-series {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.post-list-date.list-header,
.post-list-link.list-header,
.post-list-series.list-header {
  font-weight: 700;
  border-bottom: 2px solid var(--color-rule);
}

.archive-row .post-list-link {
  margin-top: 0.4rem;
}

table {
  width: 100%;
}

table,
th,
td {
  border: 1px solid var(--color-border);
  border-collapse: collapse;
  padding: 0.4rem;
}

th {
  background: var(--color-muted-bg);
  font-weight: 700;
  border-top: 3px solid var(--color-accent);
}

pre,
code {
  font-family: "Fira Code", monospace;
  font-variant-ligatures: normal;
}

pre {
  overflow-x: auto;
  padding: 1em;
  color: var(--color-code-text);
  background: var(--color-code-bg);
  border-left: 3px solid var(--color-link-border-hover);
}

code:not(pre > code) {
  padding: 0.1em 0.2em;
  font-size: 90%;
  color: var(--color-text);
  background: var(--color-muted-bg);
}

blockquote {
  padding: 1.2rem;
  font-style: italic;
  background: var(--color-muted-bg);
  border: 2px solid var(--color-rule);
  border-left: 4px solid var(--color-quote-accent);
}

blockquote p {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 1.1rem;
}

@media (max-width: 640px) {
  html {
    font-size: 16px;
  }

  header,
  main {
    max-width: none;
  }

  h1 {
    font-size: 2.15rem;
  }

  #post-list {
    grid-template-columns: 4.8rem minmax(0, 1fr);
    gap: 0.4rem 0.9rem;
  }

  .post-list-series {
    display: none;
  }
}
