@import url("https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,400;0,600;0,700;0,900;1,400&display=swap");
*,
*::before,
*::after {
  box-sizing: border-box;
}

:focus {
  outline: 1px solid var(--color-primary);
}

:root {
  font-family: var(--font-base);
  font-size: var(--font-size-base);
  -webkit-text-size-adjust: none;
}

html,
body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
  scrollbar-color: var(--color-element) transparent;
}

body {
  min-width: 100%;
  background-color: var(--color-body-bg);
  color: var(--color-body-fg);
}

section,
header,
main,
footer {
  display: block;
}

button,
a[href] {
  cursor: pointer;
}

a {
  color: var(--color-primary-bg);
}

button {
  border: none;
}

menu,
h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 0;
  padding: 0;
}

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

pre {
  white-space: pre-wrap;
  margin: 0;
}

img {
  max-width: 100%;
  max-height: 100%;
  height: auto;
  vertical-align: middle;
  font-style: italic;
  background-repeat: no-repeat;
  background-size: cover;
  shape-margin: 1em;
}

video {
  max-width: 100%;
  max-height: 100%;
  height: auto;
}

:root {
  --color-primary: #FFAA2C;
  --color-primary-rgb: 255, 170, 44;
  --color-primary-bg: #FFAA2C;
  --color-primary-bg-rgb: 255, 170, 44;
  --color-primary-fg: #0F0F0F;
  --color-primary-fg-rgb: 15, 15, 15;
  --color-primary-inverted-bg: #0055d3;
  --color-primary-inverted-bg-rgb: 0, 85, 211;
  --color-primary-inverted-fg: #f0f0f0;
  --color-primary-inverted-fg-rgb: 240, 240, 240;
  --color-secondary: #D42CFF;
  --color-secondary-rgb: 212, 44, 255;
  --color-secondary-bg: #D42CFF;
  --color-secondary-bg-rgb: 212, 44, 255;
  --color-secondary-fg: #F4F4F4;
  --color-secondary-fg-rgb: 244, 244, 244;
  --color-secondary-inverted-bg: #2bd300;
  --color-secondary-inverted-bg-rgb: 43, 211, 0;
  --color-secondary-inverted-fg: #0b0b0b;
  --color-secondary-inverted-fg-rgb: 11, 11, 11;
  --color-danger: #FF2F2C;
  --color-danger-rgb: 255, 47, 44;
  --color-danger-bg: #FF2F2C;
  --color-danger-bg-rgb: 255, 47, 44;
  --color-danger-fg: #F4F4F4;
  --color-danger-fg-rgb: 244, 244, 244;
  --color-danger-inverted-bg: #00d0d3;
  --color-danger-inverted-bg-rgb: 0, 208, 211;
  --color-danger-inverted-fg: #0b0b0b;
  --color-danger-inverted-fg-rgb: 11, 11, 11;
  --color-warning: #FF872C;
  --color-warning-rgb: 255, 135, 44;
  --color-warning-bg: #FF872C;
  --color-warning-bg-rgb: 255, 135, 44;
  --color-warning-fg: #0F0F0F;
  --color-warning-fg-rgb: 15, 15, 15;
  --color-warning-inverted-bg: #0078d3;
  --color-warning-inverted-bg-rgb: 0, 120, 211;
  --color-warning-inverted-fg: #f0f0f0;
  --color-warning-inverted-fg-rgb: 240, 240, 240;
  --color-success: #5EFF2C;
  --color-success-rgb: 94, 255, 44;
  --color-success-bg: #5EFF2C;
  --color-success-bg-rgb: 94, 255, 44;
  --color-success-fg: #0F0F0F;
  --color-success-fg-rgb: 15, 15, 15;
  --color-success-inverted-bg: #a100d3;
  --color-success-inverted-bg-rgb: 161, 0, 211;
  --color-success-inverted-fg: #f0f0f0;
  --color-success-inverted-fg-rgb: 240, 240, 240;
  --color-info: #2C93FF;
  --color-info-rgb: 44, 147, 255;
  --color-info-bg: #2C93FF;
  --color-info-bg-rgb: 44, 147, 255;
  --color-info-fg: #F4F4F4;
  --color-info-fg-rgb: 244, 244, 244;
  --color-info-inverted-bg: #d36c00;
  --color-info-inverted-bg-rgb: 211, 108, 0;
  --color-info-inverted-fg: #0b0b0b;
  --color-info-inverted-fg-rgb: 11, 11, 11;
  --color-dark: #0F0F0F;
  --color-dark-rgb: 15, 15, 15;
  --color-dark-bg: #0F0F0F;
  --color-dark-bg-rgb: 15, 15, 15;
  --color-dark-fg: #F4F4F4;
  --color-dark-fg-rgb: 244, 244, 244;
  --color-dark-inverted-bg: #f0f0f0;
  --color-dark-inverted-bg-rgb: 240, 240, 240;
  --color-dark-inverted-fg: #0b0b0b;
  --color-dark-inverted-fg-rgb: 11, 11, 11;
  --color-medium: #969696;
  --color-medium-rgb: 150, 150, 150;
  --color-medium-bg: #969696;
  --color-medium-bg-rgb: 150, 150, 150;
  --color-medium-fg: #0F0F0F;
  --color-medium-fg-rgb: 15, 15, 15;
  --color-medium-inverted-bg: dimgray;
  --color-medium-inverted-bg-rgb: 105, 105, 105;
  --color-medium-inverted-fg: #f0f0f0;
  --color-medium-inverted-fg-rgb: 240, 240, 240;
  --color-light: #F4F4F4;
  --color-light-rgb: 244, 244, 244;
  --color-light-bg: #F4F4F4;
  --color-light-bg-rgb: 244, 244, 244;
  --color-light-fg: #0F0F0F;
  --color-light-fg-rgb: 15, 15, 15;
  --color-light-inverted-bg: #0b0b0b;
  --color-light-inverted-bg-rgb: 11, 11, 11;
  --color-light-inverted-fg: #f0f0f0;
  --color-light-inverted-fg-rgb: 240, 240, 240;
  --color-body: #0F0F0F;
  --color-body-rgb: 15, 15, 15;
  --color-body-bg: #0F0F0F;
  --color-body-bg-rgb: 15, 15, 15;
  --color-body-fg: #F4F4F4;
  --color-body-fg-rgb: 244, 244, 244;
  --color-body-inverted-bg: #f0f0f0;
  --color-body-inverted-bg-rgb: 240, 240, 240;
  --color-body-inverted-fg: #0b0b0b;
  --color-body-inverted-fg-rgb: 11, 11, 11;
  --color-element: #1C1C1C;
  --color-element-rgb: 28, 28, 28;
  --color-element-bg: #1C1C1C;
  --color-element-bg-rgb: 28, 28, 28;
  --color-element-fg: #F4F4F4;
  --color-element-fg-rgb: 244, 244, 244;
  --color-element-inverted-bg: #e3e3e3;
  --color-element-inverted-bg-rgb: 227, 227, 227;
  --color-element-inverted-fg: #0b0b0b;
  --color-element-inverted-fg-rgb: 11, 11, 11;
  --color-scale: 255, 255, 255;
  --color-scale-inverted: 0, 0, 0;
}

:root {
  --font-base: 'Source Sans Pro', sans-serif;
  --font-headers: 'Source Sans Pro', sans-serif;
  --font-legible: 'Source Sans Pro', sans-serif;
  --font-monospace: monospace;
  --font-size-base: 16px;
}

:root::before {
  content: "";
  display: block;
  position: fixed;
  inset: 0 0 0 0;
  background-color: var(--color-body-bg);
  transition: opacity 0.4s ease-in-out;
  z-index: 9999;
}
:root::after {
  display: block;
  position: fixed;
  top: 50%;
  left: 50%;
  z-index: 9999;
  line-height: 1;
  translate: -50% -50%;
  transform-origin: 50% 50%;
  transition: opacity 0.2s ease-in-out, translate 0.2s ease-in-out;
  content: "";
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 128 128'%3E%3Cstyle%3E path %7B fill: none; stroke: %23FFAA2C; stroke-width: 8; animation: spin 2s linear infinite; transform-origin: center; %7D @keyframes spin %7B 0%25 %7B rotate: 0deg; %7D 100%25 %7B rotate: 360deg; %7D %7D %3C/style%3E%3Cpath d='M 4 64 A 60 60 0 1 0 64 4' /%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  width: 6rem;
  height: 6rem;
  backface-visibility: visible;
}
:root.loading::before, :root.loading::after {
  opacity: 1;
}
:root:not(.loading)::before, :root:not(.loading)::after {
  pointer-events: none;
  opacity: 0;
}
:root:not(.loading)::after {
  transition-delay: 0.16s;
}

.book-details {
  position: fixed;
  inset: 0 0 0 0;
  backdrop-filter: blur(8px) brightness(20%);
  padding: 1rem;
  display: flex;
  justify-content: center;
  align-items: flex-start;
}
@media (min-width: 600px) {
  .book-details {
    padding: 2rem;
  }
}
.book-details:not(.active) {
  opacity: 0;
  pointer-events: none;
}
.book-details:not(.active) * {
  pointer-events: none;
}
.book-details > .content {
  position: relative;
  border-radius: 1rem;
  padding: 1rem;
  background-color: var(--color-body);
  width: min(100% - 2rem, 56rem);
  max-height: calc(100% - 2rem);
  overflow-y: auto;
  scrollbar-color: var(--color-element) transparent;
  scrollbar-width: 0.5rem;
}
@media (min-width: 600px) {
  .book-details > .content {
    padding: 2rem;
    width: min(100% - 4rem, 56rem);
  }
}
.book-details > .content > .close-button {
  position: absolute;
  top: 1rem;
  right: 1rem;
  border: none;
  background-color: var(--color-element);
  color: var(--color-element-fg);
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 1.5rem;
}
.book-details > .content > header {
  padding-inline-end: 4rem;
  margin-block-end: 1rem;
}
.book-details > .content > header > h1 {
  font-size: 1.75rem;
  margin: 0;
  line-height: 1.25;
}
.book-details > .content > header > h2 {
  font-size: 1.25rem;
  opacity: 0.66;
  line-height: 1;
  margin: 0;
}
.book-details > .content > header > h3 {
  font-size: 1.125rem;
  opacity: 0.66;
  line-height: 1;
  margin: 0;
}
.book-details > .content > .external-links {
  margin-block-end: 0.75rem;
}
.book-details > .content > .star-rating {
  width: min-content;
  margin-block-end: 1rem;
}
.book-details > .content .editions {
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 2rem;
}
.book-details > .content .editions > li {
  display: grid;
  grid-template-columns: 5rem 1fr;
  grid-template-rows: auto 1fr;
  gap: 0.5rem 1rem;
  width: 100%;
  max-width: 24rem;
}
@media (min-width: 600px) {
  .book-details > .content .editions > li {
    grid-template-columns: 8rem 1fr;
  }
}
.book-details > .content .editions > li:not(:last-child) {
  margin-block-end: 1rem;
}
.book-details > .content .editions > li > img {
  grid-column: 1;
  grid-row: 1/span 2;
}
.book-details > .content .editions > li > header {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: baseline;
  gap: 0 0.5rem;
  grid-column: 2;
  grid-row: 1;
}
.book-details > .content .editions > li > header > h1 {
  font-size: 1.25rem;
  margin: 0;
  line-height: 1.25;
  grid-column: 1/span 2;
}
.book-details > .content .editions > li > header > h2 {
  font-size: 1rem;
  opacity: 0.66;
  line-height: 1;
  margin: 0;
  text-transform: capitalize;
  line-height: 1.25;
}
.book-details > .content .editions > li > header > h3 {
  font-size: 0.875rem;
  font-weight: 500;
  opacity: 0.66;
  line-height: 1;
  margin: 0;
  text-transform: capitalize;
  font-style: italic;
}
.book-details > .content .editions > li > dl {
  grid-column: 2;
  grid-row: 2;
  display: grid;
  grid-template-columns: 1fr auto;
  align-self: flex-start;
  gap: 0.5rem 1rem;
}
.book-details > .content .editions > li > dl dt {
  text-transform: capitalize;
}
.book-details > .content .editions > li > dl dd {
  text-align: end;
}
.book-details > .content .editions > li > dl dd a {
  text-decoration: none !important;
  white-space: nowrap;
}
.book-details > .content .editions > li > dl dd span {
  opacity: 0.33;
  font-style: italic;
  white-space: nowrap;
}

.book-filters {
  width: 100%;
  padding: 1rem;
  display: flex;
  justify-content: flex-end;
  gap: 1rem;
  flex-wrap: wrap;
}
@media (min-width: 600px) {
  .book-filters {
    flex-wrap: nowrap;
  }
}
.book-filters button {
  background-color: var(--color-primary);
  color: var(--color-primary-fg);
  border: none;
  border-radius: 0.5rem;
  padding: 0.375rem 0.75rem;
  line-height: 1;
  font-weight: 600;
  font-size: 1rem;
  font-family: var(--font-base);
}
.book-filters button:not(.active) {
  opacity: 0.66;
}
.book-filters input {
  appearance: none;
  background-color: var(--color-element);
  color: var(--color-element-fg);
  font-size: 1rem;
  font-family: var(--font-base);
  line-height: 1;
  border: none;
  border-radius: 0.5rem;
  padding: 0.375rem 0.75rem;
}
.book-filters .order-by {
  display: flex;
  gap: 0.25rem;
}

.book-list {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 2rem;
  padding: 1rem;
}
@media (min-width: 600px) {
  .book-list {
    padding: 2rem;
  }
}
.book-list .book {
  display: grid;
  grid-template-rows: auto 1fr auto auto;
  gap: 0;
  width: min(100%, 300px);
  padding: 1rem;
  border-radius: 0.5rem;
  background-color: var(--color-element);
}
.book-list .book > a {
  display: block;
  width: 100%;
  cursor: pointer;
}
.book-list .book > a > img {
  width: 100%;
  aspect-ratio: 75/120;
  object-fit: contain;
  object-position: center;
  margin-block-end: 1rem;
}
.book-list .book > a > header {
  color: var(--color-body-fg) !important;
}
.book-list .book header h1 {
  font-size: 1.25rem;
  margin: 0;
  padding: 0;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
}
.book-list .book header h2 {
  font-size: 1.125rem;
  opacity: 0.66;
  margin: 0;
  padding: 0;
}
.book-list .book header h3 {
  display: flex;
  align-items: baseline;
  gap: 0.5ch;
  font-size: 1rem;
  opacity: 0.66;
  margin: 0;
  padding: 0;
}
.book-list .book header h3 span:nth-child(2) {
  font-size: 0.75rem;
}
.book-list .book header {
  margin-block-end: 0.5rem;
}
.book-list .book dl {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem 1rem;
  margin: 0;
  padding: 0;
}
.book-list .book dd {
  text-align: end;
}
.book-list .book dd a {
  text-decoration: none !important;
}

.star-rating {
  display: grid;
  grid-template-columns: auto 4rem;
  grid-template-rows: 2rem auto;
  margin-block-end: 0.5rem;
  gap: 0.125rem 0.5rem;
  white-space: nowrap;
}
.star-rating .stars {
  display: block;
  padding-block-end: 0.25rem;
  color: var(--color-warning);
  align-self: flex-end;
  font-size: 1.25rem;
}
.star-rating .nr {
  color: var(--color-primary);
  font-size: 2rem;
  font-weight: 900;
  justify-self: flex-end;
  line-height: 1;
}
.star-rating .review-count {
  grid-column: 1/span 2;
  opacity: 0.66;
  font-size: 0.875rem;
}

/*# sourceMappingURL=ui.css.map */
