¿Por qué el diseño de tabla: fijo que afecta el ancho del elemento primario?

Puede alguien explicar por qué midiv contable-layout:fixed está cambiando el ancho de su elemento padre body en este caso) para que sea 100% cuando no debería ser 100% ya que está posicionado?

body {
  border: 2px solid red;
  height: 100vh;
  margin:0;
  padding: 0;
  position: absolute;
}

.c{
  display: table;
  width: 80%; /* Any percentage value different from 0 */
  table-layout:fixed;
  outline: 2px solid blue;
}
<div class="c">d</div>

omo puede ver arriba, agreguetable-layout:fixed obliga al cuerpo a ser de ancho completo Y el porcentajewidth sobre eldiv funcionará relativamente a lawidth delbody!

Este no es el caso con el fragmento a continuación, donde el comportamiento es de alguna manera lógico e intuitivo:

body {
  border: 2px solid red;
  height: 100vh;
  margin:0;
  padding: 0;
  position: absolute;
}

.c{
  display: table;
  width: 80%;
  /* table-layout:fixed; */
  outline: 2px solid blue;
}
<div class="c">d</div>

Cómotable-layout:fixed afecta el elemento padre, que se posiciona en este caso?

Como nota al margen, utilizando valores de píxeles conwidth produce un resultado lógico:

body {
  border: 2px solid red;
  height: 100vh;
  margin:0;
  padding: 0;
  position: absolute;
}

.c{
  display: table;
  width: 200px; 
  table-layout:fixed;
  outline: 2px solid blue;
}
<div class="c">d</div>

También podemos tener un desbordamiento con eseextrañ comportamiento:

body {
 margin:0;
 position:relative;
 width:300px;
 border-top:20px solid green;
}

.container {
  border: 2px solid red;
  height: 100vh;
  position: absolute;
}

.c {
  display: table;
  width: 120%; 
  table-layout: fixed;
  outline: 2px solid blue;
  animation:change 2s linear infinite alternate;
}

@keyframes change {
  from{width:1%;}
  to {width:150%}
}
<div class="container">
  <div class="c">d</div>
</div>

Respuestas a la pregunta(3)

Su respuesta a la pregunta