{
  "id": "CON-110",
  "slug": "con-110",
  "title": "The disclosure must be visible without the consumer opening anything",
  "statement": "The consent disclosure must be rendered on the page as it loads — not behind a tooltip, an accordion, a \"read more\" toggle, or pushed out of the main content.",
  "rationale": "A disclosure the consumer has to reveal is one nearly all of them never see, and the law asks what a reasonable consumer would notice rather than what the page technically contains. Design teams collapse it in good faith, because a five-line legal block ruins a checkout — which is why the fix is usually about where the text sits rather than whether anyone wanted to hide it.",
  "layer": "CONSENT_FLOW",
  "layerSlug": "consent-flow",
  "object": "disclosure rendering and DOM position",
  "severity": "BLOCKING",
  "detectability": [
    "CRAWL",
    "VISION"
  ],
  "failureClass": "TERMINAL_WEBSITE",
  "authorities": [
    "Attentive",
    "Twilio",
    "Infobip",
    "FCC"
  ],
  "applicability": {
    "excludeConsentMethods": [
      "verbal_live",
      "verbal_ivr"
    ]
  },
  "applicabilityText": "Applies when consent was NOT collected by live verbal and IVR.",
  "universal": false,
  "remediation": "Render the disclosure expanded by default in the main content, beside the control. Where the block is too long for the layout, shorten the wording rather than collapsing it — every required element fits in about forty words. Done when the text is readable on first paint with nothing clicked.",
  "example": "☐ Text me Acme Coffee offers. Msg frequency varies. Msg & data rates may apply. Reply STOP to unsubscribe, HELP for help. Terms · Privacy",
  "pitfalls": [
    "An accordion that is open by default still fails on mobile, where the same component usually ships collapsed."
  ],
  "notes": "Excluded from the verbal methods, which render nothing — a spoken script has no default state to reveal. Paper, POS and printed CTAs stay in scope: fine print on the reverse of a form is the same defect in another medium.",
  "catalogIds": [
    "CON-111"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/consent-flow/con-110/",
  "markdown": "https://ekas.io/rules/10dlc/consent-flow/con-110.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
