<!-- Share of each posting's requirement list presented as mandatory.
     ⚠️ FORM NOTE: 100% stacked bars, all the same width, because the quantity being
     compared is a SHARE and not a count. The count comparison lives in
     archetype-ladder.svg and must not be conflated with this one: entry-level postings
     have BOTH the longest lists relative to seniority and the least optional content,
     and drawing them on one axis would imply a single measure.
     Palette: #b8470a (DESIGN.md solid primary) for the mandatory portion, #e7e1df for
     the optional remainder. The remainder is deliberately a recessive tint rather than
     a peer colour: it is "what is left", not a second series, and every bar is directly
     labeled so identity never rests on colour.
     Bar track x = 300 to 940 (640 wide). -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 340" width="1000" height="340" role="img" font-family="'Helvetica Neue', Helvetica, 'Segoe UI', Arial, sans-serif">
  <title>Share of each job posting's requirement list presented as mandatory rather than preferred. Across all postings the figure is 86.8 percent. Entry-level postings are stricter at 88.7 percent, and staff-level postings are the most flexible at 77.2 percent.</title>
  <rect width="1000" height="340" fill="#fafbfc"/>

  <text x="30" y="32" font-size="17" font-weight="700" fill="#636b78" letter-spacing="0.06em">SHARE OF THE LIST PRESENTED AS MANDATORY</text>

  <g font-size="17" fill="#16181d">
    <text x="30" y="93">All postings</text>
    <text x="30" y="163">Entry level</text>
    <text x="30" y="233">Staff level</text>
  </g>

  <!-- tracks -->
  <g fill="#e7e1df">
    <rect x="300" y="72" width="640" height="28" rx="2"/>
    <rect x="300" y="142" width="640" height="28" rx="2"/>
    <rect x="300" y="212" width="640" height="28" rx="2"/>
  </g>
  <!-- mandatory portions -->
  <g fill="#b8470a">
    <rect x="300" y="72" width="555" height="28" rx="2"/>
    <rect x="300" y="142" width="568" height="28" rx="2"/>
    <rect x="300" y="212" width="494" height="28" rx="2"/>
  </g>

  <g font-size="15" font-weight="700" fill="#fafbfc" text-anchor="end">
    <text x="843" y="92">86.8%</text>
    <text x="856" y="162">88.7%</text>
    <text x="782" y="232">77.2%</text>
  </g>
  <g font-size="14" fill="#8c8481">
    <text x="866" y="92">13.2%</text>
    <text x="879" y="162">11.3%</text>
    <text x="805" y="232">22.8%</text>
  </g>

  <line x1="30" y1="268" x2="970" y2="268" stroke="#e7e1df" stroke-width="1"/>
  <g transform="translate(30,282)">
    <rect x="0" y="0" width="14" height="14" rx="2" fill="#b8470a"/>
    <text x="22" y="12" font-size="14" fill="#636b78">presented as mandatory</text>
    <rect x="230" y="0" width="14" height="14" rx="2" fill="#e7e1df"/>
    <text x="252" y="12" font-size="14" fill="#636b78">presented as preferred or nice to have</text>
  </g>
  <text x="30" y="326" font-size="14" fill="#8c8481">7,695,726 requirements across 500,000 postings. Seniority band is read from the job title, independently of the requirement parse.</text>
</svg>
