I'm using display:flex for the first time.
You find a codepen here: https://codepen.io/chrispillen/pen/GEYpRg
.node:not(.branch) {
  width: auto;
  height: 100px;
  background: red;
  margin-bottom: 1px;
}
.node.branch,
.node.branch .body {
  width: auto;
  overflow: hidden;
}
.node.branch .leaf {
  width: 100%;
  height: 100px;
  background: blue;
}
.node.branch .body {
  width: 100%;
  display: flex;
  align-items: stretch;
}
.node.branch .body .tribe {
  width: 100px;
  background: blue;
  margin-right: 1px;
}
.node.branch .body .subnodes {
  padding-top: 1px;
  width: 100%;
  overflow: hidden;
}<div class="node"></div>
<div class="node branch">
  <div class="leaf"></div>
  <div class="body">
    <div class="tribe">TRIBE</div>
    <div class="subnodes">
      <div class="node"></div>
      <div class="node"></div>
    </div>
  </div>
  <div class="leaf"></div>
</div>The "tribe" element doesn't remain with a width of 100px.
Everything else works as supposed. Can I force it somehow? And by the way: is flex the true reason for this behavior?
 
     
    