<!doctype html>
<html lang="en-US" prefix="og: https://ogp.me/ns#">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<title>Age verification · The Cat House Magazine and TV</title>
<style>:root{--bg:#070707;--card:#0f0f0f;--ink:#f5f1ea;--mute:rgba(245,241,234,.68);--line:rgba(245,241,234,.14);--err:#ff8a80}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink)}
body.chmag-page{display:flex;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:16px;font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}
.chmag-card{width:100%;max-width:420px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:32px 24px 26px;text-align:center}
.chmag-logo{display:block;width:150px;max-width:60%;height:auto;margin:0 auto 20px}
.chmag-step h1{font-family:"Didot","Bodoni 72","Bodoni MT",Georgia,serif;font-weight:400;font-size:30px;letter-spacing:.01em;line-height:1.15;margin:0 0 10px}
.chmag-step p{margin:0 0 16px;color:var(--mute)}
.chmag-points{list-style:none;margin:0 0 18px;padding:0;text-align:left;font-size:14px;color:var(--mute)}
.chmag-points li{position:relative;padding:7px 0 7px 18px;border-top:1px solid var(--line)}
.chmag-points li:last-child{border-bottom:1px solid var(--line)}
.chmag-points li:before{content:"";position:absolute;left:2px;top:15px;width:6px;height:6px;border-radius:50%;background:var(--ink)}
.chmag-notice{text-align:left;margin:0 0 16px;border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:13px}
.chmag-notice summary{cursor:pointer;color:var(--ink);font-weight:500}
.chmag-notice p{font-size:13px;margin:10px 0 0}
.chmag-notice a{color:var(--ink)}
.chmag-consent{display:flex;gap:10px;align-items:flex-start;text-align:left;font-size:13px;line-height:1.45;color:var(--mute);margin:0 0 18px;cursor:pointer}
.chmag-consent input{flex:none;width:18px;height:18px;margin:1px 0 0;accent-color:var(--ink)}
.chmag-btn{display:block;width:100%;padding:14px 18px;border:0;border-radius:999px;background:var(--ink);color:#0b0b0b;font-family:inherit;font-size:15px;font-weight:600;line-height:1;cursor:pointer;transition:opacity .15s}
.chmag-btn:hover{opacity:.9}
.chmag-btn:disabled{opacity:.4;cursor:default}
.chmag-btn.chmag-ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.chmag-row{display:flex;gap:10px;margin-top:4px}
.chmag-row .chmag-btn{flex:1}
.chmag-link{display:inline-block;margin-top:14px;color:var(--mute);font-size:14px;text-decoration:underline;cursor:pointer;background:none;border:0}
.chmag-file{display:block}
.chmag-err{color:var(--err)!important;font-size:14px}
.chmag-cam{position:relative;overflow:hidden;border-radius:14px;background:#000;margin:0 0 16px;border:1px solid var(--line)}
.chmag-cam video,.chmag-cam img{display:block;width:100%;height:100%;object-fit:cover}
.chmag-cam-id{aspect-ratio:1.586}
.chmag-cam-face{aspect-ratio:3/4}
.chmag-cam-face video{transform:scaleX(-1)}
.chmag-oval{position:absolute;left:50%;top:46%;width:62%;height:68%;transform:translate(-50%,-50%);border:2px solid rgba(245,241,234,.85);border-radius:50%;box-shadow:0 0 0 999px rgba(0,0,0,.35);pointer-events:none}
.chmag-count{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:"Didot","Bodoni 72",Georgia,serif;font-size:96px;color:var(--ink);text-shadow:0 2px 20px rgba(0,0,0,.6)}
.chmag-prompt{color:var(--ink)!important;font-weight:500}
.chmag-thumbs{display:flex;gap:10px;margin:0 0 16px}
.chmag-thumbs img{flex:1;min-width:0;aspect-ratio:3/4;object-fit:cover;border-radius:12px;border:1px solid var(--line);transform:scaleX(-1)}
.chmag-spin{width:42px;height:42px;margin:6px auto 18px;border:3px solid var(--line);border-top-color:var(--ink);border-radius:50%;animation:chmag-spin .9s linear infinite}
@keyframes chmag-spin{to{transform:rotate(360deg)}}
[hidden]{display:none!important}
@media (prefers-reduced-motion:reduce){.chmag-spin{animation-duration:3s}}
</style>
</head>
<body class="chmag-page">
<main class="chmag-card">
	<img class="chmag-logo" src="data:image/png;base64,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" alt="The Cat House Meow">
	<section class="chmag-step" data-step="intro">
		<h1>Verify your age</h1>
		<p>Your state requires adult sites to confirm every visitor is 18 or older using a government ID.</p>
		<ul class="chmag-points">
			<li>Takes about a minute. Used only to check your age, never sold or used for anything else.</li>
						<li>Checked automatically, then deleted immediately whatever the result. We keep no identifying information.</li>
						<li>Images are encrypted and permanently deleted as soon as a decision is made. We never store your name, birth date or ID number.</li>
					</ul>
		<details class="chmag-notice">
			<summary>Biometric data notice</summary>
						<p>The Cat House Estate LLC will collect a photo of your ID. We will not take a selfie or compare faces.</p>
						<p><strong>Purpose:</strong> age verification required by state law, and nothing else. <strong>Who sees it:</strong> Anthropic, PBC processes the images as our AI service provider. <strong>How long:</strong> deleted as soon as a decision is made, immediately after the automated check.</p>
			<p><a href="https://www.cathousemeow.com/biometric-policy/" target="_blank" rel="noopener">Read our full Biometric Data and Age Verification Policy</a></p>		</details>
		<label class="chmag-consent"><input type="checkbox" id="chmag-consent"> I have read the biometric data notice and policy. I consent to the collection, processing and disclosure described above for age verification, and I agree that ticking this box and pressing Start is my electronic signature on this written release.</label>
		<p class="chmag-err" hidden></p>
		<button class="chmag-btn" data-action="start">Start</button>
		<a class="chmag-link" href="https://www.google.com">Leave</a>
	</section>

	<section class="chmag-step" data-step="id" hidden>
		<h1>Your ID</h1>
		<p>Photograph the front of your driver's license, state ID or passport. Make sure all text is sharp and nothing is covered.</p>
		<div class="chmag-cam chmag-cam-id"><video playsinline muted></video><img alt="" hidden></div>
		<p class="chmag-err" hidden></p>
		<div class="chmag-row" data-when="live">
			<button class="chmag-btn" data-action="id-capture">Capture</button>
		</div>
		<div class="chmag-row" data-when="review" hidden>
			<button class="chmag-btn chmag-ghost" data-action="id-retake">Retake</button>
			<button class="chmag-btn" data-action="id-next">Continue</button>
		</div>
		<label class="chmag-link chmag-file">Upload a photo instead<input type="file" accept="image/*" capture="environment" data-action="id-file" hidden></label>
	</section>

	<section class="chmag-step" data-step="selfie" hidden>
		<h1>Live selfie</h1>
		<p class="chmag-prompt">Center your face in the oval and tap Capture.</p>
		<div class="chmag-cam chmag-cam-face"><video playsinline muted></video><span class="chmag-oval"></span><span class="chmag-count" hidden></span></div>
		<div class="chmag-thumbs" hidden><img alt=""><img alt=""></div>
		<p class="chmag-err" hidden></p>
		<div class="chmag-row" data-when="live">
			<button class="chmag-btn" data-action="selfie-capture">Capture</button>
		</div>
		<div class="chmag-row" data-when="review" hidden>
			<button class="chmag-btn chmag-ghost" data-action="selfie-retake">Retake</button>
			<button class="chmag-btn" data-action="submit">Submit</button>
		</div>
	</section>

	<section class="chmag-step" data-step="working" hidden>
		<div class="chmag-spin" aria-hidden="true"></div>
		<h1>Checking…</h1>
		<p>This usually takes a few seconds.</p>
	</section>

	<section class="chmag-step" data-step="approved" hidden>
		<h1>You're verified</h1>
		<p>Welcome to The Cat House Meow.</p>
		<button class="chmag-btn" data-action="reload">Enter</button>
	</section>

	<section class="chmag-step" data-step="pending" hidden>
		<h1>Under review</h1>
		<p>We couldn't confirm everything automatically, so a member of our team will review it shortly. Come back to this page anytime; it unlocks as soon as you're approved.</p>
		<button class="chmag-btn" data-action="check">Check status</button>
		<p class="chmag-err" hidden></p>
	</section>

	<section class="chmag-step" data-step="denied" hidden>
		<h1>We couldn't verify you</h1>
		<p class="chmag-denied-msg">We weren't able to confirm you're 18 or older. Your images have been deleted. You can try again with a clearer photo of a valid, unexpired ID.</p>
		<button class="chmag-btn" data-action="reload">Try again</button>
		<a class="chmag-link" href="https://www.google.com">Leave</a>
	</section>
</main>
<script nowprocket data-cfasync="false" data-no-optimize="1" data-no-defer="1">window.CHM_AG = {"ajax":"\/wp-admin\/admin-ajax.php","nonce":"0e288e1028","challenge":"right","challengeText":"turn your head to your right","challengeT":1793022381,"challengeSig":"ae714218ff7a26e605736cdffb6b15d1c9194a5ffa0756ffa758931ec08f01b1","exit":"https:\/\/www.google.com","start":"intro","selfie":false,"consentVer":"2026-10-23"};</script>
<script nowprocket data-cfasync="false" data-no-optimize="1" data-no-defer="1">(function () {
	'use strict';
	var C = window.CHM_AG || {};
	var data = { id_front: '', selfie_a: '', selfie_b: '' };
	var stream = null;
	var pollTimer = null;

	function q(sel, root) { return (root || document).querySelector(sel); }
	function qa(sel, root) { return Array.prototype.slice.call((root || document).querySelectorAll(sel)); }
	function step(name) { return q('[data-step="' + name + '"]'); }

	function show(name) {
		qa('.chmag-step').forEach(function (el) { el.hidden = el.getAttribute('data-step') !== name; });
		if (name !== 'id' && name !== 'selfie') stopCam();
		if (name === 'pending') startPolling(); else stopPolling();
		window.scrollTo(0, 0);
	}

	function err(name, msg) {
		var e = q('.chmag-err', step(name));
		if (e) { e.textContent = msg || ''; e.hidden = !msg; }
	}

	function mode(name, m) {
		qa('[data-when]', step(name)).forEach(function (el) { el.hidden = el.getAttribute('data-when') !== m; });
	}

	/* ---------- camera ---------- */

	function stopCam() {
		if (stream) { stream.getTracks().forEach(function (t) { t.stop(); }); stream = null; }
	}

	function startCam(video, facing) {
		stopCam();
		if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {
			return Promise.reject(new Error('Your browser can\'t open the camera. Try Safari or Chrome on your phone.'));
		}
		return navigator.mediaDevices.getUserMedia({
			video: { facingMode: { ideal: facing }, width: { ideal: 1920 }, height: { ideal: 1080 } },
			audio: false
		}).then(function (s) {
			stream = s;
			video.srcObject = s;
			return video.play();
		}).catch(function (e) {
			throw new Error(e && e.name === 'NotAllowedError'
				? 'Camera access was blocked. Allow camera access for this site in your browser settings, then try again.'
				: 'We couldn\'t open your camera.');
		});
	}

	function toJpeg(src, w, h, max, quality) {
		var sc = Math.min(1, max / Math.max(w, h));
		var c = document.createElement('canvas');
		c.width = Math.round(w * sc);
		c.height = Math.round(h * sc);
		c.getContext('2d').drawImage(src, 0, 0, c.width, c.height);
		return c.toDataURL('image/jpeg', quality || 0.82);
	}

	function grab(video, max) {
		if (!video.videoWidth) return '';
		return toJpeg(video, video.videoWidth, video.videoHeight, max);
	}

	function fileToJpeg(file, max) {
		return new Promise(function (resolve, reject) {
			var url = URL.createObjectURL(file);
			var img = new Image();
			img.onload = function () {
				var out = toJpeg(img, img.naturalWidth, img.naturalHeight, max, 0.85);
				URL.revokeObjectURL(url);
				resolve(out);
			};
			img.onerror = function () { URL.revokeObjectURL(url); reject(new Error('That image couldn\'t be read. Try a JPEG or PNG photo.')); };
			img.src = url;
		});
	}

	/* ---------- ID step ---------- */

	function idLive() {
		var s = step('id'), v = q('video', s), im = q('img', s);
		data.id_front = '';
		im.hidden = true; v.hidden = false;
		mode('id', 'live'); err('id', '');
		startCam(v, 'environment').catch(function (e) { err('id', e.message + ' You can also upload a photo instead.'); });
	}

	function idReview(src) {
		var s = step('id'), v = q('video', s), im = q('img', s);
		data.id_front = src;
		im.src = src; im.hidden = false; v.hidden = true;
		stopCam(); mode('id', 'review'); err('id', '');
	}

	/* ---------- selfie step ---------- */

	function selfieLive() {
		var s = step('selfie');
		data.selfie_a = data.selfie_b = '';
		q('.chmag-cam', s).hidden = false;
		q('.chmag-thumbs', s).hidden = true;
		q('.chmag-prompt', s).textContent = 'Center your face in the oval and tap Capture.';
		mode('selfie', 'live'); err('selfie', '');
		q('[data-action="selfie-capture"]', s).disabled = false;
		startCam(q('video', s), 'user').catch(function (e) { err('selfie', e.message); });
	}

	function selfieCapture() {
		var s = step('selfie'), v = q('video', s), btn = q('[data-action="selfie-capture"]', s);
		var count = q('.chmag-count', s), prompt = q('.chmag-prompt', s);
		data.selfie_a = grab(v, 900);
		if (!data.selfie_a) { err('selfie', 'The camera isn\'t ready yet. Give it a second and try again.'); return; }
		btn.disabled = true;
		prompt.textContent = 'Now ' + C.challengeText + '.';
		var n = 3;
		count.hidden = false; count.textContent = n;
		var t = setInterval(function () {
			n -= 1;
			if (n > 0) { count.textContent = n; return; }
			clearInterval(t);
			count.hidden = true;
			data.selfie_b = grab(v, 900);
			stopCam();
			var thumbs = q('.chmag-thumbs', s), imgs = qa('img', thumbs);
			imgs[0].src = data.selfie_a; imgs[1].src = data.selfie_b;
			thumbs.hidden = false;
			q('.chmag-cam', s).hidden = true;
			prompt.textContent = 'Looking good? Submit when you\'re ready.';
			mode('selfie', 'review');
		}, 1000);
	}

	/* ---------- submit + status ---------- */

	function dataUrlToBlob(u) {
		var parts = u.split(','), bin = atob(parts[1]), arr = new Uint8Array(bin.length);
		for (var i = 0; i < bin.length; i++) arr[i] = bin.charCodeAt(i);
		return new Blob([arr], { type: 'image/jpeg' });
	}

	// Tell the server an upload was blocked before reaching WordPress (tiny GET, so it gets through).
	function report(what, status, kb) {
		try { fetch(C.ajax + '?action=chm_ag_report&what=' + what + '&status=' + (status || 0) + '&kb=' + (kb || 0), { credentials: 'same-origin' }); } catch (e) {}
	}

	// Photos go up as real files (firewalls allow far bigger files than text fields).
	// Retries once on a dropped connection; recognizes firewall / security-challenge pages.
	function post(action, fields, attempt) {
		attempt = attempt || 1;
		var fd = new FormData(), kb = 0;
		fd.append('action', action);
		Object.keys(fields || {}).forEach(function (k) {
			var v = fields[k];
			if (typeof v === 'string' && v.indexOf('data:image/') === 0) {
				var b = dataUrlToBlob(v); kb += Math.round(b.size / 1024);
				fd.append(k, b, k + '.jpg');
			} else fd.append(k, v);
		});
		return fetch(C.ajax, { method: 'POST', body: fd, credentials: 'same-origin' }).then(function (r) {
			return r.text().then(function (t) {
				try { return JSON.parse(t); } catch (e) {
					if (action === 'chm_ag_submit') report('blocked', r.status, kb);
					return { success: false, data: { msg: 'Our security system blocked the upload. Please wait a moment and try again. We have been notified.' } };
				}
			});
		}, function () {
			if (attempt < 2) return new Promise(function (res) { setTimeout(res, 1500); }).then(function () { return post(action, fields, attempt + 1); });
			if (action === 'chm_ag_submit') report('network', 0, kb);
			throw new Error('network');
		});
	}

	function submit() {
		show('working');
		var fields = {
			nonce: C.nonce,
			consent: '1',
			consent_ver: C.consentVer,
			challenge: C.challenge,
			challenge_t: C.challengeT,
			challenge_sig: C.challengeSig,
			id_front: data.id_front
		};
		if (C.selfie) { fields.selfie_a = data.selfie_a; fields.selfie_b = data.selfie_b; }
		post('chm_ag_submit', fields).then(function (res) {
			if (!res.success) { backToStart((res.data && res.data.msg) || 'Something went wrong. Please try again.'); return; }
			var st = res.data.status;
			if (st === 'retry') {
				backToStart('We couldn\'t confirm that automatically, and your photos have already been deleted. Please try again: use a valid, unexpired ID, avoid glare, fill the frame and make sure the birth date is sharp.' + (res.data.note ? ' — ' + res.data.note : ''));
				return;
			}
			show(st === 'approved' ? 'approved' : st === 'denied' ? 'denied' : 'pending');
		}).catch(function () { backToStart('We couldn\'t reach our server. Check your connection and try again. If it keeps happening, we have been notified and are fixing it.'); });
	}

	function backToStart(msg) {
		data = { id_front: '', selfie_a: '', selfie_b: '' };
		show('id'); idLive();
		setTimeout(function () { err('id', msg); }, 0);
	}

	function checkStatus(manual) {
		post('chm_ag_status').then(function (res) {
			var st = res && res.data && res.data.status;
			if (st === 'approved') show('approved');
			else if (st === 'denied') show('denied');
			else if (manual) err('pending', 'Still under review. We\'ll unlock the site here as soon as it\'s approved.');
		});
	}

	function startPolling() { stopPolling(); pollTimer = setInterval(function () { checkStatus(false); }, 30000); }
	function stopPolling() { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } }

	/* ---------- wiring ---------- */

	document.addEventListener('click', function (e) {
		var el = e.target.closest('[data-action]');
		if (!el || el.tagName === 'INPUT') return;
		var a = el.getAttribute('data-action');
		if (a === 'start') {
			if (!q('#chmag-consent').checked) { err('intro', 'Please tick the box to continue.'); return; }
			show('id'); idLive();
		} else if (a === 'id-capture') {
			var src = grab(q('video', step('id')), 1600);
			if (src) idReview(src); else err('id', 'The camera isn\'t ready yet. Try again in a second.');
		} else if (a === 'id-retake') {
			idLive();
		} else if (a === 'id-next') {
			if (C.selfie) { show('selfie'); selfieLive(); }
			else if (data.id_front) submit();
		} else if (a === 'selfie-capture') {
			selfieCapture();
		} else if (a === 'selfie-retake') {
			selfieLive();
		} else if (a === 'submit') {
			if (data.id_front && (!C.selfie || (data.selfie_a && data.selfie_b))) submit();
		} else if (a === 'check') {
			checkStatus(true);
		} else if (a === 'reload') {
			window.location.reload();
		}
	});

	var fileInput = q('[data-action="id-file"]');
	if (fileInput) {
		fileInput.addEventListener('change', function () {
			var f = fileInput.files && fileInput.files[0];
			if (!f) return;
			fileToJpeg(f, 1600).then(idReview).catch(function (e) { err('id', e.message); });
			fileInput.value = '';
		});
	}

	if (!C.selfie) { var nx = q('[data-action="id-next"]'); if (nx) nx.textContent = 'Submit'; }
	window.addEventListener('pagehide', stopCam);
	show(C.start || 'intro');
})();
</script>
</body>
</html>