I am trying to arrange a layout in which I have a right hand side bar and to the left of it in a main content area I have a list of items of fixed width arranged horizontally.
There are various numbers of these and when they get more than will fit in to the space allowed I want a horizontal scroll bar to appear.
As it happens, each item in this list also contains a header and a list of sub items which could overflow vertically. This too needs a scroll bar.
The following jsbin shows what I am attempting, but fails on the horizontal arrangement. Unfortunately the sidebar gets squashed to a small width before scroll bars appear. Also, it's clearly the whole viewport which gets the horizontal scroll bar as my main heading starts scrolling too.
https://jsbin.com/qametad/edit?html,css,output
How can I get it so the area with class "s" (see jsbin) is the one that horizontally scrolls? (It doesn't have to be "s", I had tried to get "ic" scrolling initially but failed at that so added "s" to try to separate out the flexing and the scrolling).
body {
  fullbleed height: 100vh;
}
.h {
  display: flex;
  flex-direction: row;
  justify-content: center;
  height: 30px;
}
.m {
  display: flex;
  flex-direction: row;
  height: calc(100vh - 50px);
  border: 1px solid green;
}
.ic {
  display: flex;
  flex: 1;
}
.s {
  display: flex;
  flex-direction: row;
  border: 1px solid red;
  width: 100%;
  overflow-x: auto;
}
.i {
  display: flex;
  flex-direction: column;
  width: 150px;
  border: 1px solid rebeccapurple;
  margin: 1px
}
.ih {
  height: 50px;
  self-align: center;
  border: 1px solid orange;
}
.il {
  margin: 1px;
  border: 1px solid black;
  overflow-y: auto;
}
.li {
  height: 60px;
  margin: 3px;
  border: 1px solid lawngreen;
}
.sb {
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin: 2px;
  border: 1px solid blue;
}<header class="h">My Heading</header>
<section class="m">
  <div class="ic">
    <div class="s">
      <div class="i">
        <header class="ih">Item Header</header>
        <section class="il">
          <div class="li">A</div>
          <div class="li">B</div>
          <div class="li">C</div>
        </section>
      </div>
      <div class="i">
        <header class="ih">Item Header</header>
        <section class="il">
          <div class="li">A</div>
          <div class="li">B</div>
          <div class="li">C</div>
          <div class="li">C</div>
          <div class="li">C</div>
          <div class="li">C</div>
          <div class="li">C</div>
          <div class="li">C</div>
          <div class="li">C</div>
        </section>
      </div>
      <div class="i">
        <header class="ih">Item Header</header>
        <section class="il">
          <div class="li">A</div>
          <div class="li">B</div>
          <div class="li">C</div>
        </section>
      </div>
      <div class="i">
        <header class="ih">Item Header</header>
        <section class="il">
          <div class="li">A</div>
          <div class="li">B</div>
          <div class="li">C</div>
        </section>
      </div>
      <div class="i">
        <header class="ih">Item Header</header>
        <section class="il">
          <div class="li">A</div>
          <div class="li">B</div>
          <div class="li">C</div>
        </section>
      </div>
    </div>
  </div>
  <section class="sb">
    <div class="sbc">Some Content</div>
  </section </section> 
     
     
    