2026 Ready
AB 3030 Auto-Discloser Widget
Meeting the "20% Screen Overlay" requirement is hard. Our script does it for you. Stick it in your `<head>` and stay compliant.
Widget Settings
AB 3030 requires the disclosure to be "prominent" and "readable". We recommend a font size of 14px or higher.
<script>
(function() {
const config = {
company: "Our Practice",
theme: "dark",
position: "top",
fontSize: "14px"
};
const styles = `
#ca-ai-disclosure {
position: fixed;
${config.position}: 0;
left: 0;
width: 100%;
z-index: 2147483647;
padding: 12px 20px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
font-size: ${config.fontSize};
line-height: 1.4;
text-align: center;
transition: all 0.3s ease;
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
box-shadow: 0 ${config.position === 'top' ? '2px' : '-2px'} 10px rgba(0,0,0,0.1);
background: ${config.theme === 'dark' ? '#0f172a' : '#ffffff'};
color: ${config.theme === 'dark' ? '#f8fafc' : '#0f172a'};
border-${config.position === 'top' ? 'bottom' : 'top'}: 2px solid #2563eb;
}
#ca-ai-disclosure strong { color: #3b82f6; font-weight: 700; }
.ca-ai-close {
cursor: pointer;
font-weight: bold;
padding: 2px 8px;
border-radius: 4px;
margin-left: 15px;
background: rgba(128,128,128,0.2);
}
@media print { #ca-ai-disclosure { display: none !important; } }
`;
const styleSheet = document.createElement("style");
styleSheet.innerText = styles;
document.head.appendChild(styleSheet);
const disclosure = document.createElement("div");
disclosure.id = "ca-ai-disclosure";
disclosure.innerHTML = `
<span><strong>2026 AI DISCLOSURE:</strong> You are interacting with an AI system operated by ${config.company}. Per CA AB 3030, this interaction is strictly automated.</span>
<span class="ca-ai-close" onclick="this.parentElement.style.display='none'">×</span>
`;
document.body.appendChild(disclosure);
})();
</script>Live Preview
2026 AI DISCLOSURE: Operated by [Company]...×
YOUR WEBSITE CONTENT
AB 3030 Compliant Output