PageSourceSearch

https://blocksurvey.aiin-action.ai/4237.fd962e636b6a00d3.js

js aiin-action.ai collected 2026-10-05 11:53:00 UTC 71,534 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkblocksurvey=self.webpackChunkblocksurvey||[]).push([[4237],{4237(de,S,d){d.d(S,{PrivacyPolicyGeneratorModule:()=>pe});var R=d(49769),b=d(89417),x=d(93049),T=d(10467),j=d(60177),e=d(35547),s=d(60414),E=d(69447),D=d(84117),A=d(61299),I=d(35433),O=d(76292);const C=(r,l)=>l.id,H=(r,l)=>l.heading;function $(r,l){if(1&r&&(e.j41(0,"option",11),e.EFF(1),e.k0s()),2&r){const o=l.$implicit;e.Y8G("value",o.id),e.R7$(),e.JRh(o.label)}}function z(r,l){if(1&r){const o=e.RV6();e.j41(0,"label",23)(1,"input",63),e.mxI("ngModelChange",function(t){const n=s.eBV(o).$implicit;return e.DH7(n.checked,t)||(n.checked=t),s.Njj(t)}),e.bIt("ngModelChange",function(){const t=s.eBV(o).$implicit,n=e.XpG();return s.Njj(n.onToggle("health"===t.id?"health":"dataCollected",t.checked))}),e.k0s(),e.EFF(2),e.k0s()}if(2&r){const o=l.$implicit;e.R7$(),e.R50("ngModel",o.checked),e.Y8G("name","data_"+o.id),e.R7$(),e.SpI(" ",o.label," ")}}function B(r,l){if(1&r){const o=e.RV6();e.j41(0,"label",23)(1,"input",63),e.mxI("ngModelChange",function(t){const n=s.eBV(o).$implicit;return e.DH7(n.checked,t)||(n.checked=t),s.Njj(t)}),e.bIt("ngModelChange",function(){const t=s.eBV(o).$implicit,n=e.XpG();return s.Njj(n.onToggle("purposes",t.checked))}),e.k0s(),e.EFF(2),e.k0s()}if(2&r){const o=l.$implicit;e.R7$(),e.R50("ngModel",o.checked),e.Y8G("name","purpose_"+o.id),e.R7$(),e.SpI(" ",o.label," ")}}function N(r,l){if(1&r){const o=e.RV6();e.j41(0,"label",23)(1,"input",63),e.mxI("ngModelChange",function(t){const n=s.eBV(o).$implicit;return e.DH7(n.checked,t)||(n.checked=t),s.Njj(t)}),e.bIt("ngModelChange",function(){const t=s.eBV(o).$implicit,n=e.XpG(2);return s.Njj(n.onToggle("legalBases",t.checked))}),e.k0s(),e.EFF(2),e.k0s()}if(2&r){const o=l.$implicit;e.R7$(),e.R50("ngModel",o.checked),e.Y8G("name","basis_"+o.id),e.R7$(),e.SpI(" ",o.label," ")}}function L(r,l){if(1&r&&(e.j41(0,"p",4),e.EFF(1,"Legal bases (GDPR Art. 6)"),e.k0s(),e.j41(2,"div",25),e.Z7z(3,N,3,3,"label",23,C),e.k0s()),2&r){const o=e.XpG();e.R7$(3),e.Dyx(o.legalBases)}}function W(r,l){if(1&r){const o=e.RV6();e.j41(0,"input",65),e.mxI("ngModelChange",function(t){s.eBV(o);const n=e.XpG().$implicit;return e.DH7(n.provider,t)||(n.provider=t),s.Njj(t)}),e.bIt("focus",function(){s.eBV(o);const t=e.XpG().$implicit,n=e.XpG();return s.Njj(n.focusField("processor_"+t.id))})("blur",function(){s.eBV(o);const t=e.XpG(2);return s.Njj(t.focusedField="")})("ngModelChange",function(){s.eBV(o);const t=e.XpG(2);return s.Njj(t.updatePreview())}),e.k0s()}if(2&r){const o=e.XpG().$implicit;e.Y8G("placeholder",o.placeholder),e.R50("ngModel",o.provider),e.Y8G("name","provider_"+o.id)}}function V(r,l){if(1&r){const o=e.RV6();e.j41(0,"div",27)(1,"label",23)(2,"input",63),e.mxI("ngModelChange",function(t){const n=s.eBV(o).$implicit;return e.DH7(n.checked,t)||(n.checked=t),s.Njj(t)}),e.bIt("ngModelChange",function(){const t=s.eBV(o).$implicit,n=e.XpG();return s.Njj(n.onToggle("processors",t.checked))}),e.k0s(),e.EFF(3),e.k0s(),e.nVh(4,W,1,3,"input",64),e.k0s()}if(2&r){const o=l.$implicit;e.R7$(2),e.R50("ngModel",o.checked),e.Y8G("name","proc_"+o.id),e.R7$(),e.SpI(" ",o.label," "),e.R7$(),e.vxM(o.checked?4:-1)}}function U(r,l){if(1&r){const o=e.RV6();e.j41(0,"label",23)(1,"input",63),e.mxI("ngModelChange",function(t){const n=s.eBV(o).$implicit;return e.DH7(n.checked,t)||(n.checked=t),s.Njj(t)}),e.bIt("ngModelChange",function(){const t=s.eBV(o).$implicit,n=e.XpG();return s.Njj(n.onToggle("cookieTypes",t.checked))}),e.k0s(),e.EFF(2),e.k0s()}if(2&r){const o=l.$implicit;e.R7$(),e.R50("ngModel",o.checked),e.Y8G("name","cookie_"+o.id),e.R7$(),e.SpI(" ",o.label," ")}}function q(r,l){if(1&r&&(e.j41(0,"option",11),e.EFF(1),e.k0s()),2&r){const o=l.$implicit;e.Y8G("value",o.id),e.R7$(),e.JRh(o.label)}}function Y(r,l){if(1&r){const o=e.RV6();e.j41(0,"div",5)(1,"label",66),e.EFF(2,"Describe the period"),e.k0s(),e.j41(3,"input",67),e.mxI("ngModelChange",function(t){s.eBV(o);const n=e.XpG();return e.DH7(n.customRetention,t)||(n.customRetention=t),s.Njj(t)}),e.bIt("focus",function(){s.eBV(o);const t=e.XpG();return s.Njj(t.focusField("customRetention"))})("blur",function(){s.eBV(o);const t=e.XpG();return s.Njj(t.focusedField="")})("ngModelChange",function(){s.eBV(o);const t=e.XpG();return s.Njj(t.updatePreview())}),e.k0s()()}if(2&r){const o=e.XpG();e.R7$(3),e.R50("ngModel",o.customRetention)}}function X(r,l){if(1&r){const o=e.RV6();e.j41(0,"div",5)(1,"label",68),e.EFF(2,"Minimum age"),e.k0s(),e.j41(3,"select",69),e.mxI("ngModelChange",function(t){s.eBV(o);const n=e.XpG();return e.DH7(n.childrenAgeLimit,t)||(n.childrenAgeLimit=t),s.Njj(t)}),e.bIt("focus",function(){s.eBV(o);const t=e.XpG();return s.Njj(t.focusField("childrenAgeLimit"))})("blur",function(){s.eBV(o);const t=e.XpG();return s.Njj(t.focusedField="")})("ngModelChange",function(){s.eBV(o);const t=e.XpG();return s.Njj(t.updatePreview())}),e.j41(4,"option",70),e.EFF(5,"Under 13 (COPPA)"),e.k0s(),e.j41(6,"option",71),e.EFF(7,"Under 16 (GDPR default)"),e.k0s()()()}if(2&r){const o=e.XpG();e.R7$(3),e.R50("ngModel",o.childrenAgeLimit)}}function K(r,l){1&r&&(e.j41(0,"p",30),e.EFF(1,' California plus selling or sharing, so a "Do Not Sell or Share My Personal Information" section has been added to the document. '),e.k0s())}function Z(r,l){if(1&r&&(e.j41(0,"span"),e.EFF(1),e.k0s()),2&r){const o=l.$implicit,i=e.XpG(4);e.AVh("ppg_seg_entered",o.entered)("ppg_seg_focus",o.field&&o.field===i.focusedField),e.R7$(),e.JRh(o.text)}}function J(r,l){if(1&r&&(e.j41(0,"p",75),e.Z7z(1,Z,2,5,"span",76,e.Vm6),e.k0s()),2&r){const o=e.XpG().$implicit,i=e.XpG(2);e.AVh("ppg_doc_para_flash",o.flashKey&&o.flashKey===i.flashedKey),e.R7$(),e.Dyx(o.segs)}}function Q(r,l){if(1&r&&(e.j41(0,"span"),e.EFF(1),e.k0s()),2&r){const o=l.$implicit,i=e.XpG(6);e.AVh("ppg_seg_entered",o.entered)("ppg_seg_focus",o.field&&o.field===i.focusedField),e.R7$(),e.JRh(o.text)}}function ee(r,l){if(1&r&&e.Z7z(0,Q,2,5,"span",76,e.Vm6),2&r){const o=e.XpG().$implicit,i=e.XpG(4);e.Dyx(i.asSegs(o))}}function te(r,l){if(1&r&&e.EFF(0),2&r){const o=e.XpG().$implicit;e.SpI(" ",o," ")}}function oe(r,l){if(1&r&&(e.j41(0,"li"),e.nVh(1,ee,2,0)(2,te,1,1),e.k0s()),2&r){const o=l.$implicit,i=e.XpG(4);e.R7$(),e.vxM(i.isSegList(o)?1:2)}}function ne(r,l){if(1&r&&(e.j41(0,"ul",77),e.Z7z(1,oe,3,1,"li",null,e.Vm6),e.k0s()),2&r){const o=e.XpG().$implicit,i=e.XpG(2);e.AVh("ppg_doc_para_flash",o.flashKey&&o.flashKey===i.flashedKey),e.R7$(),e.Dyx(o.items)}}function ie(r,l){1&r&&e.nVh(0,J,3,2,"p",73)(1,ne,3,2,"ul",74),2&r&&e.vxM("p"===l.$implicit.kind?0:1)}function ae(r,l){if(1&r&&(e.j41(0,"div",46)(1,"p",72),e.EFF(2),e.k0s(),e.Z7z(3,ie,2,1,null,null,e.Vm6),e.k0s()),2&r){const o=l.$implicit,i=l.$index;e.R7$(2),e.Lme("",i+1,". ",o.heading),e.R7$(),e.Dyx(o.blocks)}}const re=[{path:"",component:(()=>
1{class r{constructor(o,i,t){this.seoService=o,this.signInService=i,this.DISCLAIMER="Draft template - not legal advice. Have qualified counsel review before publishing.",this.businessName="",this.entityType="website",this.websiteUrl="",this.contactEmail="",this.country="",this.state="",this.servesEu=!0,this.servesCalifornia=!0,this.sellsOrShares=!1,this.addressesChildren=!1,this.childrenAgeLimit="13",this.retention="account",this.customRetention="",this.effectiveDate="",this.entityTypes=[{id:"website",label:"Website",noun:"website"},{id:"blog",label:"Blog or content site",noun:"blog"},{id:"ecommerce",label:"E-commerce store",noun:"store"},{id:"saas",label:"SaaS or web app",noun:"service"},{id:"app",label:"Mobile app",noun:"app"},{id:"agency",label:"Agency or freelancer",noun:"website"},{id:"nonprofit",label:"Non-profit",noun:"website"}],this.retentionOptions=[{id:"account",label:"While the account is active",sentence:"for as long as your account is active, and for a limited period afterwards where we need the data to meet a legal or accounting obligation"},{id:"12m",label:"12 months",sentence:"for up to 12 months from your last interaction with us, unless a longer period is required by law"},{id:"24m",label:"24 months",sentence:"for up to 24 months from your last interaction with us, unless a longer period is required by law"},{id:"7y",label:"7 years (tax and accounting)",sentence:"for up to 7 years, which is the period we are required to keep transaction and accounting records"},{id:"custom",label:"Custom period",sentence:""}],this.dataCollected=[{id:"name",label:"Name",checked:!0},{id:"email",label:"Email address",checked:!0},{id:"phone",label:"Phone number",checked:!1},{id:"payment",label:"Payment and billing details",checked:!1},{id:"location",label:"Location data",checked:!1},{id:"device",label:"Device and IP address",checked:!0},{id:"cookies",label:"Cookies and analytics data",checked:!0},{id:"health",label:"Health data",checked:!1},{id:"content",label:"Content you submit (forms, uploads, messages)",checked:!1}],this.purposes=[{id:"service",label:"Provide and run the service",checked:!0},{id:"support",label:"Answer support requests",checked:!0},{id:"orders",label:"Process orders and payments",checked:!1},{id:"marketing",label:"Send marketing email and newsletters",checked:!1},{id:"analytics",label:"Measure usage and improve the product",checked:!0},{id:"security",label:"Prevent fraud and keep the service secure",checked:!0},{id:"legal",label:"Meet legal and accounting obligations",checked:!0}],this.legalBases=[{id:"consent",label:"Consent (Art. 6(1)(a))",checked:!0},{id:"contract",label:"Performance of a contract (Art. 6(1)(b))",checked:!0},{id:"legal",label:"Legal obligation (Art. 6(1)(c))",checked:!0},{id:"vital",label:"Vital interests (Art. 6(1)(d))",checked:!1},{id:"public",label:"Public task (Art. 6(1)(e))",checked:!1},{id:"legitimate",label:"Legitimate interests (Art. 6(1)(f))",checked:!0}],this.processors=[{id:"analytics",label:"Analytics",checked:!0,provider:"",placeholder:"e.g. Plausible, Google Analytics",role:"to understand how the service is used"},{id:"payments",label:"Payments",checked:!1,provider:"",placeholder:"e.g. Stripe, PayPal",role:"to take payment and handle refunds"},{id:"hosting",label:"Hosting and infrastructure",checked:!0,provider:"",placeholder:"e.g. AWS, Vercel",role:"to store data and serve the site"},{id:"email",label:"Email and messaging",checked:!1,provider:"",placeholder:"e.g. Postmark, Mailchimp",role:"to send transactional and marketing email"},{id:"ads",label:"Advertising",checked:!1,provider:"",placeholder:"e.g. Google Ads, Meta",role:"to run and measure advertising"},{id:"support",label:"Customer support",checked:!1,provider:"",placeholder:"e.g. Intercom, Zendesk",role:"to run our support inbox"}],this.cookieTypes=[{id:"essential",label:"Strictly necessary",checked:!0},{id:"analytics",label:"Analytics and performance",checked:!0},{id:"preferences",label:"Preferences",checked:!1},{id:"marketing",label:"Marketing and advertising",checked:!1}],this.sections=[],this.generating=!1,this.focusedField="",this.flashedKey="",this.copied=!1,this.copyOk=!1,this.copyMessage="Copied to clipboard",this.copyTimer=null,this.MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"],this.heroDescription="Answer a short form and get a privacy policy written in language aligned with the GDPR and the CCPA. The document builds live as you type, and you can download it as HTML, Word, or PDF. Everything is assembled on your device, so your business details never reach a server, and there is no sign-up.",this.howSteps=[{title:"Fill in the details",description:"Your business name, site, and contact email, then the data you collect, your reasons for c
1ollecting it, and the providers you send it to."},{title:"Watch the policy build",description:"Clauses appear and disappear as you answer. Tick the EU box and the legal-basis and GDPR rights sections show up. Say you sell data and serve California, and the opt-out section comes with it."},{title:"Download and publish",description:"Take the policy as HTML for your site, Word for your lawyer, or PDF for your records. Nothing you typed ever left your device."}],this.secureLead='Most privacy policy generators put your business details through their servers, then paywall the download and give you back a watermarked sample. This one works differently, and the document it writes is built around the disclosures that <a href="https://gdpr-info.eu/art-13-gdpr/" target="_blank" rel="noopener">GDPR Article 13</a> and the <a href="https://oag.ca.gov/privacy/ccpa" target="_blank" rel="noopener">CCPA</a> expect a business to publish:',this.secureItems=[{title:"100% in your browser",description:"The form, the preview, and the HTML, Word, and PDF files are all built by JavaScript on your device. Your business name, your email, and your answers are never uploaded."},{title:"No account, no email wall",description:"There is nothing to sign up for and nothing to verify. Close the tab and the answers are gone from memory."},{title:"The whole document, free",description:"You get every clause, not a preview with the useful half removed, and the download has no watermark and no credit link back to us."}],this.includedItems=["Who you are, where you are based, and how to reach you.","The categories of personal data you collect.","Why you collect each category.","Your legal basis under GDPR Article 6, when you serve EU or UK users.","The cookies you set and how consent is handled.","The recipients you share data with, or a statement that you share with nobody.","How long you keep the data and what happens when that period ends.","Whether you transfer data outside the EU or the UK, and the safeguard you rely on when you do.","The GDPR rights of access, rectification, erasure, restriction, portability, and objection, plus the right to lodge a complaint with a supervisory authority under Article 77.","The CCPA rights to know, delete, correct, opt out of sale or sharing, limit the use of sensitive information, and be free from retaliation for using any of them.",'A "Do Not Sell or Share My Personal Information" section, when California applies and you sell or share, naming the categories you sell or share and who receives them.',"A children's section citing COPPA or GDPR Article 8, depending on the age you set."],this.audienceLead='A solo store and a growing SaaS need the same disclosures written about different practices. The form scopes the policy to how you actually operate. If you collect personal data through forms, BlockSurvey handles that side with <a href="/gdpr-compliant-survey-software">GDPR-ready surveys</a>, where responses are encrypted before they reach a server.',this.audienceItems=[{title:"E-commerce stores",description:"Cover payment processors, shipping partners, and abandoned-cart email in one document, and satisfy the policy link Shopify and Stripe both ask for."},{title:"SaaS and web apps",description:"Name your hosting, analytics, and support tools as processors, and state a legal basis for each purpose before an enterprise buyer asks you to."},{title:"Mobile apps",description:"Get the published policy URL that App Store Connect and Google Play both require before a build can ship, and keep it consistent with your data safety answers."},{title:"Agencies and freelancers",description:"Draft a starting policy for a client site in a few minutes, hand the Word file to their counsel, and publish the HTML once it comes back approved."},{title:"Bloggers and creators",description:"Say what your analytics, newsletter, and ad network actually do with reader data, which is what ad networks and affiliate programs check for."},{title:"Startups",description:"Publish a real policy on day one instead of a copied one, and update it as your stack changes rather than after a customer's security review flags it."}],this.ctaDescription='A policy describes what you do with data. BlockSurvey changes what you can do with it: responses are encrypted on the respondent\'s device, so the server stores n
1othing readable. Collect with <a href="/gdpr-compliant-survey-software">privacy-first, GDPR-ready surveys</a>.',this.faqs=[{q:"What is a privacy policy and do I need one?",a:"A privacy policy is the public notice that tells people what personal data you collect, why you collect it, who you share it with, and how they can get it deleted. You need one as soon as you collect any personal data, including an email address on a contact form. The GDPR requires this notice under Articles 13 and 14, the CCPA requires it for businesses that meet its thresholds in California, and Apple, Google, Shopify, and Stripe all require a published policy before you can go live."},{q:"Which laws does this privacy policy generator cover?",a:"It covers the GDPR and the CCPA as amended by the CPRA. The GDPR sections carry the disclosures Articles 13 and 14 ask for: who the controller is, what you collect, why, the legal basis under Article 6, who receives the data, how long you keep it, whether it leaves the EU, and the rights in Chapter 3, including the right under Article 77 to complain to a supervisory authority. The CCPA sections carry the notice at collection, the categories of personal information, whether you sell or share any of it and with whom, the rights to know, delete, correct, opt out, and limit the use of sensitive information, and the rule against retaliating when someone uses them. Answer the two questions about EU and California users and the matching sections appear."},{q:"Is this a substitute for legal advice?",a:"No. This tool generates a starting-point privacy policy aligned with the GDPR and the CCPA, but it is not legal advice and may not cover every requirement for your business or jurisdiction. Have it reviewed by qualified legal counsel before you publish or rely on it."},{q:"Does my data leave the browser?",a:"No. The form and the document are held in the memory of the page you are looking at. Your business name, contact email, and every answer you give are turned into the policy by JavaScript running on your device, and the downloads are built there too. Nothing is posted to a server, which is why the tool needs no account."},{q:"What formats can I download?",a:"HTML, Word (.doc), and PDF, plus a plain-text copy you can paste anywhere. The HTML file is the one to hand to a developer or paste into a CMS page, the Word file is for a lawyer to mark up, and the PDF is for your records."},{q:"Do I need a cookie policy and terms as well?",a:"Usually yes, and they are different documents. A privacy policy explains what you do with personal data. A cookie policy explains the specific cookies and trackers you set and is what a consent banner links to. Terms and conditions are the contract between you and your users. Many sites publish all three and link them from the footer."},{q:"How often should I update my privacy policy?",a:"Review it whenever what you do with data changes: a new analytics tool, a new payment processor, a new country, a new category of data. Both the GDPR and the CCPA expect the notice to describe your current practice, not your practice from two years ago. Change the effective date each time you republish and keep the old version on file."},{q:"Does the generated policy work for a Shopify store or a mobile app?",a:"Yes. Pick the matching entity type in the form and describe the data you actually collect, and the document adjusts. App stores have their own extra requirements: Apple wants a privacy policy link in App Store Connect and a filled-in privacy nutrition label, and Google Play wants a policy URL plus a Data safety form. The policy you generate here satisfies the link requirement; the store forms still need to be filled in to match it."},{q:"Do you store what I enter into the form?",a:"No. The policy is assembled in your browser from your answers and nothing you type is sent to or kept on a server. Copy or download the result before leaving the page, since reloading clears the form."},{q:"How is this different from a paid privacy policy generator?",a:"Paid generators charge for the same GDPR/CCPA clauses and often gate the download or add a watermark. This one produces the same coverage with no sign-up, no watermark, and no cap on regenerating it, because there is no backend metering usage."}],this.isBrowser=(0,j.UE)(t),this.seoService.generateTags({title:"Free Privacy Policy Generator (GDPR & CCPA) | BlockSurvey",description:"Generate a GDPR and CCPA privacy policy for your website, store, or app. Answer a short form, watch the document build live, and download it as HTML, Word, or PDF. Free, no sign-up, and everything you type stays in your browser.",image:"https://og.blocksurvey.io/api/og?title="+encodeURIComponent("Free Privacy Policy Generator | BlockSurvey"),url:this.isBrowser?document.location.href:"https://blocksurvey.io/privacy-tools/privacy-policy-generator",cardType:"summary_large_image"}),this.addBreadCrumbsSchemaScript(),this.addAuthorSchemaScript(),this.addSoftwareApplicationSchema(),this.addHowToSchema(),this.addFaqSchemaScript();const n=new Date;this.effectiveDate=n.getFullYear()+"-"+String(n.getMonth()+1).padStart(2,"0")+"-"+String(n.getDate()).padStart(2,"0"),this.updatePreview()}ngOnDestroy(){this.copyTimer&&clearTimeout(this.copyTimer)}get nameOrPlaceholder(){return this.businessName.trim()||"[Your business name]"}get urlOrPlaceholder(){return this.websiteUrl.trim()||"[your-website.com]"}get emailOrPlaceholder(){return this.contactEmail.trim()||"[[email protected]]"}get entityNoun(){const o=this.entityTypes.find(i=>i.id===this.entityType);return o?o.noun:"website"}get locationLine(){const o=[this.state.trim(),this.country.trim()].filter(i=>!!i);return o.length?o.join(", "):"[your country or state]"}get showDoNotSell(){return this.servesCalifornia&&this.sellsOrShares}get collectsHealth(){return this.isChecked(this.dataCollected,"health")}get usesCookies(){return this.cookieTypes.some(o=>o.checked)}get hasProcessors(){return this.processors.some(o=>o.checked)}get formattedEffectiveDate(){const o=/^(\d{4})-(\d{2})-(\d{2})$/.exec(this.effectiveDate||"");if(!o)return"[effective date]";const i=this.MONTHS[Number(o[2])-1];return Number(o[3])+" "+i+" "+o[1]}isChecked(o,i){const t=o.find(n=>n.id===i);return!!t&&t.checked}labelsOf(o){return o.filter(i=>i.checked).map(i=>i.label)}updatePreview(){this.sections=this.buildSections(),this.focusedField&&this.scrollPreviewToFocused()}focusField(o){this.focusedField=o,this.scrollPreviewToFocused()}onToggle(o,i=!0){this.updatePreview(),this.isBrowser&&i&&(this.flashedKey=o,setTimeout(()=>{const t=document.querySelector(".ppg_preview_doc"),n=t?t.querySelector(".ppg_doc_para_flash"):null;if(t&&n){const a=t.getBoundingClientRect(),u=n.getBoundingClientRect(),y=Math.min(u.height,t.clientHeight);t.scrollTo({top:t.scrollTop+(u.top-a.top-t.clientHeight/2+y/2),behavior:"smooth"})}},0),setTimeout(()=>{this.flashedKey===o&&(this.flashedKey="")},2200))}scrollPreviewToFocused(){this.isBrowser&&setTimeout(()=>{const o=document.querySelector(".ppg_preview_doc");
1if(!o)return;const i=o.querySelector(".ppg_seg_focus");if(!i)return;const t=o.getBoundingClientRect(),n=i.getBoundingClientRect();o.scrollTo({top:o.scrollTop+(n.top-t.top-o.clientHeight/2+n.height/2),behavior:"smooth"})},0)}t(o){return{text:o}}f(o,i,t){const n=null==i?"":String(i).trim();return n?{text:n,field:o,entered:!0}:{text:`[${t}]`,field:o}}stat(o){return[{text:o}]}locationSegs(){const o=this.state.trim(),i=this.country.trim();return o&&i?[{text:o,field:"locationLine",entered:!0},this.t(", "),{text:i,field:"locationLine",entered:!0}]:[this.f("locationLine",o||i,"your country or state")]}effectiveDateSeg(){return/^(\d{4})-(\d{2})-(\d{2})$/.exec(this.effectiveDate||"")?{text:this.formattedEffectiveDate,field:"effectiveDate",entered:!0}:{text:"[effective date]",field:"effectiveDate"}}docNameSeg(){return this.f("businessName",this.businessName,"Your business name")}retentionSegs(){if("custom"===this.retention){const t=this.customRetention.trim();return[{text:"for ",field:"retention"},this.f("customRetention",t,"your retention period")]}const o=this.retentionOptions.find(t=>t.id===this.retention);return[this.f("retention",o?o.sentence:"[your retention period]","your retention period")]}isSegList(o){return Array.isArray(o)}asSegs(o){return o}flat(o){return(o||[]).map(i=>i.text).join("")}itemText(o){return this.isSegList(o)?this.flat(o):o}buildSections(){const o=[],i=this.entityNoun,t=c=>this.t(c),n=(c,p,m)=>this.f(c,p,m),a=c=>this.stat(c),u=()=>n("contactEmail",this.contactEmail,"[email protected]"),y=()=>n("websiteUrl",this.websiteUrl,"your-website.com"),w=()=>n("businessName",this.businessName,"Your business name");o.push({heading:"Who we are",blocks:[{kind:"p",segs:[w(),t(' ("we", "us") operates the '),n("entityType",i,"entity type"),t(" at "),y(),t(". This policy explains what personal data we collect from you, why we collect it, who we share it with, and the rights you have over it. We are based in "),...this.locationSegs(),t(".")]},{kind:"p",segs:[t("If you have a question about this policy or about the data we hold on you, write to us at "),u(),t(".")]}]});const h=this.labelsOf(this.dataCollected),P=[{kind:"p",segs:a("We collect the following categories of personal data:")}];P.push({kind:"ul",items:h.length?h:["[Select at least one category of data in the form]"],flashKey:"dataCollected"}),this.collectsHealth&&P.push({kind:"p",segs:a("Health data is a special category of personal data under Article 9 of the GDPR and sensitive personal information under the CCPA. We collect it only where you have given us explicit consent or where another Article 9 condition applies, and we limit who inside our organisation can see it."),flashKey:"health"}),o.push({heading:"Data we collect",blocks:P});const v=this.labelsOf(this.purposes);if(o.push({heading:"Why we collect it",blocks:[{kind:"p",segs:a("We use the data above for these purposes, and no others without telling you first:")},{kind:"ul",items:v.length?v:["[Select at least one purpose in the form]"],flashKey:"purposes"}]}),this.servesEu){const c=this.labelsOf(this.legalBases);o.push({heading:"Legal bases for processing (GDPR)",blocks:[{kind:"p",segs:a("Where the GDPR applies to you, we rely on the following legal bases under Article 6 to process your data:"),flashKey:"servesEu"},{kind:"ul",items:c.length?c:["[Select at least one legal basis in the form]"],flashKey:"legalBases"},{kind:"p",segs:a("Where we rely on consent, you can withdraw it at any time, and withdrawing it does not affect the processing we carried out before you did. Where we rely on legitimate interests, you can object and we will stop unless we can show compelling grounds to continue.")}]})}if(this.usesCookies){const c=this.labelsOf(this.cookieTypes),p=[{kind:"p",segs:[t("We set the following categories of cookies and similar technologies on "),y(),t(":")],flashKey:"cookieTypes"},{kind:"ul",items:c,flashKey:"cookieTypes"}];this.cookieTypes.some(k=>k.checked&&"essential"!==k.id)?p.push({kind:"p",segs:a("Cookies that are not strictly necessary are set only after you accept them, and you can change or withdraw that choice at any time through the cookie settings on the site or through your browser settings.")}):p.push({kind:"p",segs:a("These cookies are strictly necessary to run the site, so they are set without asking for consent. We do not use cookies to profile you or to advertise to you elsewhere.")}),o.push({heading:"Cookies and tracking",blocks:p})}const f=[],_=this.processors.filter(c=>c.checked).map(c=>c.label.toLowerCase());if(this.hasProcessors){const c=this.processors.filter(p=>p.checked).map(p=>[t(`${p.label}: `),n(`processor_${p.id}`,p.provider,"provider name"),t(`, ${p.role}.`)]);f.push({kind:"p",segs:a("We share personal data with the service providers below, and only the data each of them needs to do its job. Each one processes the data on our instructions under a written agreement."),flashKey:"processors"}),f.push({kind:"ul",items:c})}else f.push({kind:"p",segs:a("We do not share your personal data with any third-party service provider."),flashKey:"processors"});f.push({kind:"p",segs:a("We also disclose data where the law requires it, for example in response to a valid legal request, and to a buyer if the business is sold, in which case this policy continues to apply until the buyer tells you otherwise.")}),o.push({heading:"Third parties and recipients",blocks:f});const g=[];if(this.sellsOrShares?(g.push({kind:"p",segs:a("We sell or share personal information as the CCPA defines those terms. Sharing covers passing identifiers or browsing activity to advertising partners for cross-context behavioural advertising. In the past 12 months we have sold or shared these categories of personal information [edit this list so it names only the categories you really disclose]:"),flashKey:"sellsOrShares"}),g.push({kind:"ul",items:h.length?h:["[Select at least one category of data in the form]"]}),g.push({kind:"p",segs:[t(`We disclose them to ${_.length?"providers in these categories: "+_.join(", "):"[name the categories of third party you disclose to]"}. You can opt out at any time by emailing `),u(),t(", and we do not sell or share the personal information of anyone we know to be under 16.")]})):g.push({kind:"p",segs:a("We do not sell your personal information, and we do not share it for cross-context behavioural advertising as those terms are defined in the CCPA. We have not done so in the past 12 months."),flashKey:"sellsOrShares"}),o.push({heading:"Selling and sharing your data",blocks:g}),o.push({heading:"How long we keep it",blocks:[{kind:"p",segs:[t("We keep your personal data "),...this.retentionSegs(),t(". When the peri
1od ends we delete the data or anonymise it so that it can no longer be linked back to you.")]}]}),o.push({heading:"How we protect it",blocks:[{kind:"p",segs:a("We protect personal data with technical and organisational measures appropriate to the risk, including encryption in transit, access controls that limit who can reach the data, and logging of administrative access. No system is perfectly secure, so we also keep a process for detecting a breach and, where the law requires it, notifying you and the regulator.")}]}),this.servesEu&&o.push({heading:"Your rights (GDPR)",blocks:[{kind:"p",segs:[t("If you are in the EU or the UK, you have the following rights over your personal data. To use any of them, email "),u(),t(" and we will answer within one month.")],flashKey:"servesEu"},{kind:"ul",items:["Access: get a copy of the data we hold on you.","Rectification: correct data that is wrong or incomplete.","Erasure: have your data deleted where we no longer have a reason to keep it.","Restriction: tell us to stop using your data while a dispute is resolved.","Portability: receive your data in a machine-readable format and move it elsewhere.","Objection: object to processing based on legitimate interests, and to direct marketing at any time.","Withdraw consent: where we rely on your consent, take it back at any time.","Complaint: lodge a complaint with the supervisory authority (the data protection authority) in the country where you live or work. Article 77 of the GDPR gives you this right, and you can use it whether or not you have raised the matter with us first."]}]}),this.servesCalifornia&&o.push({heading:"Your California privacy rights (CCPA/CPRA)",blocks:[{kind:"p",segs:[t("If you are a California resident, you have the following rights. To use any of them, email "),u(),t(". We will verify your identity before we act, and we will answer within 45 days.")],flashKey:"servesCalifornia"},{kind:"ul",items:["Know: ask what personal information we have collected about you, where it came from, why we collected it, and who we disclosed it to.","Delete: ask us to delete the personal information we collected from you, subject to the exceptions in the statute.","Correct: ask us to fix personal information that is inaccurate.","Opt out: tell us to stop selling or sharing your personal information.","Limit: tell us to use sensitive personal information only for the purposes the statute permits.","No retaliation: we will not deny you service, charge you a different price, or give you a lower quality of service because you used any of these rights."]},{kind:"p",segs:a("An authorised agent may make a request on your behalf if you give them written permission and we can verify it.")}]}),this.showDoNotSell&&o.push({heading:"Do Not Sell or Share My Personal Information",blocks:[{kind:"p",segs:[t('Because we sell or share personal information, the CCPA gives you the right to tell us to stop. To opt out, use the "Do Not Sell or Share My Personal Information" link in the footer of '),y(),t(", or email "),u(),t(' with "Do Not Sell or Share" in the subject line. We also honour the Global Privacy Control signal sent by your browser, and we treat that signal as a valid opt-out request without asking you to confirm it.')],flashKey:"sellsOrShares"}]}),this.servesEu&&o.push({heading:"International transfers",blocks:[{kind:"p",segs:[t((this.hasProcessors?"Some of the providers named above are based outside the EU and the UK, so your personal data may be transferred there.":"If we transfer your personal data outside the EU or the UK, for example to a provider hosted elsewhere, we tell you here.")+" Where that happens we rely on an adequacy decision by the European Commission, or on the Commission's Standard Contractual Clauses together with any extra safeguards the transfer needs. Email "),u(),t(" if you want a copy of the clauses we use.")],flashKey:"servesEu"}]}),this.addressesChildren){const c=this.childrenAgeLimit,p="16"===c?"Article 8 of the GDPR sets 16 as the default age at which a child can consent to an online service without a parent, and some EU countries lower that to 13. We do not knowingly process the data of a child below the age that applies to them without the consent of a parent or guardian.":"Under the US Children's Online Privacy Protection Act (COPPA) we do not collect personal information from a child under 13 without verifiable parental consent.";o.push({heading:"Children",blocks:[{kind:"p",segs:[t(`Our ${i} is not directed at children under `),n("childrenAgeLimit",c,"age"),t(`, and we do not knowingly collect personal data from them. ${p} If you believe a child has given us their data, email `),u(),t(" and we will delete it.")],flashKey:"addressesChildren"}]})}return o.push({heading:"Changes to this policy",blocks:[{kind:"p",segs:a(`We update this policy when what we do with data changes. The effective date at the top tells you when the current version took effect. If a change is significant we will tell you by email or with a notice on the ${i} before it takes effect.`)}]}),o.push({heading:"Contact us",blocks:[{kind:"p",segs:[t("Questions, requests, and complaints all go to "),u(),t(". Write to "),w(),t(", "),...this.locationSegs(),t(".")]}]}),o}get plainText(){const o=[];return o.push("PRIVACY POLICY"),o.push(this.nameOrPlaceholder),o.push("Effective date: "+this.formattedEffectiveDate),o.push(""),o.push(this.DISCLAIMER),o.push(""),this.sections.forEach((i,t)=>{o.push(`${t+1}. ${i.heading.toUpperCase()}`),i.blocks.forEach(n=>{"p"===n.kind&&n.segs?o.push(this.flat(n.segs)):"ul"===n.kind&&n.items&&n.items.forEac
1h(a=>o.push("- "+this.itemText(a))),o.push("")})}),o.join("\n").trim()+"\n"}escapeHtml(o){return o.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}segsHtml(o){return o.map(i=>{const t=this.escapeHtml(i.text);return i.entered?`<b>${t}</b>`:t}).join("")}itemHtml(o){return this.isSegList(o)?this.segsHtml(o):this.escapeHtml(o)}buildHtml(){const o=[];return o.push("<h1>Privacy Policy</h1>"),o.push(`<p class="meta">${this.segsHtml([this.docNameSeg()])}<br>Effective date: ${this.segsHtml([this.effectiveDateSeg()])}</p>`),o.push(`<p class="disclaimer">${this.escapeHtml(this.DISCLAIMER)}</p>`),this.sections.forEach((i,t)=>{o.push(`<h2>${t+1}. ${this.escapeHtml(i.heading)}</h2>`),i.blocks.forEach(n=>{if("p"===n.kind&&n.segs)o.push(`<p>${this.segsHtml(n.segs)}</p>`);else if("ul"===n.kind&&n.items&&n.items.length){const a=n.items.map(u=>`<li>${this.itemHtml(u)}</li>`).join("");o.push(`<ul>${a}</ul>`)}})}),`<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Privacy Policy - ${this.escapeHtml(this.nameOrPlaceholder)}</title>\n<style>\nbody { font-family: Georgia, "Times New Roman", serif; color: #171717; line-height: 1.6; max-width: 760px; margin: 40px auto; padding: 0 20px; }\nh1 { font-size: 28px; margin-bottom: 6px; }\nh2 { font-size: 19px; margin-top: 30px; }\n.meta { color: #555; margin-top: 0; }\n.disclaimer { font-style: italic; color: #666; border-left: 3px solid #ddd; padding-left: 12px; }\nli { margin-bottom: 6px; }\n</style>\n</head>\n<body>\n${o.join("\n")}\n</body>\n</html>`}slug(){return(this.businessName.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"privacy")+"-privacy-policy"}saveBlob(o,i){const t=URL.createObjectURL(o),n=document.createElement("a");n.href=t,n.download=i,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)}downloadHtml(){if(!this.isBrowser)return;const o=new Blob([this.buildHtml()],{type:"text/html;charset=utf-8"});this.saveBlob(o,this.slug()+".html")}downloadWord(){if(!this.isBrowser)return;const o=new Blob(["\ufeff",this.buildHtml()],{type:"application/msword"});this.saveBlob(o,this.slug()+".doc")}downloadPdf(){var o=this;return(0,T.A)(function*(){if(o.isBrowser&&!o.generating){o.generating=!0;try{const i=yield d.e(9107).then(d.bind(d,89107)),n=new(i.jsPDF||i.default)("p","pt","a4"),a=54,u=n.internal.pageSize.getWidth(),y=n.internal.pageSize.getHeight(),w=u-2*a;let h=a;const P=(f,_)=>{const g=_.size||11,c=_.indent||0,p=1.45*g;n.setFont("helvetica",_.bold?"bold":"normal"),n.setFontSize(g),n.splitTextToSize(f,w-c).forEach(k=>{h>y-a&&(n.addPage(),h=a),n.text(k,a+c,h),h+=p}),h+=void 0===_.gap?8:_.gap},v=(f,_)=>{const g=_.size||11,c=_.indent||0,p=1.45*g;n.setFontSize(g);let m=a+c;h>y-a&&(n.addPage(),h=a),f.forEach(k=>{k.text.split(/(\s+)/).filter(M=>M.length).forEach(M=>{const G=/^\s+$/.test(M);n.setFont("helvetica",k.entered?"bold":"normal");const F=n.getTextWidth(M);!G&&m+F>a+w&&(h+=p,m=a+c,h>y-a&&(n.addPage(),h=a)),G?m>a+c&&(m+=F):(n.text(M,m,h),m+=F)})}),h+=p+(void 0===_.gap?0:_.gap)};P("PRIVACY POLICY",{bold:!0,size:20,gap:4}),v([o.docNameSeg()],{size:11,gap:2}),v([o.t("Effective date: "),o.effectiveDateSeg()],{size:11,gap:10}),n.setTextColor(110),P(o.DISCLAIMER,{size:9.5,gap:14}),n.setTextColor(23),o.sections.forEach((f,_)=>{P(`${_+1}. ${f.heading}`,{bold:!0,size:13,gap:6}),f.blocks.forEach(g=>{"p"===g.kind&&g.segs?v(g.segs,{size:11,gap:8}):"ul"===g.kind&&g.items&&(g.items.forEach(c=>{const p=o.isSegList(c)?c:[o.t(c)];v([o.t("\u2022  "),...p],{size:11,indent:14,gap:3})}),h+=6)})}),n.save(o.slug()+".pdf")}finally{o.generating=!1}}})()}copyPlainText(){var o=this;return(0,T.A)(function*(){if(!o.isBrowser)return;const i=o.plainText;let t=!1;try{yield navigator.clipboard.writeText(i),t=!0}catch{t=o.copyViaTextarea(i)}o.copyOk=t,o.copyMessage=t?"Policy copied as plain text":"Copy failed. Select the text and press Ctrl+C or Cmd+C",o.copied=!0,o.copyTimer&&clearTimeout(o.copyTimer),o.copyTimer=setTimeout(()=>o.copied=!1,2500)})()}copyViaTextarea(o){const i=document.createElement("textarea");i.value=o,i.setAttribute("readonly",""),i.style.position="fixed",i.style.top="-1000px",document.body.appendChild(i),i.select();let t=!1;try{t=document.execCommand("copy")}catch{t=!1}return document.body.removeChild(i),t}addBreadCrumbsSchemaScript(){this.seoService.addSchemaScript({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://blocksurvey.io/"},{"@type":"ListItem",position:2,name:"Privacy Tools",item:"https://blocksurvey.io/privacy-tools/"},{"@type":"ListItem",position:3,name:"Privacy Policy Generator",item:"https://blocksurvey.io/privacy-tools/privacy-policy-generator"}]},"bread_crumb_schema")}addAuthorSchemaScript(){this.seoService.addSchemaScript({"@context":"https://schema.org","@type":"Person",name:"Wilson Bright",url:"https://blocksurvey.io/",
1image:"https://images.blocksurvey.io/profile/blog-author-wilson.png",sameAs:["https://www.linkedin.com/in/wilsonbright/","https://x.com/wlsnbr"],jobTitle:"Founder & Author",worksFor:{"@type":"Organization",name:"BlockSurvey"}},"author_schema")}addSoftwareApplicationSchema(){this.seoService.addSchemaScript({"@context":"https://schema.org","@type":"WebApplication",name:"Privacy Policy Generator",applicationCategory:"BusinessApplication",operatingSystem:"Web",url:"https://blocksurvey.io/privacy-tools/privacy-policy-generator",isAccessibleForFree:!0,offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}},"software_application_schema")}addHowToSchema(){this.seoService.addSchemaScript({"@context":"https://schema.org","@type":"HowTo",name:"How the privacy policy generator works",step:[{"@type":"HowToStep",position:1,name:"Fill in the details",text:"Enter your business name, website, and contact email, then tick the data you collect, why you collect it, and the providers you share it with."},{"@type":"HowToStep",position:2,name:"Review the live preview",text:"The policy rebuilds as you answer. GDPR and CCPA sections appear or disappear based on whether you serve EU or California users."},{"@type":"HowToStep",position:3,name:"Download and publish",text:"Download the policy as HTML, Word, or PDF, or copy it as plain text. Everything is generated on your device."}]},"how_to_schema")}addFaqSchemaScript(){const i={"@context":"https://schema.org","@type":"FAQPage",mainEntity:this.faqs.map(t=>({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))};this.seoService.addSchemaScript(i,"faq_schema")}static{this.\u0275fac=function(i){return new(i||r)(e.rXU(E.B),e.rXU(D.O),e.rXU(e.Agw))}}static{this.\u0275cmp=e.VBU({type:r,selectors:[["app-privacy-policy-generator"]],hostAttrs:["ngSkipHydration","true"],standalone:!1,decls:158,vars:56,consts:[[3,"toolName","toolLink","title","description","howTitle","howSteps","secureTitle","secureLead","secureItems","audie
1nceTitle","audienceLead","audienceItems","ctaTitle","ctaDescription","faqs","selectedRoute"],[1,"ppg_grid"],[1,"ppg_form_pane"],[1,"ppg_pane_title","primary_font"],[1,"ppg_group_label","secondary_font"],[1,"ppg_field"],["for","ppg_name",1,"ppg_label","secondary_font"],["id","ppg_name","type","text","placeholder","e.g. Acme Studio Ltd",1,"form-control","ppg_input","secondary_font",3,"ngModelChange","focus","blur","ngModel"],[1,"ppg_field_row"],["for","ppg_entity",1,"ppg_label","secondary_font"],["id","ppg_entity",1,"form-select","ppg_input","secondary_font",3,"ngModelChange","focus","blur","ngModel"],[3,"value"],["for","ppg_url",1,"ppg_label","secondary_font"],["id","ppg_url","type","text","placeholder","e.g. acmestudio.com",1,"form-control","ppg_input","secondary_font",3,"ngModelChange","focus","blur","ngModel"],["for","ppg_email",1,"ppg_label","secondary_font"],["id","ppg_email","type","email","placeholder","e.g. [email protected]",1,"form-control","ppg_input","secondary_font",3,"ngModelChange","focus","blur","ngModel"],["for","ppg_date",1,"ppg_label","secondary_font"],["id","ppg_date","type","date",1,"form-control","ppg_input","secondary_font",3,"ngModelChange","focus","blur","ngModel"],["for","ppg_country",1,"ppg_label","secondary_font"],["id","ppg_country","type","text","placeholder","e.g. United Kingdom",1,"form-control","ppg_input","secondary_font",3,"ngModelChange","focus","blur","ngModel"],["for","ppg_state",1,"ppg_label","secondary_font"],["id","ppg_state","type","text","placeholder","Optional",1,"form-control","ppg_input","secondary_font",3,"ngModelChange","focus","blur","ngModel"],[1,"ppg_check_stack"],[1,"ppg_check","secondary_font"],["type","checkbox",3,"ngModelChange","ngModel"],[1,"ppg_check_grid"],[1,"ppg_processor_list"],[1,"ppg_processor"],["for","ppg_retention",1,"ppg_label","secondary_font"],["id","ppg_retention",1,"form-select","ppg_input","secondary_font",3,"ngModelChange","focus","blur","ngModel"],[1,"ppg_note","secondary_font"],[1,"ppg_preview_pane"],[1,"ppg_preview_toolbar"],[1,"ppg_pane_title","primary_font",2,"margin","0"],[1,"ppg_download_actions"],["type","button",1,"btn","blocksurvey_primary_btn_black","ppg_download_btn",3,"click","disabled"],["type","button",1,"btn","ppg_download_btn","ppg_ghost_btn","secondary_font",3,"click","disabled"],["role","status",1,"ppg_copied_note","secondary_font"],[1,"ppg_preview_doc","secondary_font"],["type","button","aria-label","Copy policy as plain text","title","Copy",1,"btn","ppg_icon_btn","ppg_copy_btn",3,"click","disabled"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.7","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"ppg_bt
1n_icon"],["x","8","y","8","width","13","height","13","rx","2.5"],["d","M16 8V5.5A2.5 2.5 0 0 0 13.5 3H5.5A2.5 2.5 0 0 0 3 5.5v8A2.5 2.5 0 0 0 5.5 16H8"],[1,"ppg_doc_title","primary_font"],[1,"ppg_doc_meta"],[1,"ppg_doc_disclaimer"],[1,"ppg_doc_section"],["pt-below-tool","",3,"label","items"],["pt-below-tool","",1,"ppg_disclaimer_note_block"],[1,"ppg_disclaimer_note","secondary_font"],["pt-below-tool-light","",1,"ppg_compare_block"],[1,"ppg_secondary_title","primary_font"],[1,"ppg_secondary_description","secondary_font"],[1,"ppg_compare_grid"],[1,"ppg_compare_card"],[1,"ppg_compare_title","primary_font"],[1,"ppg_compare_text","secondary_font"],[1,"ppg_compare_law","secondary_font"],["routerLink","/privacy-tools/cookie-policy-generator",1,"ppg_inline_link"],["routerLink","/privacy-tools/terms-and-conditions-generator",1,"ppg_inline_link"],[1,"ppg_compare_footnote","secondary_font"],["href","https://gdpr-info.eu/art-28-gdpr/","target","_blank","rel","noopener",1,"ppg_inline_link"],[3,"pageType"],["type","checkbox",3,"ngModelChange","ngModel","name"],["type","text",1,"form-control","ppg_input","ppg_provider_input","secondary_font",3,"placeholder","ngModel","name"],["type","text",1,"form-control","ppg_input","ppg_provider_input","secondary_font",3,"ngModelChange","focus","blur","placeholder","ngModel","name"],["for","ppg_custom_retention",1,"ppg_label","secondary_font"],["id","ppg_custom_retention","type","text","placeholder","e.g. 18 months from your last order",1,"form-control","ppg_input","secondary_font",3,"ngModelChange","focus","blur","ngModel"],["for","ppg_age",1,"ppg_label","secondary_font"],["id","ppg_age",1,"form-select","ppg_input","secondary_font",3,"ngModelChange","focus","blur","ngModel"],["value","13"],["value","16"],[1,"ppg_doc_heading"],[1,"ppg_doc_para",3,"ppg_doc_para_flash"],[1,"ppg_doc_list",3,"ppg_doc_para_flash"],[1,"ppg_doc_para"],[3,"ppg_seg_entered","ppg_seg_focus"],[1,"ppg_doc_list"]],template:function(i,t){1&i&&(e.j41(0,"bs-pt-tool-shell",0)(1,"div",1)(2,"div",2)(3,"h3",3),e.EFF(4,"Your details"),e.k0s(),e.j41(5,"p",4),e.EFF(6,"Business"),e.k0s(),e.j41(7,"div",5)(8,"label",6),e.EFF(9,"Business or site name"),e.k0s(),e.j41(10,"input",7),e.mxI("ngModelChange",function(a){return e.DH7(t.businessName,a)||(t.businessName=a),a}),e.bIt("focus",function(){return t.focusField("businessName")})("blur",function(){return t.focusedField=""})("ngModelChange",function(){return t.updatePreview()}),e.k0s()(),e.j41(11,"div",8)(12,"div",5)(13,"label",9),e.EFF(14,"Entity type"),e.k0s(),e.j41(15,"select",10),e.mxI("ngModelChange",function(a){return e.DH7(t.entityType,a)||(t.entityType=a),a}),e.bIt("focus",function(){return t.focusField("entityType")})("blur",function(){return t.focusedField=""})("ngModelChange",function(){return t.updatePreview()}),e.Z7z(16,$,2,2,"option",11,C),e.k0s()(),e.j41(18,"div",5)(19,"label",12),e.EFF(20,"Website URL"),e.k0s(),e.j41(21,"input",13),e.mxI("ngModelChange",function(a){return e.DH7(t.websiteUrl,a)||(t.websiteUrl=a),a}),e.bIt("focus",function(){return t.focusField("websiteUrl")})("blur",function(){return t.focusedField=""})("ngModelChange",function(){return t.updatePreview()}),e.k0s()()(),e.j41(22,"div",8)(23,"div",5)(24,"label",14),e.EFF(25,"Contact email"),e.k0s(),e.j41(26,"input",15),e.mxI("ngModelChange",function(a){return e.DH7(t.contactEmail,a)||(t.contactEmail=a),a}),e.bIt("focus",function(){return t.focusField("contactEmail")})("blur",function(){return t.focusedField=""})("ngModelChange",function(){return t.updatePreview()}),e.k0s()(),e.j41(27,"div",5)(28,"label",16),e.EFF(29,"Effective date"),e.k0s(),e.j41(30,"input",17),e.mxI("ngModelChange",function(a){return e.DH7(t.effectiveDate,a)||(t.effectiveDate=a),a}),e.bIt("focus",function(){return t.focusField("effectiveDate")})("blur",function(){return t.focusedField=""})("ngModelChange",function(){return t.updatePreview()}),e.k0s()()(),e.j41(31,"div",8)(32,"div",5)(33,"label",18),e.EFF(34,"Country"),e.k0s(),e.j41(35,"input",19),e.mxI("ngModelChange",function(a){return e.DH7(t.country,a)||(t.country=a),a}),e.bIt("focus",function(){return t.focusField("locationLine")})("blur",function(){return t.focusedField=""})("ngModelChange",function(){return t.updatePreview()}),e.k0s()(),e.j41(36,"div",5)(37,"label",20),e.EFF(38,"State or region"),e.k0s(),e.j41(39,"input",21),e.mxI("ngModelChange",function(a){return e.DH7(t.state,a)||(t.state=a),a}),e.bIt("focus",function(){return t.focusField("locationLine")})("blur",function(){return t.focusedField=""})("ngModelChange",function(){return t.updatePreview()}),e.k0s()()(),e.j41(40,"p",4),e.EFF(41,"Who you serve"),e.k0s(),e.j41(42,"div",22)(43,"label",23)(44,"input",24),e.mxI("ngModelChange",function(a){return e.DH7(t.servesEu,a)||(t.servesEu=a),a}),e.bIt("ngModelChange",function(){return t.onToggle("servesEu",t.servesEu)}),e.k0s(),e.EFF(45," I have users in the EU or the UK (GDPR) "),e.k0s(),e.j41(46,"label",23)(47,"input",24),e.mxI("ngModelChange",function(a){return e.DH7(t.servesCalifornia,a)||(t.servesCalifornia=a),a}),e.bIt("ngModelChange",function(){return t.onToggle("servesCalifornia",t.servesCalifornia)}),e.k0s(),e.EFF(48," I have users in California (CCPA/CPRA) "),e.k0s()(),e.j41(49,"p",4),e.EFF(50,"Data you collect"),e.k0s(),e.j41(51,"div",25),e.Z7z(52,z,3,3,"label",23,C),e.k0s(),e.j41(54,"p",4),e.EFF(55,"Why you collect it"),e.k0s(),e.j41(56,"div",25),e.Z7z(57,B,3,3,"label",23,C),e.k0s(),e.nVh(59,L,5,0),e.j41(60,"p",4),e.EFF(61,"Third parties and processors"),e.k0s(),e.j41(62,"div",26),e.Z7z(63,V,5,4,"div",27,C),e.k0s(),e.j41(65,"p",4),e.EFF(66,"Cookies you set"),e.k0s(),e.j41(67,"div",25),e.Z7z(68,U,3,3,"label",23,C),e.k0s(),e.j41(70,"p",4),e.EFF(71,"Retention and sharing"),e.k0s(),e.j41(72,"div",5)(73,"label",28),e.EFF(74,"How long you keep personal data"),e.k0s(),e.j41(75,"select",29),e.mxI("ngModelChange",function(a){return e.DH7(t.retention,a)||(t.retention=a),a}),e.bIt("focus",function(){return t.focusField("retention")})("blur",function(){return t.focusedField=""})("ngModelChange",function(){return t.updatePreview()}),e.Z7z(76,q,2,2,"option",11,C),e.k0s()(),e.nVh(78,Y,4,1,"div",5),e.j41(79,"div",22)(80,"label",23)(81,"input",24),e.mxI("ngModelChange",function(a){return e.DH7(t.sellsOrShares,a)||(t.sellsOrShares=a),a}),e.bIt("ngModelChange",function(){return t.onToggle("sellsOrShares",t.sellsOrShares)}),e.k0s(),e.EFF(82," I sell or share personal data (CCPA definition, includes ad partners) "),e.k0s(),e.j41(83,"label",23)(84,"input",24),e.mxI("ngModelChange",function(a){return e.DH7(t.addressesChildren,a)||(t.addressesChildren=a),a}),e.bIt("ngModelChange",function(){return t.onToggle("addressesChildren",t.addressesChildren)}),e.k0s(),e.EFF(85," Address children in the policy (COPPA) "),e.k0s()(),e.nVh(86,X,8,1,"div",5),e.nVh(87,K,2,0,"p",30),e.k0s(),e.j41(88,"div",31)(89,"div",32)(90,"h3",33),e.EFF(91,"Live preview"),e.k0s(),e.j41(92,"div",34)(93,"button",35),e.bIt("click",function(){return t.downloadPdf()}),e.EFF(94),e.k0s(),e.j41(95,"button",36),e.bIt("click",function(){return t.downloadWord()}),e.EFF(96,"Download Word"),e.k0s(),e.j41(97,"button",36),e.bIt("click",function(){return t.downloadHtml()}),e.EFF(98,"Download HTML"),e.k0s()()(),e.j41(99,"p",37),e.EFF(100),e.k0s(),e.j41(101,"div",38)(102,"button",39),e.bIt("click",function(){return t.copyPlainText()}),s.qSk(),e.j41(103,"svg",40),e.nrm(104,"rect",41)(105,"path",42),e.k0s()(),s.joV(),e.j41(106,"h4",43),e.EFF(107,"Privacy Policy"),e.k0s(),e.j41(108,"p",44)(109,"span"),e.EFF(110),e.k0s(),e.nrm(111,"br"),e.EFF(112," Effective date: "),e.j41(113,"span"),e.EFF(114),e.k0s()(),e.j41(115,"p",45),e.EFF(116),e.k0s(),e.Z7z(117,ae,5,2,"div",46,H),e.k0s()()(),e.nrm(119,"bs-pt-info-list",47),e.j41(120,"div",48)(121,"p",49),e.EFF(122,' Every document carries this line: "Draft template - not legal advice. Have qualified counsel review before publishing." '),e.k0s()(),e.j41(123,"div",50)(124,"h2",51),e.EFF(125,"Which document do I need?"),e.k0s(),e.j41(126,"p",52),e.EFF(127," Three documents get confused with each other constantly. They answer different questions, and most sites end up publishing all three. "),e.k0s(),e.j41(128,"div",53)(129,"div",54)(130,"h3",55),e.EFF(131,"Privacy policy"),e.k0s(),e.j41(132,"p",56),e.EFF(133," What personal data you collect, why, who you share it with, and how people exercise their rights. Required as soon as you collect an email address. This is the document you are generating above. "),e.k0s(),e.j41(134,"p",57),e.EFF(135,"GDPR Art. 13, CCPA notice at collection"),e.k0s()(),e.j41(136,"div",54)(137,"h3",55),e.EFF(138,"Cookie policy"),e.k0s(),e.j41(139,"p",56),e.EFF(140," The specific cookies and trackers you set, what each one does, how long it lasts, and how someone withdraws consent. This is the page a consent banner links to. "),e.k0s(),e.j41(141,"p",57),e.EFF(142," The policy above covers your cookie categories, not each individual cookie. "),e.j41(143,"a",58),e.EFF(144,"Generate a cookie policy"),e.k0s()()(),e.j41(145,"div",54)(146,"h3",55),e.EFF(147,"Terms and conditions"),e.k0s(),e.j41(148,"p",56),e.EFF(149," The contract between you and your users: what you promise, what they agree to, how accounts end, and who is liable when something goes wrong. Not a privacy document at all. "),e.k0s(),e.j41(150,"a",59),e.EFF(151,"Generate terms and conditions"),e.k0s()()(),e.j41(152,"p",60),e.EFF(153," Working with a vendor that processes personal data for you? That relationship also needs a data processing agreement under "),e.j41(154,"a",61),e.EFF(155,"GDPR Article 28"),e.k0s(),e.EFF(156,", which is a contract between the two of you rather than a 
1notice to the public. "),e.k0s()()(),e.nrm(157,"app-signup-popup",62)),2&i&&(e.Y8G("toolName","Privacy Policy Generator")("toolLink","/privacy-tools/privacy-policy-generator")("title","Free privacy policy generator")("description",t.heroDescription)("howTitle","How the privacy policy generator works")("howSteps",t.howSteps)("secureTitle","Free, private, and aligned with the GDPR and the CCPA")("secureLead",t.secureLead)("secureItems",t.secureItems)("audienceTitle","Built for every kind of business")("audienceLead",t.audienceLead)("audienceItems",t.audienceItems)("ctaTitle","Collecting personal data through forms or surveys?")("ctaDescription",t.ctaDescription)("faqs",t.faqs)("selectedRoute","privacy-policy-generator"),e.R7$(10),e.R50("ngModel",t.businessName),e.R7$(5),e.R50("ngModel",t.entityType),e.R7$(),e.Dyx(t.entityTypes),e.R7$(5),e.R50("ngModel",t.websiteUrl),e.R7$(5),e.R50("ngModel",t.contactEmail),e.R7$(4),e.R50("ngModel",t.effectiveDate),e.R7$(5),e.R50("ngModel",t.country),e.R7$(4),e.R50("ngModel",t.state),e.R7$(5),e.R50("ngModel",t.servesEu),e.R7$(3),e.R50("ngModel",t.servesCalifornia),e.R7$(5),e.Dyx(t.dataCollected),e.R7$(5),e.Dyx(t.purposes),e.R7$(2),e.vxM(t.servesEu?59:-1),e.R7$(4),e.Dyx(t.processors),e.R7$(5),e.Dyx(t.cookieTypes),e.R7$(7),e.R50("ngModel",t.retention),e.R7$(),e.Dyx(t.retentionOptions),e.R7$(2),e.vxM("custom"===t.retention?78:-1),e.R7$(3),e.R50("ngModel",t.sellsOrShares),e.R7$(3),e.R50("ngModel",t.addressesChildren),e.R7$(2),e.vxM(t.addressesChildren?86:-1),e.R7$(),e.vxM(t.showDoNotSell?87:-1),e.R7$(6),e.Y8G("disabled",!t.isBrowser||t.generating),e.R7$(),e.SpI(" ",t.generating?"Preparing\u2026":"Download PDF"," "),e.R7$(),e.Y8G("disabled",!t.isBrowser),e.R7$(2),e.Y8G("disabled",!t.isBrowser),e.R7$(2),e.AVh("ppg_copied_note_on",t.copied)("ppg_copied_note_fail",t.copied&&!t.copyOk),e.R7$(),e.JRh(t.copyMessage),e.R7$(2),e.Y8G("disabled",!t.isBrowser),e.R7$(7),e.AVh("ppg_seg_entered",t.docNameSeg().entered)("ppg_seg_focus","businessName"===t.focusedField),e.R7$(),e.JRh(t.docNameSeg().text),e.R7$(3),e.AVh("ppg_seg_entered",t.effectiveDateSeg().entered)("ppg_seg_focus","effectiveDate"===t.focusedField),e.R7$(),e.JRh(t.effectiveDateSeg().text),e.R7$(2),e.JRh(t.DISCLAIMER),e.R7$(),e.Dyx(t.sections),e.R7$(2),e.Y8G("label","What the generated policy includes")("items",t.includedItems),e.R7$(38),e.Y8G("pageType","privacy-tool"))},dependencies:[x.Wk,b.xH,b.y7,b.me,b.Zm,b.wz,b.BC,b.vS,A.U,I.Q,O.q],styles:[".ppg_hero_bg[_ngcontent-%COMP%]{background:linear-gradient(180deg,#bcd3f0,#d5e3f6);padding:90px 0 56px}.bread_crumb_flexbox[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:24px 0 8px}.bread_crumb_link[_ngcontent-%COMP%]{font-size:12px;font-weight:400;cursor:pointer;color:#17171799}.bread_crumb_link[_ngcontent-%COMP%]:first-letter{text-transform:capitalize}.bread_crumb_link[_ngcontent-%COMP%]:last-of-type{color:#171717}.ppg_hero_desc_row[_ngcontent-%COMP%]{margin-top:18px;justify-content:center;text-align:center}.ppg_hero_title[_ngcontent-%COMP%]{font-size:44px;font-weight:700;line-height:1.15;color:#171717;margin:0 0 18px}.ppg_hero_description[_ngcontent-%COMP%]{font-size:18px;line-height:1.6;color:#4a4a4a;margin:0 auto;max-width:1080px}.ppg_row[_ngcontent-%COMP%]{padding:48px 0}.ppg_grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:26px;align-items:start}.ppg_form_pane[_ngcontent-%COMP%], .ppg_preview_pane[_ngcontent-%COMP%]{background:#fff;border:1px solid #e6e8ee;border-radius:14px;padding:26px 28px 30px;box-shadow:0 8px 28px -18px #17171759}.ppg_form_pane[_ngcontent-%COMP%]{position:sticky;top:90px;max-height:calc(100vh - 110px);overflow-y:auto}.ppg_pane_title[_ngcontent-%COMP%]{font-size:19px;font-weight:700;color:#171717;margin:0 0 18px}.ppg_group_label[_ngcontent-%COMP%]{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#8a8f9c;margin:26px 0 12px;padding-bottom:6px;border-bottom:1px solid #eef0f4}.ppg_group_label[_ngcontent-%COMP%]:first-of-type{margin-top:0}.ppg_field[_ngcontent-%COMP%]{flex:1;min-width:0;margin-bottom:14px}.ppg_field_row[_ngcontent-%COMP%]{display:flex;gap:14px}.ppg_label[_ngcontent-%COMP%]{display:block;font-size:13px;color:#2c2f36;margin-bottom:6px}.ppg_input[_ngcontent-%COMP%]{font-size:14px;border:1px solid #d9dce3;border-radius:10px;padding:9px 12px;color:#171717}.ppg_input[_ngcontent-%COMP%]:focus{border-color:#171717;box-shadow:0 0 0 3px #bcd3f0b3}.ppg_check_grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px}.ppg_check_stack[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px;margin-bottom:4px}.ppg_check[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:9px;font-size:14px;line-height:1.4;color:#2c2f36;cursor:pointer}.ppg_check[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{accent-color:#171717;width:16px;height:16px;margin-top:2px;flex:0 0 auto;cursor:pointer}.ppg_processor_list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.ppg_processor[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.ppg_provider_input[_ngcontent-%COMP%]{flex:1;min-width:190px;font-size:13px;padding:7px 11px}.ppg_note[_ngcontent-%COMP%]{font-size:13px;line-height:1.55;color:#3f6b4f;background:#f1f6ec;border:1px solid #dbe6cf;border-radius:10px;padding:10px 12px;margin:16px 0 0}.ppg_preview_toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.ppg_download_actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ppg_download_btn[_ngcontent-%COMP%]{border-radius:8px;padding:8px 14px;font-size:13px;white-space:nowrap}.ppg_download_btn[_ngcontent-%COMP%]:disabled{opacity:.55;cursor:not-allowed}.ppg_ghost_btn[_ngcontent-%COMP%]{background:#fff;border:1px solid #171717;color:#171717;transition:background .15s,color .15s}.ppg_ghost_btn[_ngcontent-%COMP%]:hover:not(:disabled){background:#171717;color:#fff}.ppg_icon_btn[_ngcontent-%COMP%]{flex:0 0 auto;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid rgba(23,23,23,.15);color:#171717;border-radius:999px;padding:0;transition:background .15s,color .15s}.ppg_icon_btn[_ngcontent-%COMP%]:hover:not(:disabled){background:#171717;color:#fff}.ppg_icon_btn[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.ppg_btn_icon[_ngcontent-%COMP%]{width:15px;height:15px;flex:0 0 auto}
1.ppg_copy_btn[_ngcontent-%COMP%]{position:absolute;top:14px;right:14px;z-index:1}.ppg_copied_note[_ngcontent-%COMP%]{font-size:12.5px;color:#2f7d55;margin:10px 0 0;height:16px;opacity:0;transition:opacity .15s}.ppg_copied_note_on[_ngcontent-%COMP%]{opacity:1}.ppg_copied_note_fail[_ngcontent-%COMP%]{color:#c0392b}.ppg_preview_doc[_ngcontent-%COMP%]{position:relative;margin-top:12px;max-height:640px;overflow-y:auto;background:#fbfbfd;border:1px solid #d9dce3;border-radius:10px;padding:26px 28px;color:#2c2f36}.ppg_doc_title[_ngcontent-%COMP%]{font-size:22px;font-weight:700;color:#171717;margin:0 0 6px}.ppg_doc_meta[_ngcontent-%COMP%]{font-size:13px;line-height:1.6;color:#6b7280;margin:0 0 14px}.ppg_doc_disclaimer[_ngcontent-%COMP%]{font-size:12.5px;line-height:1.55;font-style:italic;color:#6b7280;border-left:3px solid #d9dce3;padding-left:12px;margin:0 0 22px}.ppg_doc_section[_ngcontent-%COMP%]{margin-bottom:20px}.ppg_doc_heading[_ngcontent-%COMP%]{font-size:14.5px;font-weight:700;color:#171717;margin:0 0 8px}.ppg_doc_para[_ngcontent-%COMP%]{font-size:14px;line-height:1.65;color:#4a4a4a;margin:0 0 10px;border-radius:4px;transition:background-color .6s ease,box-shadow .6s ease}.ppg_doc_list[_ngcontent-%COMP%]{list-style:disc;padding-left:20px;margin:0 0 12px;border-radius:4px;transition:background-color .6s ease,box-shadow .6s ease}.ppg_doc_list[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]{font-size:14px;line-height:1.6;color:#4a4a4a;margin-bottom:5px}.ppg_doc_para_flash[_ngcontent-%COMP%]{background-color:#bcd3f08c;box-shadow:0 0 0 4px #bcd3f08c}.ppg_seg_entered[_ngcontent-%COMP%]{font-weight:700;color:#171717}.ppg_seg_focus[_ngcontent-%COMP%]{background:#bcd3f0a6;border-radius:3px;box-shadow:0 0 0 2px #bcd3f0a6}.ppg_secondary_title[_ngcontent-%COMP%]{font-size:30px;font-weight:700;color:#171717;margin:0 0 18px;text-align:center}.ppg_secondary_description[_ngcontent-%COMP%]{font-size:16px;line-height:1.7;color:#4a4a4a;text-align:center}.ppg_section_subtitle[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;margin:-6px 0 28px;text-align:center}.ppg_how_grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.ppg_how_step[_ngcontent-%COMP%]{background:#f5f5f5;border:1px solid #efefef;border-radius:14px;padding:24px}.ppg_how_num[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:50%;background:#171717;color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;margin-bottom:14px}.ppg_how_step_title[_ngcontent-%COMP%]{font-size:18px;font-weight:700;color:#171717;margin:0 0 8px}.ppg_how_step_text[_ngcontent-%COMP%]{font-size:15px;line-height:1.6;color:#4a4a4a;margin:0}.ppg_inline_link[_ngcontent-%COMP%]{color:#2f6df6;text-decoration:underline}.ppg_numbered_list[_ngcontent-%COMP%]{margin-top:30px}.ppg_numbered_item[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:22px;padding:24px 0;border-bottom:1px solid #ececec}.ppg_numbered_index[_ngcontent-%COMP%]{font-size:24px;font-weight:600;color:#c7c7c7;min-width:42px;line-height:1.3}.ppg_numbered_body[_ngcontent-%COMP%]{border-left:1px solid #dcdcdc;padding-left:24px;flex:1}.ppg_numbered_title[_ngcontent-%COMP%]{font-size:18px;font-weight:700;color:#171717;margin:0 0 6px}.ppg_numbered_text[_ngcontent-%COMP%]{font-size:15px;line-height:1.6;color:#4a4a4a;margin:0}.ppg_included_label[_ngcontent-%COMP%]{font-size:16px;font-weight:700;color:#171717;margin:26px 0 6px}.ppg_required_list[_ngcontent-%COMP%]{list-style:decimal;padding-left:22px;margin:8px 0 0}.ppg_required_list[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]{font-size:16px;line-height:1.7;color:#4a4a4a;margin-bottom:8px}.ppg_disclaimer_note[_ngcontent-%COMP%]{font-size:14.5px;line-height:1.65;color:#fafafacc;background:#fafafa0f;border-left:3px solid #ff2d17;border-radius:0 8px 8px 0;padding:14px 18px;margin:26px 0 0}.ppg_compare_grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:30px}.ppg_compare_card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e6e8ee;border-radius:12px;padding:22px}.ppg_compare_title[_ngcontent-%COMP%]{font-size:17px;font-weight:700;color:#171717;margin:0 0 8px}.ppg_compare_text[_ngcontent-%COMP%]{font-size:14.5px;line-height:1.55;color:#4a4a4a;margin:0 0 10px}.ppg_compare_law[_ngcontent-%COMP%]{font-size:12.5px;color:#8a8f9c;margin:0}
1.ppg_compare_footnote[_ngcontent-%COMP%]{font-size:15px;line-height:1.7;color:#4a4a4a;text-align:center;margin:26px 0 0}.ppg_audience_grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:30px}.ppg_audience_card[_ngcontent-%COMP%]{background:#f5f5f5;border-radius:12px;padding:22px}.ppg_audience_card_title[_ngcontent-%COMP%]{font-size:17px;font-weight:700;line-height:1.3;color:#171717;margin:0 0 8px}.ppg_audience_card_text[_ngcontent-%COMP%]{font-size:14.5px;line-height:1.55;color:#4a4a4a;margin:0}.blocksurvey_cta_box[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;padding:60px 0;column-gap:120px;row-gap:30px}.blocksurvey_cta_title[_ngcontent-%COMP%]{font-size:32px;font-weight:400;line-height:1.4;margin-bottom:0}.blocksurvey_cta_subtitle[_ngcontent-%COMP%]{font-size:16px;line-height:1.6;color:#4a4a4a;margin:8px 0 0;max-width:620px}@media(max-width:1199px){.ppg_grid[_ngcontent-%COMP%]{grid-template-columns:1fr}.ppg_form_pane[_ngcontent-%COMP%]{position:static;max-height:none;overflow:visible}}@media(max-width:991px){.ppg_hero_title[_ngcontent-%COMP%]{font-size:32px}.blocksurvey_cta_title[_ngcontent-%COMP%]{font-size:24px}.ppg_compare_grid[_ngcontent-%COMP%], .ppg_audience_grid[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}}@media(max-width:767px){.ppg_how_grid[_ngcontent-%COMP%], .ppg_compare_grid[_ngcontent-%COMP%], .ppg_audience_grid[_ngcontent-%COMP%], .ppg_check_grid[_ngcontent-%COMP%]{grid-template-columns:1fr}.ppg_field_row[_ngcontent-%COMP%]{flex-direction:column;gap:0}.ppg_form_pane[_ngcontent-%COMP%], .ppg_preview_pane[_ngcontent-%COMP%]{padding:22px 18px 26px}.ppg_preview_doc[_ngcontent-%COMP%]{padding:20px 18px;max-height:none}.ppg_download_actions[_ngcontent-%COMP%]{width:100%}.ppg_download_btn[_ngcontent-%COMP%]{flex:1}}","[pt-below-tool-light][_ngcontent-%COMP%]{display:block;margin:0 0 var(--bslp-space-lg, 64px)}[pt-below-tool-light][_ngcontent-%COMP%]   h2[_ngcontent-%COMP%]{font-family:Space Grotesk,Trebuchet MS,sans-serif;font-size:var(--bslp-fs-h2, clamp(30px, 4.2vw, 64px));line-height:1.05;letter-spacing:-.02em;font-weight:500;color:var(--bslp-dark, #171717);margin:0 0 var(--bslp-space-sm, 24px);text-align:left}[pt-below-tool-light][_ngcontent-%COMP%] > p[_ngcontent-%COMP%]{font-family:Inter,sans-serif;font-size:clamp(16px,1.4vw,19px);line-height:1.6;color:var(--bslp-muted, #55555f);margin:0 0 var(--bslp-space-md, 40px);text-align:left}[pt-below-tool-light][_ngcontent-%COMP%] > h2[_ngcontent-%COMP%] + p[_ngcontent-%COMP%]{max-width:640px}[pt-below-tool-light][_ngcontent-%COMP%]   .ai_included_label[_ngcontent-%COMP%]{font-family:Space Grotesk,Trebuchet MS,sans-serif;font-size:20px;font-weight:500;letter-spacing:-.01em;color:var(--bslp-dark, #171717);max-width:none;margin:var(--bslp-space-md, 40px) 0 12px}[pt-below-tool-light][_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{color:inherit;text-decoration:underline}[pt-below-tool-light][_ngcontent-%COMP%]   .ai_compare_scroll[_ngcontent-%COMP%], [pt-below-tool-light][_ngcontent-%COMP%]   .rqc_table_scroll[_ngcontent-%COMP%]{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--bslp-r-card, 24px);background:var(--bslp-dark, #171717)}[pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]{width:100%;min-width:720px;border-collapse:separate;border-spacing:0;background:var(--bslp-dark, #171717);font-family:Inter,sans-serif;font-size:15px;line-height:1.6;color:#fafafab8;overflow:hidden;border-radius:var(--bslp-r-card, 24px)}[pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   th[_ngcontent-%COMP%], [pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{padding:18px 20px;text-align:left;vertical-align:top;border-right:1px solid rgba(255,255,255,.16);border-bottom:1px solid rgba(255,255,255,.16)}[pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]:last-child, [pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]:last-child{border-right:0}[pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:last-child   td[_ngcontent-%COMP%], [pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:last-child   th[_ngcontent-%COMP%]{border-bottom:0}[pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   thead[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]{background-image:linear-gradient(180deg,#ff2d1733,#ff2d1705);color:var(--bslp-on-dark, #fafafa);font-weight:600;font-size:15px;white-space:nowrap}[pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   th[_ngcontent-%COMP%], [pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%], [pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{color:var(--bslp-on-dark, #fafafa);font-weight:600}[pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{color:var(--bslp-on-dark, #fafafa);text-decoration:underline}@media(max-width:767px){[pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]{font-size:14px}[pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   th[_ngcontent-%COMP%], [pt-below-tool-light][_ngcontent-%COMP%]   table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{padding:14px 16px}}"]})}}return r})()}];let se=(()=>{class r{static{this.\u0275fac=function(i){return new(i||r)}}static{this.\u0275mod=e.$C({type:r})}static{this.\u0275inj=s.G2t({imports:[x.iI.forChild(re),x.iI]})}}return r})();var le=d(19109),ce=d(22177);let pe=(()=>{class r{static{this.\u0275fac=function(i){return new(i||r)}}static{this.\u0275mod=e.$C({type:r})}static{this.\u0275inj=s.G2t({imports:[R.MD,se,b.YN,le.Z,ce.r,O.q]})}}return r})()}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.