:root {
  --border-radius: .25rem;
  --border-size--small: .0625rem;
  --border-size--medium: .125rem;
  --border-size--large: .25rem;
}

/* ========================================================================= */
/* Site Header                                                               */
/* ========================================================================= */
body > header {
  border-bottom-style: solid;

  /* --- Phone Number --- */
  & address {
    & a {
      border-radius: var(--border-radius);

      &::before {
        border-radius: var(--border-radius);
        border-style: solid;
      }
    }
  }

  /* --- Brand --- */
  & hgroup {
    & h1 {
      margin: 0 0 .125rem 0;
    }

    & p {
      margin: 0;
    }
  }

  /* --- Site Navigation --- */
  & nav {
    & ul li a {
      border-bottom-style: solid;
    }

    @media (min-width: 1024px) {
      & ul ul {
        border-style: solid;
        box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .5);
      }
    }
  }
}

/* ========================================================================= */
/* Main                                                                      */
/* ========================================================================= */
body > main {
  & > header a {
    border-radius: var(--border-radius);
  }
}

/* ========================================================================= */
/* Side Navigation                                                           */
/* ========================================================================= */
body > aside {
  & h2 {
    border-bottom-style: solid;
  }

  & ul {
    list-style: none;

    & a {
      border-bottom-style: solid;
    }
  }
}

/* ========================================================================= */
/* Site Footer                                                               */
/* ========================================================================= */
body > footer {
  & h2 {
    border-bottom-style: solid;
  }
}

/* ========================================================================= */
/* Blog Post List                                                            */
/* ========================================================================= */
/* TODO: Refactor */
body > main > h2, body > main > p {
  margin-top: 0;
}

body > main > article {
  & header {
    margin-bottom: 1rem;

    & h3 {
      margin: 0 0 .25rem 0;
    }
  }

  & section {
    margin-bottom: 1rem;
  }

  & footer {
    & ul {
      display: flex;
      margin: 0;
      padding: 0;
      gap: .5rem;
      list-style: none;
    }
  }
}

/* ========================================================================= */
/* Pagination                                                                */
/* ========================================================================= */
/* TODO: Refactor */
body > main > nav {
  /* TODO: Rethink `ol` for this. The previous/next might need to be extracted */
  & ol {
    display: flex;
    justify-content: center;
    gap: .25rem;
    margin: 0;
    padding: 2rem 0 0 0;
    list-style: none;
  }

  & li {
    --accessible-width: max(44px, 3rem);
    --accessible-height: max(44px, 3rem);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    min-width: var(--accessible-width);
    min-height: var(--accessible-height);
    
    & a {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 100%;
      height: 100%;
      --padding-size--base: 1rem;
      padding-inline: var(--padding-size--base);
    }

    & a[aria-label="Previous page"]::before {
      display: inline;
      margin-right: .5rem;
    }

    & a[aria-label="Next page"]::after {
      display: inline;
      margin-left: .5rem;
    }
  }
}