{
  "title": "Navigation bars, measured: the typical values and the range across 3,070 real ones",
  "url": "https://uxxray.com/research/nav-design/",
  "archetype": "nav",
  "generated_at": "2026-09-28T23:44:33.719Z",
  "family": "archetype-hub",
  "floor": 30,
  "engines": [
    "Roentgen 1.10",
    "Roentgen 1.13",
    "Roentgen 1.15",
    "Roentgen 1.18",
    "Roentgen 1.19",
    "Roentgen 1.20",
    "Roentgen 1.20.1",
    "Roentgen 1.21",
    "Roentgen 1.21.0",
    "Roentgen 1.22.0",
    "Roentgen 1.23.1",
    "Roentgen 1.24.0",
    "Roentgen 1.25.1",
    "Roentgen 1.26.0",
    "Roentgen 1.26.1",
    "Roentgen 1.27.0",
    "Roentgen 1.7",
    "Roentgen 1.8"
  ],
  "corpus_n": 2257,
  "definition": "band_pattern_rates[archetype][funnel_type][tactic_id] is \"present of evaluated_n BANDS of that archetype\", never of funnels. A band counts as evaluated ONLY when the tactic was placed in it, or was not detected anywhere on that capture — because the extractor records ONE rect per tactic per page, so a band on a capture where the tactic was placed elsewhere is not evidence of absence and is excluded, not counted as a miss. Those exclusions ship as placed_elsewhere / unplaceable, and pct_present is therefore a LOWER BOUND whose upper bound is pct_present_max. Only six tactics carry a rect at all; the other 19 FACT_PATTERNS are funnel-scoped and cannot be band-attributed. Quote a cell as \"present of evaluated_n heroes\", with its funnel_type, never as a bare percentage.",
  "not_published": {
    "content": "content is the section classifier's terminal fallback — the archetype a band receives when no other rule matched. Its prevalence is a statement about what the detector could name, not about how pages are built, so it is measured and counted but never published as a design reference."
  },
  "industries": [
    {
      "key": "all",
      "label": "All",
      "n": 3070,
      "axes": {
        "height": {
          "value": 0.011,
          "n": 3070,
          "stat": "median",
          "unit": "fraction_of_page",
          "label": "Share of page height",
          "coverage_note": "The band's height over the page's OWN measured scroll extent, which varies about 2.3x across the corpus, so this is a share and not a size: it is comparable within a page and only loosely comparable between pages. How loosely depends on the archetype. Measured 2026-09-16 against true page heights read off each capture (n=200 each): for pricing, 39% of the spread is the denominator's; for hero, 6.9%. Geometry is measured on ~100% of captured bands.",
          "p25": 0.008,
          "p50": 0.011,
          "p75": 0.018
        },
        "start": {
          "value": 0,
          "n": 3070,
          "stat": "median",
          "unit": "fraction_of_page",
          "label": "Top edge",
          "coverage_note": "The band's TOP EDGE, never section_y (the centre, 0.898-correlated with height). A POSITION down the page's measured scroll extent, so unlike the height share it stays meaningful whatever the page's length.",
          "p25": 0,
          "p50": 0,
          "p75": 0.003
        },
        "words": {
          "value": 12,
          "n": 2719,
          "stat": "median",
          "unit": "count",
          "label": "Words",
          "coverage_note": "describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 9,
          "p50": 12,
          "p75": 16
        },
        "links": {
          "value": 9,
          "n": 2727,
          "stat": "median",
          "unit": "count",
          "label": "Links",
          "coverage_note": "describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 6,
          "p50": 9,
          "p75": 22
        },
        "interactive": {
          "value": 8,
          "n": 2716,
          "stat": "median",
          "unit": "count",
          "label": "Links and buttons with a label",
          "coverage_note": "Visible anchor and button elements whose trimmed label is 1 to 40 characters. It EXCLUDES the form field elements (input, select, textarea), so it is not a count of everything interactive in the band: see form_share for whether the section takes input at all. A link with no label, or a label over 40 characters, is not counted. The underlying field is cta_count, re-emitted as interactive_elements by library-facets.js. describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 6,
          "p50": 8,
          "p75": 9
        },
        "media": {
          "value": 3,
          "n": 2533,
          "stat": "median",
          "unit": "count",
          "label": "Images and inline SVGs",
          "coverage_note": "Visible img and svg elements counted together, with no size floor, so inline ICONS count: a feature list or pricing table with a checkmark per row reports a high figure, and this is a count of icon-sized marks rather than of photographs. describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 1,
          "p50": 3,
          "p75": 5
        },
        "h1_share": {
          "value": 0.1232876712328767,
          "hits": 9,
          "n": 73,
          "stat": "share",
          "unit": "share",
          "label": "Opens with an h1",
          "coverage_note": "Denominator is bands whose heading level was measured, never the population."
        },
        "table_share": {
          "value": 0,
          "hits": 0,
          "n": 2811,
          "stat": "share",
          "unit": "share",
          "label": "Holds a comparison table",
          "coverage_note": "A real table element in the band, which is the deterministic half of \"is this laid out as a comparison\". A CSS-grid pricing matrix is NOT a table and is not counted, so this is a floor on comparison layouts rather than a count of them. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 94 of 960 described pricing bands (9.8%)."
        },
        "form_share": {
          "value": 0.10067591604411241,
          "hits": 283,
          "n": 2811,
          "stat": "share",
          "unit": "share",
          "label": "Captures input inline",
          "coverage_note": "An input, select or textarea field inside the band, so the section asks for something on the spot rather than linking away. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 64 of 960 described pricing bands (6.7%)."
        },
        "schema_share": {
          "value": 0.009249377445748844,
          "hits": 26,
          "n": 2811,
          "stat": "share",
          "unit": "share",
          "label": "Publisher declares schema.org types",
          "coverage_note": "The band contains JSON-LD or an itemtype the SITE declared, read back rather than inferred. It is a statement about the publisher's markup, never about whether the section is well built. Denominator is bands whose content was described and was not empty. Measured 2026-09-16: 7 of 960 described pricing bands (0.7%) and 51 of 2,209 hero (2.3%), so this axis is withheld under the floor for most archetypes and that is the honest outcome."
        },
        "shapes": {
          "shapes": [
            {
              "shape": "nav → hero → footer",
              "n": 516
            },
            {
              "shape": "nav → hero → faq → footer",
              "n": 397
            },
            {
              "shape": "nav → hero → pricing → faq → footer",
              "n": 221
            },
            {
              "shape": "nav → hero → pricing → footer",
              "n": 141
            },
            {
              "shape": "nav → hero → logo_wall → footer",
              "n": 123
            }
          ],
          "n": 3070,
          "fallback_only": 0,
          "fallback_note": "0 of 3070 pages carried no archetype but content, which is the classifier's terminal fallback — that is a statement about what the detector could name, not about how those pages are built.",
          "stat": "frequency",
          "top_n_coverage": 0.455,
          "tail_note": "The 5 shapes listed cover 1398 of 3070 pages (46%). The remaining 1672 span other sequences, so a shape's share of the whole is what says whether a convention exists — the list alone reads as more conventional than the corpus is."
        }
      },
      "withheld": [],
      "tactics": []
    },
    {
      "key": "saas",
      "label": "SaaS",
      "n": 2543,
      "axes": {
        "height": {
          "value": 0.011,
          "n": 2543,
          "stat": "median",
          "unit": "fraction_of_page",
          "label": "Share of page height",
          "coverage_note": "The band's height over the page's OWN measured scroll extent, which varies about 2.3x across the corpus, so this is a share and not a size: it is comparable within a page and only loosely comparable between pages. How loosely depends on the archetype. Measured 2026-09-16 against true page heights read off each capture (n=200 each): for pricing, 39% of the spread is the denominator's; for hero, 6.9%. Geometry is measured on ~100% of captured bands.",
          "p25": 0.008,
          "p50": 0.011,
          "p75": 0.018
        },
        "start": {
          "value": 0,
          "n": 2543,
          "stat": "median",
          "unit": "fraction_of_page",
          "label": "Top edge",
          "coverage_note": "The band's TOP EDGE, never section_y (the centre, 0.898-correlated with height). A POSITION down the page's measured scroll extent, so unlike the height share it stays meaningful whatever the page's length.",
          "p25": 0,
          "p50": 0,
          "p75": 0.003
        },
        "words": {
          "value": 12,
          "n": 2280,
          "stat": "median",
          "unit": "count",
          "label": "Words",
          "coverage_note": "describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 9,
          "p50": 12,
          "p75": 15
        },
        "links": {
          "value": 8,
          "n": 2286,
          "stat": "median",
          "unit": "count",
          "label": "Links",
          "coverage_note": "describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 6,
          "p50": 8,
          "p75": 19
        },
        "interactive": {
          "value": 8,
          "n": 2279,
          "stat": "median",
          "unit": "count",
          "label": "Links and buttons with a label",
          "coverage_note": "Visible anchor and button elements whose trimmed label is 1 to 40 characters. It EXCLUDES the form field elements (input, select, textarea), so it is not a count of everything interactive in the band: see form_share for whether the section takes input at all. A link with no label, or a label over 40 characters, is not counted. The underlying field is cta_count, re-emitted as interactive_elements by library-facets.js. describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 6,
          "p50": 8,
          "p75": 9
        },
        "media": {
          "value": 3,
          "n": 2137,
          "stat": "median",
          "unit": "count",
          "label": "Images and inline SVGs",
          "coverage_note": "Visible img and svg elements counted together, with no size floor, so inline ICONS count: a feature list or pricing table with a checkmark per row reports a high figure, and this is a count of icon-sized marks rather than of photographs. describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 1,
          "p50": 3,
          "p75": 4
        },
        "h1_share": {
          "value": 0.18421052631578946,
          "hits": 7,
          "n": 38,
          "stat": "share",
          "unit": "share",
          "label": "Opens with an h1",
          "coverage_note": "Denominator is bands whose heading level was measured, never the population."
        },
        "table_share": {
          "value": 0,
          "hits": 0,
          "n": 2355,
          "stat": "share",
          "unit": "share",
          "label": "Holds a comparison table",
          "coverage_note": "A real table element in the band, which is the deterministic half of \"is this laid out as a comparison\". A CSS-grid pricing matrix is NOT a table and is not counted, so this is a floor on comparison layouts rather than a count of them. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 94 of 960 described pricing bands (9.8%)."
        },
        "form_share": {
          "value": 0.0505307855626327,
          "hits": 119,
          "n": 2355,
          "stat": "share",
          "unit": "share",
          "label": "Captures input inline",
          "coverage_note": "An input, select or textarea field inside the band, so the section asks for something on the spot rather than linking away. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 64 of 960 described pricing bands (6.7%)."
        },
        "schema_share": {
          "value": 0.004670912951167728,
          "hits": 11,
          "n": 2355,
          "stat": "share",
          "unit": "share",
          "label": "Publisher declares schema.org types",
          "coverage_note": "The band contains JSON-LD or an itemtype the SITE declared, read back rather than inferred. It is a statement about the publisher's markup, never about whether the section is well built. Denominator is bands whose content was described and was not empty. Measured 2026-09-16: 7 of 960 described pricing bands (0.7%) and 51 of 2,209 hero (2.3%), so this axis is withheld under the floor for most archetypes and that is the honest outcome."
        },
        "shapes": {
          "shapes": [
            {
              "shape": "nav → hero → footer",
              "n": 386
            },
            {
              "shape": "nav → hero → faq → footer",
              "n": 329
            },
            {
              "shape": "nav → hero → pricing → faq → footer",
              "n": 209
            },
            {
              "shape": "nav → hero → pricing → footer",
              "n": 119
            },
            {
              "shape": "nav → hero → logo_wall → footer",
              "n": 100
            }
          ],
          "n": 2543,
          "fallback_only": 0,
          "fallback_note": "0 of 2543 pages carried no archetype but content, which is the classifier's terminal fallback — that is a statement about what the detector could name, not about how those pages are built.",
          "stat": "frequency",
          "top_n_coverage": 0.449,
          "tail_note": "The 5 shapes listed cover 1143 of 2543 pages (45%). The remaining 1400 span other sequences, so a shape's share of the whole is what says whether a convention exists — the list alone reads as more conventional than the corpus is."
        }
      },
      "withheld": [],
      "tactics": [
        {
          "id": "strikethrough_price",
          "label": "Price anchor",
          "present": 0,
          "evaluated_n": 551,
          "pct_present": 0
        },
        {
          "id": "rating",
          "label": "Rating",
          "present": 0,
          "evaluated_n": 567,
          "pct_present": 0
        },
        {
          "id": "guarantee",
          "label": "Guarantee",
          "present": 0,
          "evaluated_n": 730,
          "pct_present": 0
        },
        {
          "id": "no_credit_card",
          "label": "No credit card asked",
          "present": 0,
          "evaluated_n": 427,
          "pct_present": 0
        },
        {
          "id": "scarcity",
          "label": "Scarcity",
          "present": 0,
          "evaluated_n": 792,
          "pct_present": 0
        },
        {
          "id": "countdown",
          "label": "Countdown",
          "present": 0,
          "evaluated_n": 804,
          "pct_present": 0
        }
      ]
    },
    {
      "key": "ecommerce",
      "label": "E-commerce",
      "n": 344,
      "axes": {
        "height": {
          "value": 0.012,
          "n": 344,
          "stat": "median",
          "unit": "fraction_of_page",
          "label": "Share of page height",
          "coverage_note": "The band's height over the page's OWN measured scroll extent, which varies about 2.3x across the corpus, so this is a share and not a size: it is comparable within a page and only loosely comparable between pages. How loosely depends on the archetype. Measured 2026-09-16 against true page heights read off each capture (n=200 each): for pricing, 39% of the spread is the denominator's; for hero, 6.9%. Geometry is measured on ~100% of captured bands.",
          "p25": 0.008,
          "p50": 0.012,
          "p75": 0.021
        },
        "start": {
          "value": 0,
          "n": 344,
          "stat": "median",
          "unit": "fraction_of_page",
          "label": "Top edge",
          "coverage_note": "The band's TOP EDGE, never section_y (the centre, 0.898-correlated with height). A POSITION down the page's measured scroll extent, so unlike the height share it stays meaningful whatever the page's length.",
          "p25": 0,
          "p50": 0,
          "p75": 0.005
        },
        "words": {
          "value": 16,
          "n": 295,
          "stat": "median",
          "unit": "count",
          "label": "Words",
          "coverage_note": "describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 10,
          "p50": 16,
          "p75": 24
        },
        "links": {
          "value": 30,
          "n": 297,
          "stat": "median",
          "unit": "count",
          "label": "Links",
          "coverage_note": "describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 8,
          "p50": 30,
          "p75": 99
        },
        "interactive": {
          "value": 8,
          "n": 293,
          "stat": "median",
          "unit": "count",
          "label": "Links and buttons with a label",
          "coverage_note": "Visible anchor and button elements whose trimmed label is 1 to 40 characters. It EXCLUDES the form field elements (input, select, textarea), so it is not a count of everything interactive in the band: see form_share for whether the section takes input at all. A link with no label, or a label over 40 characters, is not counted. The underlying field is cta_count, re-emitted as interactive_elements by library-facets.js. describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 6,
          "p50": 8,
          "p75": 11
        },
        "media": {
          "value": 4,
          "n": 272,
          "stat": "median",
          "unit": "count",
          "label": "Images and inline SVGs",
          "coverage_note": "Visible img and svg elements counted together, with no size floor, so inline ICONS count: a feature list or pricing table with a checkmark per row reports a high figure, and this is a count of icon-sized marks rather than of photographs. describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 3,
          "p50": 4,
          "p75": 6
        },
        "h1_share": {
          "value": 0.058823529411764705,
          "hits": 2,
          "n": 34,
          "stat": "share",
          "unit": "share",
          "label": "Opens with an h1",
          "coverage_note": "Denominator is bands whose heading level was measured, never the population."
        },
        "table_share": {
          "value": 0,
          "hits": 0,
          "n": 310,
          "stat": "share",
          "unit": "share",
          "label": "Holds a comparison table",
          "coverage_note": "A real table element in the band, which is the deterministic half of \"is this laid out as a comparison\". A CSS-grid pricing matrix is NOT a table and is not counted, so this is a floor on comparison layouts rather than a count of them. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 94 of 960 described pricing bands (9.8%)."
        },
        "form_share": {
          "value": 0.44193548387096776,
          "hits": 137,
          "n": 310,
          "stat": "share",
          "unit": "share",
          "label": "Captures input inline",
          "coverage_note": "An input, select or textarea field inside the band, so the section asks for something on the spot rather than linking away. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 64 of 960 described pricing bands (6.7%)."
        },
        "schema_share": {
          "value": 0.03225806451612903,
          "hits": 10,
          "n": 310,
          "stat": "share",
          "unit": "share",
          "label": "Publisher declares schema.org types",
          "coverage_note": "The band contains JSON-LD or an itemtype the SITE declared, read back rather than inferred. It is a statement about the publisher's markup, never about whether the section is well built. Denominator is bands whose content was described and was not empty. Measured 2026-09-16: 7 of 960 described pricing bands (0.7%) and 51 of 2,209 hero (2.3%), so this axis is withheld under the floor for most archetypes and that is the honest outcome."
        },
        "shapes": {
          "shapes": [
            {
              "shape": "nav → hero → footer",
              "n": 72
            },
            {
              "shape": "nav → hero → faq → footer",
              "n": 36
            },
            {
              "shape": "nav → hero → logo_wall → footer",
              "n": 20
            },
            {
              "shape": "nav → hero → cta_band → footer",
              "n": 16
            },
            {
              "shape": "nav → hero → pricing → footer",
              "n": 16
            }
          ],
          "n": 344,
          "fallback_only": 0,
          "fallback_note": "0 of 344 pages carried no archetype but content, which is the classifier's terminal fallback — that is a statement about what the detector could name, not about how those pages are built.",
          "stat": "frequency",
          "top_n_coverage": 0.465,
          "tail_note": "The 5 shapes listed cover 160 of 344 pages (47%). The remaining 184 span other sequences, so a shape's share of the whole is what says whether a convention exists — the list alone reads as more conventional than the corpus is."
        }
      },
      "withheld": [],
      "tactics": [
        {
          "id": "strikethrough_price",
          "label": "Price anchor",
          "present": 0,
          "evaluated_n": 63,
          "pct_present": 0
        },
        {
          "id": "rating",
          "label": "Rating",
          "present": 0,
          "evaluated_n": 71,
          "pct_present": 0
        },
        {
          "id": "guarantee",
          "label": "Guarantee",
          "present": 0,
          "evaluated_n": 117,
          "pct_present": 0
        },
        {
          "id": "no_credit_card",
          "label": "No credit card asked",
          "present": 0,
          "evaluated_n": 141,
          "pct_present": 0
        },
        {
          "id": "scarcity",
          "label": "Scarcity",
          "present": 0,
          "evaluated_n": 139,
          "pct_present": 0
        },
        {
          "id": "countdown",
          "label": "Countdown",
          "present": 0,
          "evaluated_n": 142,
          "pct_present": 0
        }
      ]
    },
    {
      "key": "lead_gen",
      "label": "Lead gen",
      "n": 17,
      "axes": {
        "height": null,
        "start": null,
        "words": null,
        "links": null,
        "interactive": null,
        "media": null,
        "h1_share": null,
        "table_share": null,
        "form_share": null,
        "schema_share": null,
        "shapes": null
      },
      "withheld": [
        {
          "key": "height",
          "label": "Share of page height",
          "reason": "below_min_population",
          "answerable": 17,
          "min_population": 30,
          "shortfall": 13,
          "note": "The band's height over the page's OWN measured scroll extent, which varies about 2.3x across the corpus, so this is a share and not a size: it is comparable within a page and only loosely comparable between pages. How loosely depends on the archetype. Measured 2026-09-16 against true page heights read off each capture (n=200 each): for pricing, 39% of the spread is the denominator's; for hero, 6.9%. Geometry is measured on ~100% of captured bands."
        },
        {
          "key": "start",
          "label": "Top edge",
          "reason": "below_min_population",
          "answerable": 17,
          "min_population": 30,
          "shortfall": 13,
          "note": "The band's TOP EDGE, never section_y (the centre, 0.898-correlated with height). A POSITION down the page's measured scroll extent, so unlike the height share it stays meaningful whatever the page's length."
        },
        {
          "key": "words",
          "label": "Words",
          "reason": "below_min_population",
          "answerable": 17,
          "min_population": 30,
          "shortfall": 13,
          "note": "describe() content fields are on ~59% of instances (measured 2026-08-22)."
        },
        {
          "key": "links",
          "label": "Links",
          "reason": "below_min_population",
          "answerable": 17,
          "min_population": 30,
          "shortfall": 13,
          "note": "describe() content fields are on ~59% of instances (measured 2026-08-22)."
        },
        {
          "key": "interactive",
          "label": "Links and buttons with a label",
          "reason": "below_min_population",
          "answerable": 17,
          "min_population": 30,
          "shortfall": 13,
          "note": "Visible anchor and button elements whose trimmed label is 1 to 40 characters. It EXCLUDES the form field elements (input, select, textarea), so it is not a count of everything interactive in the band: see form_share for whether the section takes input at all. A link with no label, or a label over 40 characters, is not counted. The underlying field is cta_count, re-emitted as interactive_elements by library-facets.js. describe() content fields are on ~59% of instances (measured 2026-08-22)."
        },
        {
          "key": "media",
          "label": "Images and inline SVGs",
          "reason": "below_min_population",
          "answerable": 16,
          "min_population": 30,
          "shortfall": 14,
          "note": "Visible img and svg elements counted together, with no size floor, so inline ICONS count: a feature list or pricing table with a checkmark per row reports a high figure, and this is a count of icon-sized marks rather than of photographs. describe() content fields are on ~59% of instances (measured 2026-08-22)."
        },
        {
          "key": "h1_share",
          "label": "Opens with an h1",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "Denominator is bands whose heading level was measured, never the population."
        },
        {
          "key": "table_share",
          "label": "Holds a comparison table",
          "reason": "below_min_population",
          "answerable": 17,
          "min_population": 30,
          "shortfall": 13,
          "note": "A real table element in the band, which is the deterministic half of \"is this laid out as a comparison\". A CSS-grid pricing matrix is NOT a table and is not counted, so this is a floor on comparison layouts rather than a count of them. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 94 of 960 described pricing bands (9.8%)."
        },
        {
          "key": "form_share",
          "label": "Captures input inline",
          "reason": "below_min_population",
          "answerable": 17,
          "min_population": 30,
          "shortfall": 13,
          "note": "An input, select or textarea field inside the band, so the section asks for something on the spot rather than linking away. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 64 of 960 described pricing bands (6.7%)."
        },
        {
          "key": "schema_share",
          "label": "Publisher declares schema.org types",
          "reason": "below_min_population",
          "answerable": 17,
          "min_population": 30,
          "shortfall": 13,
          "note": "The band contains JSON-LD or an itemtype the SITE declared, read back rather than inferred. It is a statement about the publisher's markup, never about whether the section is well built. Denominator is bands whose content was described and was not empty. Measured 2026-09-16: 7 of 960 described pricing bands (0.7%) and 51 of 2,209 hero (2.3%), so this axis is withheld under the floor for most archetypes and that is the honest outcome."
        },
        {
          "key": "shapes",
          "label": "Commonest page shapes",
          "reason": "below_min_population",
          "answerable": 17,
          "min_population": 30,
          "shortfall": 13,
          "note": "The terminal fallback archetype is reported separately, never folded in."
        }
      ],
      "tactics": []
    },
    {
      "key": "affiliate",
      "label": "Affiliate",
      "n": 166,
      "axes": {
        "height": {
          "value": 0.012,
          "n": 166,
          "stat": "median",
          "unit": "fraction_of_page",
          "label": "Share of page height",
          "coverage_note": "The band's height over the page's OWN measured scroll extent, which varies about 2.3x across the corpus, so this is a share and not a size: it is comparable within a page and only loosely comparable between pages. How loosely depends on the archetype. Measured 2026-09-16 against true page heights read off each capture (n=200 each): for pricing, 39% of the spread is the denominator's; for hero, 6.9%. Geometry is measured on ~100% of captured bands.",
          "p25": 0.008,
          "p50": 0.012,
          "p75": 0.019
        },
        "start": {
          "value": 0,
          "n": 166,
          "stat": "median",
          "unit": "fraction_of_page",
          "label": "Top edge",
          "coverage_note": "The band's TOP EDGE, never section_y (the centre, 0.898-correlated with height). A POSITION down the page's measured scroll extent, so unlike the height share it stays meaningful whatever the page's length.",
          "p25": 0,
          "p50": 0,
          "p75": 0
        },
        "words": {
          "value": 12,
          "n": 127,
          "stat": "median",
          "unit": "count",
          "label": "Words",
          "coverage_note": "describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 9,
          "p50": 12,
          "p75": 15
        },
        "links": {
          "value": 9,
          "n": 127,
          "stat": "median",
          "unit": "count",
          "label": "Links",
          "coverage_note": "describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 6,
          "p50": 9,
          "p75": 24
        },
        "interactive": {
          "value": 7,
          "n": 127,
          "stat": "median",
          "unit": "count",
          "label": "Links and buttons with a label",
          "coverage_note": "Visible anchor and button elements whose trimmed label is 1 to 40 characters. It EXCLUDES the form field elements (input, select, textarea), so it is not a count of everything interactive in the band: see form_share for whether the section takes input at all. A link with no label, or a label over 40 characters, is not counted. The underlying field is cta_count, re-emitted as interactive_elements by library-facets.js. describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 6,
          "p50": 7,
          "p75": 9
        },
        "media": {
          "value": 2,
          "n": 108,
          "stat": "median",
          "unit": "count",
          "label": "Images and inline SVGs",
          "coverage_note": "Visible img and svg elements counted together, with no size floor, so inline ICONS count: a feature list or pricing table with a checkmark per row reports a high figure, and this is a count of icon-sized marks rather than of photographs. describe() content fields are on ~59% of instances (measured 2026-08-22).",
          "p25": 1,
          "p50": 2,
          "p75": 3
        },
        "h1_share": null,
        "table_share": {
          "value": 0,
          "hits": 0,
          "n": 129,
          "stat": "share",
          "unit": "share",
          "label": "Holds a comparison table",
          "coverage_note": "A real table element in the band, which is the deterministic half of \"is this laid out as a comparison\". A CSS-grid pricing matrix is NOT a table and is not counted, so this is a floor on comparison layouts rather than a count of them. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 94 of 960 described pricing bands (9.8%)."
        },
        "form_share": {
          "value": 0.20930232558139536,
          "hits": 27,
          "n": 129,
          "stat": "share",
          "unit": "share",
          "label": "Captures input inline",
          "coverage_note": "An input, select or textarea field inside the band, so the section asks for something on the spot rather than linking away. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 64 of 960 described pricing bands (6.7%)."
        },
        "schema_share": {
          "value": 0.03875968992248062,
          "hits": 5,
          "n": 129,
          "stat": "share",
          "unit": "share",
          "label": "Publisher declares schema.org types",
          "coverage_note": "The band contains JSON-LD or an itemtype the SITE declared, read back rather than inferred. It is a statement about the publisher's markup, never about whether the section is well built. Denominator is bands whose content was described and was not empty. Measured 2026-09-16: 7 of 960 described pricing bands (0.7%) and 51 of 2,209 hero (2.3%), so this axis is withheld under the floor for most archetypes and that is the honest outcome."
        },
        "shapes": {
          "shapes": [
            {
              "shape": "nav → hero → footer",
              "n": 54
            },
            {
              "shape": "nav → hero → faq → footer",
              "n": 25
            },
            {
              "shape": "nav → hero → feature_grid → footer",
              "n": 10
            },
            {
              "shape": "nav → faq → footer",
              "n": 9
            },
            {
              "shape": "nav → feature_grid → footer",
              "n": 8
            }
          ],
          "n": 166,
          "fallback_only": 0,
          "fallback_note": "0 of 166 pages carried no archetype but content, which is the classifier's terminal fallback — that is a statement about what the detector could name, not about how those pages are built.",
          "stat": "frequency",
          "top_n_coverage": 0.639,
          "tail_note": "The 5 shapes listed cover 106 of 166 pages (64%). The remaining 60 span other sequences, so a shape's share of the whole is what says whether a convention exists — the list alone reads as more conventional than the corpus is."
        }
      },
      "withheld": [
        {
          "key": "h1_share",
          "label": "Opens with an h1",
          "reason": "below_min_population",
          "answerable": 1,
          "min_population": 30,
          "shortfall": 29,
          "note": "Denominator is bands whose heading level was measured, never the population."
        }
      ],
      "tactics": [
        {
          "id": "no_credit_card",
          "label": "No credit card asked",
          "present": 0,
          "evaluated_n": 32,
          "pct_present": 0
        },
        {
          "id": "scarcity",
          "label": "Scarcity",
          "present": 0,
          "evaluated_n": 30,
          "pct_present": 0
        },
        {
          "id": "countdown",
          "label": "Countdown",
          "present": 0,
          "evaluated_n": 31,
          "pct_present": 0
        }
      ]
    },
    {
      "key": "content",
      "label": "Content",
      "n": 0,
      "axes": {
        "height": null,
        "start": null,
        "words": null,
        "links": null,
        "interactive": null,
        "media": null,
        "h1_share": null,
        "table_share": null,
        "form_share": null,
        "schema_share": null,
        "shapes": null
      },
      "withheld": [
        {
          "key": "height",
          "label": "Share of page height",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "The band's height over the page's OWN measured scroll extent, which varies about 2.3x across the corpus, so this is a share and not a size: it is comparable within a page and only loosely comparable between pages. How loosely depends on the archetype. Measured 2026-09-16 against true page heights read off each capture (n=200 each): for pricing, 39% of the spread is the denominator's; for hero, 6.9%. Geometry is measured on ~100% of captured bands."
        },
        {
          "key": "start",
          "label": "Top edge",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "The band's TOP EDGE, never section_y (the centre, 0.898-correlated with height). A POSITION down the page's measured scroll extent, so unlike the height share it stays meaningful whatever the page's length."
        },
        {
          "key": "words",
          "label": "Words",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "describe() content fields are on ~59% of instances (measured 2026-08-22)."
        },
        {
          "key": "links",
          "label": "Links",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "describe() content fields are on ~59% of instances (measured 2026-08-22)."
        },
        {
          "key": "interactive",
          "label": "Links and buttons with a label",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "Visible anchor and button elements whose trimmed label is 1 to 40 characters. It EXCLUDES the form field elements (input, select, textarea), so it is not a count of everything interactive in the band: see form_share for whether the section takes input at all. A link with no label, or a label over 40 characters, is not counted. The underlying field is cta_count, re-emitted as interactive_elements by library-facets.js. describe() content fields are on ~59% of instances (measured 2026-08-22)."
        },
        {
          "key": "media",
          "label": "Images and inline SVGs",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "Visible img and svg elements counted together, with no size floor, so inline ICONS count: a feature list or pricing table with a checkmark per row reports a high figure, and this is a count of icon-sized marks rather than of photographs. describe() content fields are on ~59% of instances (measured 2026-08-22)."
        },
        {
          "key": "h1_share",
          "label": "Opens with an h1",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "Denominator is bands whose heading level was measured, never the population."
        },
        {
          "key": "table_share",
          "label": "Holds a comparison table",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "A real table element in the band, which is the deterministic half of \"is this laid out as a comparison\". A CSS-grid pricing matrix is NOT a table and is not counted, so this is a floor on comparison layouts rather than a count of them. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 94 of 960 described pricing bands (9.8%)."
        },
        {
          "key": "form_share",
          "label": "Captures input inline",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "An input, select or textarea field inside the band, so the section asks for something on the spot rather than linking away. Denominator is bands whose content was described and was not empty, never the archetype population. Measured 2026-09-16: 64 of 960 described pricing bands (6.7%)."
        },
        {
          "key": "schema_share",
          "label": "Publisher declares schema.org types",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "The band contains JSON-LD or an itemtype the SITE declared, read back rather than inferred. It is a statement about the publisher's markup, never about whether the section is well built. Denominator is bands whose content was described and was not empty. Measured 2026-09-16: 7 of 960 described pricing bands (0.7%) and 51 of 2,209 hero (2.3%), so this axis is withheld under the floor for most archetypes and that is the honest outcome."
        },
        {
          "key": "shapes",
          "label": "Commonest page shapes",
          "reason": "not_measured",
          "answerable": 0,
          "min_population": 30,
          "shortfall": 30,
          "note": "The terminal fallback archetype is reported separately, never folded in."
        }
      ],
      "tactics": []
    }
  ],
  "not_measured": [
    "typography.font_size",
    "typography.font_weight",
    "colour",
    "contrast_within_band"
  ]
}
