Ciao, direi che l'uso di nth-child può essere una rapida soluzione a patto che le voci dell'elenco restino statiche sia nella quantità sia nella lunghezza dei termini usati, altrimenti bisognerebbe capire come i vari elementi si devono adattare nel layout.

Per attribuire le diverse larghezze a scalare, ti consiglio di impostare una larghezza nominale al contenitore <ul>, quindi delle larghezze percentuali per ogni voce.

Qui un semplice esempio:

codice HTML:
<!DOCTYPE HTML>
<html lang="it">
  <head>
    <title>Esempio</title>
    <style>
      @import url('https://fonts.googleapis.com/css2?family=Sarabun:wght@100&display=swap');
      ul {
        display: flex;
        flex-direction: column;
        width: 200px;
        list-style-type: none;
        padding: 0;
        margin: 0;
      }
      ul > li > a {
        display: block;
        float: right;
        font: 28px 'Sarabun', sans-serif;
        border: 1px solid transparent;
        background: green;
        background-clip: padding-box;
        padding: 8px;
        color: #fff;
        text-decoration: none;
        text-transform: uppercase;
        text-align: right;
      }
      ul > li:nth-child(1) > a {background-color: #325125; min-width: 100%}
      ul > li:nth-child(2) > a {background-color: #446437; min-width: 90%}
      ul > li:nth-child(3) > a {background-color: #56764a; min-width: 80%}
      ul > li:nth-child(4) > a {background-color: #69865f; min-width: 70%}
      ul > li:nth-child(n+5) > a {background-color: #859c7c; min-width: 60%}

    </style>
  </head>
  <body>
    <ul>
      <li><a href="#">Breakfast</a>
      <li><a href="#">Brunch</a>
      <li><a href="#">Lunch</a>
      <li><a href="#">Aperitif</a>
      <li><a href="#">Dinner</a>
    </ul>
  </body>
</html>
Il codice è relativamente semplice ma se hai bisogno di chiarimenti chiedi pure.