:root {
  color-scheme: light dark;
  scrollbar-color: var(--border-color) var(--body-background);

  --body-background: light-dark(
    oklch(95% 0.01 250),
    oklch(20% 0.01 250)
  );

  --text-color: light-dark(
    oklch(5% 0.01 250),
    oklch(90% 0.01 250)
  );

  --border-color: light-dark(
    oklch(80% 0.01 250),
    oklch(40% 0.01 250)
  );

  --shade-background: light-dark(
    oklch(90% 0.01 250),
    oklch(30% 0.01 250)
  );

  --link-color: light-dark(
    oklch(50% 0.15 250),
    oklch(60% 0.15 250)
  );

  --pl-c: light-dark(#6e7781, #8b949e);
  --pl-c1: light-dark(#0550ae, #79c0ff);
  --pl-e: light-dark(#6639ba, #d2a8ff);
  --pl-en: light-dark(#0550ae, #d2a8ff);
  --pl-k: light-dark(#cf222e, #ff7b72);
  --pl-s: light-dark(#0a3069, #a5d6ff);
  --pl-v: light-dark(#953800, #ffa657);
}

body {
  margin: 1rem;
  font-family: Helvetica, Arial, sans-serif;
  background: var(--body-background);
  color: var(--text-color);
}

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

h1, h2, h3, h4, h5, h6,
p, pre, ul, ol {
  margin: .5em 0;
}

input, select, button {
  background-color: var(--body-background);
  color: var(--text-color);
  border: 1px solid var(--border-color);
}

table {
  width: 100%;
  border-collapse: collapse;
}

tr {
  border: 1px solid var(--border-color);
}

td {
  padding: .25rem;
  vertical-align: top;
  &:first-child {
    padding-left: .5rem;
  }
  &:last-child {
    padding-right: .5rem;
  }
}

nav {
  display: flex;
  margin: .5em 0;
  > a {
    display: block;
    padding-right: .5rem;
    + a {
      padding-left: .5rem;
      border-left: 1px solid var(--border-color);
    }
    &:last-child {
      padding-right: 0;
    }
  }
}

section {
  margin: 1rem 0;
}

.box {
  --box-padding: .5rem;

  margin: 1rem 0;
  border: 1px solid var(--border-color);
  padding: var(--box-padding);

  > *:first-child {
    margin-top: 0;
  }
  > *:last-child {
    margin-bottom: 0;
  }

  > header:first-child {
    margin: calc(-1 * var(--box-padding));
    margin-bottom: 0;
    padding: .5rem;
    border-bottom: 1px solid var(--border-color);
  }

  > footer:last-child {
    margin: 0 calc(-1 * var(--box-padding));
    padding: .5rem;
    border-top: 1px solid var(--border-color);
  }
}

body > footer {
  margin-top: 1rem;
  text-align: center;
}

.icon {
  height: 1lh;
  vertical-align: text-bottom;
}

@media (prefers-color-scheme: dark) {
  .icon {
    filter: brightness(0) invert(1);
  }
}

.repo {
  font-size: 120%;
  font-weight: bold;
}

.avatar {
  float: right;
  clip-path: circle();
}

.branch {
  display: inline-block;
  margin-right: 1rem;
  padding: .2rem;
  border: 1px solid var(--border-color);
}

.ref-selector-button {
  anchor-name: --ref-selector-anchor;
}

.ref-selector-menu {
  position: absolute;
  position-anchor: --ref-selector-anchor;
  position-area: bottom span-right;
  width: 16rem;
  max-height: 20rem;
  overflow-y: auto;
  overflow-wrap: break-word;
  background: var(--body-background);
  border: 1px solid var(--border-color);
  padding: 0.5rem;

  &::backdrop {
    background: transparent;
  }
}

.ref-selector-tabs {
  display: flex;
  margin-bottom: 0.5rem;

  button {
    flex: 1;
    padding: 0.25rem;
    cursor: pointer;
    &.active {
      font-weight: bold;
      border-bottom: 2px solid var(--link-color);
    }
  }
}

.ref-selector-items {
  list-style: none;
  margin: 0;
  padding: 0;

  li {
    padding: 0.2rem 0;
  }
}

.ref-selector-badge {
  margin-left: 0.3rem;
  font-size: 0.75rem;
  opacity: 0.7;
}

.ref-selector-empty,
.ref-selector-more {
  padding: 0.2rem 0;
  font-size: 0.85rem;
}

.placeholder {
  opacity: 0.7;
}

.languages {
  .language-bar {
    display: flex;
    height: .5rem;
    border-radius: .25rem;
    overflow: hidden;

    span {
      /* Keep slivers of tiny languages visible. */
      min-width: 1px;
    }
  }

  .language-list {
    display: flex;
    flex-wrap: wrap;
    gap: .2rem 1rem;
    list-style: none;
    margin: .5rem 0 0;
    padding: 0;
    font-size: 0.85rem;
  }

  .language-dot {
    display: inline-block;
    width: .6rem;
    height: .6rem;
    border-radius: 50%;
  }

  .language-percentage {
    opacity: 0.7;
  }
}

.repo-info {
  .description {
    margin-bottom: .2rem;
  }

  .detail {
    white-space: nowrap;
  }

  div.detail {
    overflow-x: hidden;
    text-overflow: ellipsis;
  }

  span.detail + span.detail {
    margin-left: 1rem;
  }
}

object.pdf {
  display: block;
  width: 100%;
  height: 80vh;
  padding: 0;
}

pre.box {
  /* Instead of scrolling overflow for long lines, grow the box. */
  width: fit-content;

  span:target {
    background: var(--shade-background);
  }
}

.overview, .release, .wiki {
  overflow-wrap: break-word;

  /* This is a bit convoluted: we want the effect of padding but using margins
   * vertically so we get margin collapsing. */
  --box-padding: 1rem;
  padding-top: 0;
  padding-bottom: 0;
  > header:first-child {
    margin-top: 0;
  }
  > :first-child, > header:first-child + * {
    margin-top: 1rem;
  }
  > :last-child {
    margin-bottom: 1rem;
  }

  a {
    text-decoration: underline;
  }

  h1, h2 {
    border-bottom: 1px solid var(--border-color);
  }

  img, video {
    max-width: 100%;
  }

  code, pre {
    background: var(--shade-background);
  }

  pre {
    overflow-x: auto;
    scrollbar-color: var(--border-color) var(--shade-background);
  }
}

.overview > header {
  font-weight: bold;
}

.release > header, .wiki > header {
  display: flex;
  align-items: baseline;
  > :first-child {
    flex-grow: 1;
    font-weight: bold;
  }
}

.wiki > footer {
  /* The wiki's _Footer page is rendered content, not a caption for the page. */
  font-size: .9rem;
}

.wiki-pages {
  summary {
    cursor: pointer;
  }

  ul {
    columns: 16rem;
    list-style: none;
    padding: 0;
  }
}

.timestamp {
  white-space: nowrap;
  font-size: .8rem;
}

.commit {
  display: flex;
  justify-content: space-between;
  padding: 0.5rem;
  border: 1px solid var(--border-color);
  + .commit {
    border-top: none;
  }
}

.commit-author {
  font-size: 0.8rem;
  margin-top: 0.2rem;
}

.commit-sha {
  align-self: center;
  font-size: 0.8rem;
}

/* TODO Strip permalinks? */
svg.octicon-link {
  display: none;
}

.pl-c { color: var(--pl-c); }
.pl-c1 { color: var(--pl-c1); }
.pl-e { color: var(--pl-e); }
.pl-en { color: var(--pl-en); }
.pl-k { color: var(--pl-k); }
.pl-s { color: var(--pl-s); }
.pl-v { color: var(--pl-v); }
.pl-ent { color: var(--pl-k); }
.pl-mh { font-weight: bold; color: var(--pl-en); }
.pl-bu { color: var(--pl-k); }
.pl-ii { color: var(--text-color); background-color: var(--pl-k); }
.pl-pds { color: var(--pl-s); }
.pl-smi { color: var(--text-color); }
