:root {
  --light-switch-icon: '🌚';
  --light-text: #161619;
  --light-text-secondary: #757575;
  --light-bg: #d6d6d6;
  --light-bg-secondary: #eeeeee;

  --dark-switch-icon: '🌝';
  --dark-text: #ffffff;
  --dark-text-secondary: #aaaaaa;
  --dark-bg: #232327;
  --dark-bg-secondary: #222222;

  --text-1: 1rem;
  --text-2: 1.125rem;
  --text-3: 1.5rem;
  --text-4: 2rem;
  --text-5: 2.375em;
  --space-05: 0.5rem;
  --space-1: 1rem;
  --space-2: 1.5rem;
  --space-3: 2.25rem;
  --space-4: 4rem;
  --space-5: 10rem;
  --border-radius: 2rem;

  --switch-icon: var(--light-switch-icon);
  --color-text: var(--light-text);
  --color-text-secondary: var(--light-text-secondary);
  --color-bg: var(--light-bg);
  --color-bg-secondary: var(--light-bg-secondary);
}

[data-theme='dark'] {
  --switch-icon: var(--dark-switch-icon);
  --color-text: var(--dark-text);
  --color-text-secondary: var(--dark-text-secondary);
  --color-bg: var(--dark-bg);
  --color-bg-secondary: var(--dark-bg-secondary);
}

html,
body,
p,
blockquote,
cite,
h1,
h2,
h3 {
  margin: 0;
  padding: 0;
}

html {
  width: 100%;
  overflow-x: hidden;
}

body {
  background: var(--color-bg);
  color: var(--color-text);
  font: var(--text-2)/1.6 'Inter', sans-serif;
  margin: var(--space-4) auto;
  padding: 0 var(--space-1);
  box-sizing: border-box;
  word-break: break-word;
  max-width: 52rem;
}

*,
*:before,
*:after {
  box-sizing: inherit;
  word-break: inherit;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

img {
  height: auto;
  max-width: 100%;
  border-radius: var(--border-radius);
}

article img {
  margin: var(--space-1) 0;
}

.tags {
  display: inline-block;
  margin: var(--space-05) 0;
  padding: var(--space-05) var(--space-05);
  font-size: var(--text-1);
  background: var(--color-text-secondary);
  border-radius: 0.8rem;
}

a {
  color: inherit;
  text-decoration: underline;
  transition: opacity 0.25s ease;
}

a:hover {
  opacity: 0.5;
}

p {
  margin-top: var(--space-2);
}

h1,
h2,
h3 {
  font-family: 'Inter', sans-serif;
  font-weight: 600;
}

p + h2,
p + h3 {
  margin-top: var(--space-4)
}

h1,
.h1 {
  font-size: var(--text-5);
  line-height: 1.2;
}

h2,
.h2 {
  font-size: var(--text-4);
  line-height: 1.3;
}

h3,
.h3 {
  font-size: var(--text-3);
  line-height: 1.4;
}

.hr {
  margin: var(--space-3) 0;
  overflow: hidden;
  font-weight: 400;
  color: var(--color-text-secondary);
  text-align: center;
  clear: both;
}

.hr.in-book-notes {
  margin-top: var(--space-3);
  clear: none;
}

h1.hr,
h2.hr,
h3.hr {
  margin-bottom: var(--space-3);
}

.hr:before,
.hr:after {
  content: '';
  background-color: var(--color-text-secondary);
  display: inline-block;
  height: 1px;
  position: relative;
  vertical-align: middle;
  width: 50%;
}

.hr:before {
  right: var(--space-1);
  margin-left: -50%;
}

.hr:after {
  left: var(--space-1);
  margin-right: -50%;
}

small,
cite {
  color: var(--color-text-secondary);
  font-size: var(--text-1);
}

blockquote {
  font-size: var(--text-3);
  margin: var(--space-3) 0;
  font-style: italic;
  text-align: center;
}

blockquote em {
  font-weight: bold;
}

cite {
  display: block;
  margin-top: var(--space-1);
  font-size: var(--text-1);
  font-style: normal;
  color: var(--color-text-secondary);
  text-align: right;
}

hr {
  border: 0;
  height: 1px;
  background: var(--color-text-secondary);
  margin: var(--space-3) 0;
}

article hr {
  background: var(--color-bg-secondary);
}

pre {
  max-width: 100%;
  margin: var(--space-2) 0;
  overflow-x: auto;
  background: var(--color-bg-secondary);
  padding: var(--space-2);
  border-radius: var(--border-radius);
  font-size: var(--text-2);
}

p code {
  background: var(--color-bg-secondary);
  padding: 0.1875rem 0.375rem;
  border-radius: var(--border-radius);
  font-size: var(--text-2);
}

.reset {
  list-style: none;
  padding: 0;
  margin: 0;
}

.article ul {
  margin: var(--space-2) 0;
}

.social-links {
  margin-top: var(--space-3);
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--space-1);
}

.social-links li {
  display: inline-block;
}

.social-links i {
  font-size: var(--text-3);
}

.intro img {
  display: flex;
  margin: 0 auto;
  flex: 1 0 auto;
  max-width: 80%;
}

.article {
  margin: var(--space-3) 0 var(--space-4);
}

.article.in-list {
  margin-bottom: var(--space-3);
  clear: both;
}

.article h2 a,
.article h3 a {
  text-decoration: none;
}

.article-details {
  font-family: 'Roboto Mono', Consolas, monospace;
  font-size: var(--text-1);
  color: var(--color-text-secondary);
  display: block;
  margin: var(--space-1) 0;
}

.article:not(.in-list) .article-details {
  margin-bottom: var(--space-3);
}

.article-details .rating-icon {
  margin-right: 0.375rem;
}

.article hr {
  margin: var(--space-3) 0;
}

.subtitle {
  color: var(--color-text-secondary);
  font-style: italic;
}

.read {
  display: inline-block;
  margin-top: var(--space-2);
  font-size: var(--text-3);
}

.book-cover {
  max-height: 15rem;
  max-width: 15rem;
  display: block;
  border: 1px solid var(--color-bg-secondary);
  filter: grayscale(1);
  transition: filter 0.25s ease;
}

.book-cover:hover {
  filter: grayscale(0);
}

.in-list .book-cover {
  display: none;
}

footer {
  font-family: 'Roboto Mono', Consolas, monospace;
  text-align: center;
  font-size: var(--text-1);
}

footer nav {
  color: var(--color-text-secondary);
  margin-top: var(--space-2);
}

footer li {
  display: inline;
}

footer li:not(:last-child)::after {
  content: ' / ';
}

.cut-off-shadow-hack {
  padding: var(--space-1) 0;
}

.theme-switch {
  position: absolute !important;
  height: 1px;
  width: 1px;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
}

.switch-label::before {
  content: var(--switch-icon);
  cursor: pointer;
  transition: text-shadow 0.25s ease;
}

.switch-label:hover::before,
.theme-switch:focus + .switch-label::before {
  text-shadow: 0 0 0.5rem var(--color-text);
}

@media (min-width: 40rem) {
  article h1 {
    margin-top: var(--space-3);
  }

  blockquote {
    margin: var(--space-4) calc(var(--space-3) * -1);
  }

  pre {
    max-width: calc(100% + calc(var(--space-3) * 2));
    margin-left: calc(var(--space-3) * -1);
    margin-right: calc(var(--space-3) * -1);
  }

  .intro {
    display: flex;
    align-items: center;
    justify-content: center;
    max-width: 100%;
    padding: 0 var(--space-1);
  }

  .intro img {
    display: block;
    max-width: 16rem;
  }

  .intro div {
    margin-left: var(--space-3);
    max-width: 30rem;
    flex-shrink: 0;
  }

  .intro div h1 {
    margin-top: 0;
  }

  .book-cover {
    float: right;
    margin: 0 0 var(--space-1) var(--space-1);
  }

  .in-list .book-cover {
    max-height: 8.25rem;
    max-width: 8.25rem;
    display: block;
  }

  img.about-me {
    display: block;
    width: 18rem;
    height: 18rem;
    float: right;
    margin: -10rem -6rem var(--space-1) var(--space-1);
    border-radius: 50%;
    shape-outside: circle(-9rem);
  }
}
