body {
  font-family: system-ui, sans-serif;
  background: radial-gradient(circle at 6dvw 50%, hsl(222deg 50% 20%) 300px, hsl(240deg 50% 5%));
  color: hsl(222deg 50% 80%);
  min-block-size: 100dvh;
  margin-block: 0;
  margin-inline-start: clamp(8px, 6dvw, 240px);
  display: grid;
}

header {
  align-self: end;
  display: flex;
  align-items: center;
  margin-block-start: 8px;
}

h1 {
  margin: 0;
}

main {
  align-self: start;
  margin-block-end: 8px;
}

p {
  font-size: 1.2rem;
}

table {
  display: none;
  border-collapse: collapse;
}

@media (min-width: 475px) {
  .mobile-instructions {
    display: none;
  }

  table {
    display: revert;
  }
}

caption {
  caption-side: bottom;
  font-size: 0.9rem;
}

tr {
  transition: background-color 400ms;
}

tr:hover,
tr:focus-within {
  background: hsl(222deg 50% 15%);
  transition: background-color 200ms;
}

th,
td {
  line-height: 2;
  padding-block: 8px;
  padding-inline: 4px 16px;
}

/* Optically center the shortcut cell vertically (due to <kbd> styling) */
td:has(kbd) {
  transform: translateY(-2px);
}

kbd {
  background: linear-gradient(180deg, hsl(0deg 0% 20%), hsl(0deg 0% 10%));
  font-family: ui-monospace, monospace;
  font-weight: bold;
  font-size: 0.75em;
  padding-block: 3px;
  padding-inline: 6px;
  border: 1px solid;
  border-radius: 8px;
  margin-inline: 4px;
}

a {
  color: inherit;
}

a>svg {
  inline-size: 24px;
  block-size: 24px;
  padding: 12px;
  padding-block-end: 0;
  border-radius: 16px;
  transition: transform 600ms, filter 800ms;
}

a>svg:hover,
a>svg:focus-within {
  filter: brightness(130%);
  transform: translateY(-4px);
  transition: transform 200ms, filter 300ms;
}

abbr:has(kbd) {
  text-decoration: none;
}

.yawn {
  position: fixed;
  bottom: 8px;
  right: 8px;
  cursor: pointer;
  opacity: 10%;
  transition: opacity 600ms;
}

.yawn:hover,
.yawn:focus-within {
  opacity: 65%;
  transition: opacity 200ms;
}

@keyframes throb {
  50% {
    transform: scale(1.3);
  }
}

.yawn:focus {
  animation: throb 1s;
}

.yawn:active {
  animation: none;
}