{"product_id":"eufy-security-keypad-brand-new","title":"eufy Security Keypad | Brand New","description":"\u003cstyle\u003e\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Sora:wght@400;600;700;800\u0026family=DM+Sans:opsz,wght@9..40,300..700\u0026family=Caveat:wght@500;700\u0026display=swap');\n\n\/* ================= THE FRIDGE PIN - eufy Security Keypad (T8960) - Brand New =================\n   Theme: the household code everybody half remembers. Fridge white + brushed steel,\n   primary-colour magnets, lined notepaper, biro blue.\n   Set pieces: hub requirement as a loud magnet \/ honest bit as crossed-out old codes \/\n   specs as a kitchen whiteboard \/ FAQ as magnet notes on a fridge door.\n   Mobile-first, 390px design width. CSS-only animation, no scripts.\n   Every selector scoped under .cgkpb. Keyframes prefixed cgkpb-. No external links. *\/\n\n\/* ---------- reset + bleed-in guard (Shopify theme CSS leaks INTO this fragment) ---------- *\/\n.cgkpb, .cgkpb *, .cgkpb *::before, .cgkpb *::after {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n  letter-spacing: normal;\n  text-shadow: none;\n  text-transform: none;\n  float: none;\n  -webkit-font-smoothing: antialiased;\n}\n.cgkpb {\n  \/* palette *\/\n  --fridge: #f4f6f7;\n  --fridge-hi: #ffffff;\n  --fridge-deep: #e7ebee;\n  --steel: #ccd4da;\n  --steel-dark: #94a1ab;\n  --ink: #1c2126;\n  --ink-soft: #545f6a;\n  --note: #fffbe6;\n  --note-edge: #e9dcaa;\n  --note-line: #dde5f1;\n  --biro: #1b3fae;\n  --biro-deep: #142f80;\n  --red: #c62828;\n  --red-deep: #971c1c;\n  --blue: #1f6fd0;\n  --yellow: #f5c518;\n  --yellow-deep: #7a5300;\n  --green: #1e6b34;\n  --green-soft: #e6f3ea;\n  --rose-soft: #fbe7e4;\n  --rose-ink: #a8261a;\n  --amber-soft: #fdf3d6;\n  --night: #17212f;\n  --night-2: #0d151f;\n  --magnet-grad: linear-gradient(115deg, #f5c518 0%, #e8562f 52%, #c62828 100%);\n  --steel-grad: linear-gradient(102deg, #ffffff 0%, #eef1f4 38%, #dde4ea 58%, #ffffff 100%);\n  --biro-grad: linear-gradient(120deg, #2f86e8 0%, #1b3fae 55%, #142f80 100%);\n\n  font-family: 'DM Sans', system-ui, -apple-system, Segoe UI, sans-serif;\n  font-size: 16px;\n  font-weight: 400;\n  line-height: 1.6;\n  color: var(--ink);\n  text-align: left;\n  background: var(--fridge);\n  max-width: 880px;\n  margin: 0 auto;\n  border: 1px solid var(--steel);\n  border-radius: 20px;\n  overflow: hidden;\n  box-shadow: 0 24px 64px rgba(28,33,38,0.14);\n  -webkit-text-size-adjust: 100%;\n}\n.cgkpb h1, .cgkpb h2, .cgkpb h3, .cgkpb h4 {\n  font-family: 'Sora', system-ui, sans-serif;\n  line-height: 1.2;\n  letter-spacing: -0.02em;\n  font-weight: 800;\n}\n.cgkpb p { margin: 0; }\n.cgkpb ul, .cgkpb ol { list-style: none; }\n.cgkpb table { width: 100%; border-collapse: collapse; }\n.cgkpb img { max-width: 100%; height: auto; display: block; }\n.cgkpb svg { display: block; max-width: 100%; }\n.cgkpb section { padding: 34px 18px; }\n\n\/* ---------- keyframes ---------- *\/\n@keyframes cgkpb-rise {\n  from { opacity: 0; transform: translateY(22px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n@keyframes cgkpb-shimmer {\n  0%   { background-position: -200% center; }\n  100% { background-position: 200% center; }\n}\n@keyframes cgkpb-gradshift {\n  0%, 100% { background-position: 0% 50%; }\n  50%      { background-position: 100% 50%; }\n}\n@keyframes cgkpb-sheen {\n  0%   { transform: translateX(-120%) skewX(-16deg); }\n  55%  { transform: translateX(320%) skewX(-16deg); }\n  100% { transform: translateX(320%) skewX(-16deg); }\n}\n@keyframes cgkpb-wobble {\n  0%, 100% { transform: rotate(-1.6deg); }\n  50%      { transform: rotate(1.6deg); }\n}\n@keyframes cgkpb-hum {\n  0%, 100% { transform: scale(1); }\n  50%      { transform: scale(1.05); }\n}\n@keyframes cgkpb-keyglow {\n  0%, 72%, 100% { background: #f2f4f6; color: #545f6a; box-shadow: inset 0 -2px 0 rgba(0,0,0,0.07); }\n  12%, 40%      { background: #fff3c4; color: #1c2126; box-shadow: 0 0 0 4px rgba(245,197,24,0.28), inset 0 -2px 0 rgba(0,0,0,0.07); }\n}\n@keyframes cgkpb-magnetpulse {\n  0%, 100% { box-shadow: 0 0 0 0 rgba(198,40,40,0.45); }\n  50%      { box-shadow: 0 0 0 15px rgba(198,40,40,0); }\n}\n@keyframes cgkpb-write {\n  from { stroke-dashoffset: 260; }\n  to   { stroke-dashoffset: 0; }\n}\n@keyframes cgkpb-curl {\n  0%, 100% { transform: translateY(0) rotate(0deg); }\n  50%      { transform: translateY(-4px) rotate(-1.2deg); }\n}\n@keyframes cgkpb-tick {\n  0%, 100% { transform: translateY(0); }\n  50%      { transform: translateY(-5px); }\n}\n\n\/* ---------- nav ---------- *\/\n.cgkpb .cgkpb-nav {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n  justify-content: space-between;\n  align-items: center;\n  padding: 14px 18px;\n  border-bottom: 1px solid var(--steel);\n  background: var(--fridge-hi);\n}\n.cgkpb .cgkpb-brand { font-family: 'Sora', sans-serif; font-weight: 800; font-size: 16px; }\n.cgkpb .cgkpb-brand span {\n  background: var(--biro-grad);\n  -webkit-background-clip: text;\n  background-clip: text;\n  color: transparent;\n}\n.cgkpb .cgkpb-navtag {\n  font-size: 11.5px;\n  font-weight: 600;\n  color: var(--ink-soft);\n  background: var(--fridge-deep);\n  padding: 6px 12px;\n  border-radius: 999px;\n}\n\n\/* ---------- fridge door surface (shared) ---------- *\/\n.cgkpb .cgkpb-door {\n  position: relative;\n  overflow: hidden;\n  background:\n    linear-gradient(178deg, #ffffff 0%, #eef2f5 48%, #e2e8ed 100%),\n    repeating-linear-gradient(90deg, rgba(255,255,255,0) 0 3px, rgba(148,161,171,0.09) 3px 4px);\n}\n.cgkpb .cgkpb-door::after {\n  content: '';\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 42%;\n  height: 100%;\n  background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.85) 50%, rgba(255,255,255,0) 100%);\n  animation: cgkpb-sheen 9s ease-in-out infinite;\n  pointer-events: none;\n}\n.cgkpb .cgkpb-door \u003e * { position: relative; z-index: 1; }\n.cgkpb .cgkpb-handle { display: none; }\n\n\/* ---------- hero ---------- *\/\n.cgkpb .cgkpb-hero { padding: 36px 18px 34px; text-align: left; }\n.cgkpb .cgkpb-chip {\n  display: inline-block;\n  font-size: 11.5px;\n  font-weight: 800;\n  letter-spacing: 0.08em;\n  text-transform: uppercase;\n  color: #2a2210;\n  padding: 8px 16px;\n  border-radius: 999px;\n  margin-bottom: 16px;\n  border: 1px solid rgba(122,83,0,0.35);\n  background: linear-gradient(110deg, #f5c518 26%, #fff0b3 42%, #f5c518 58%) 0 0 \/ 220% 100%;\n  animation: cgkpb-shimmer 4s linear infinite;\n  box-shadow: 0 5px 16px rgba(245,197,24,0.4);\n}\n.cgkpb .cgkpb-hero h1 {\n  font-size: 30px;\n  margin-bottom: 12px;\n  animation: cgkpb-rise 0.8s ease-out both;\n}\n.cgkpb .cgkpb-hero h1 em {\n  font-style: normal;\n  background: var(--biro-grad);\n  -webkit-background-clip: text;\n  background-clip: text;\n  color: transparent;\n}\n.cgkpb .cgkpb-sub {\n  font-size: 16.5px;\n  color: var(--ink-soft);\n  max-width: 560px;\n  margin-bottom: 20px;\n  animation: cgkpb-rise 0.8s ease-out 0.12s both;\n}\n.cgkpb .cgkpb-heronote {\n  display: block;\n  font-size: 14px;\n  font-weight: 700;\n  color: #2a2210;\n  background: var(--yellow);\n  border: 2px solid #d9ac00;\n  border-radius: 6px;\n  padding: 12px 14px;\n  box-shadow: 0 8px 18px rgba(122,83,0,0.22);\n  animation: cgkpb-rise 0.8s ease-out 0.24s both;\n}\n\n\/* the stuck-on note (hero illustration + real text) *\/\n.cgkpb .cgkpb-stuck {\n  position: relative;\n  margin: 22px 0 20px;\n  max-width: 320px;\n  animation: cgkpb-curl 7s ease-in-out infinite;\n}\n.cgkpb .cgkpb-stuck .cgkpb-doodle { width: 100%; height: auto; }\n.cgkpb .cgkpb-stuck-text {\n  position: absolute;\n  left: 15%;\n  top: 26%;\n  right: 14%;\n  font-family: 'Caveat', 'DM Sans', cursive;\n  font-weight: 700;\n  font-size: 20px;\n  line-height: 1.45;\n  color: var(--biro-deep);\n}\n.cgkpb .cgkpb-write {\n  stroke-dasharray: 260;\n  animation: cgkpb-write 2.4s ease-out both;\n}\n.cgkpb .cgkpb-write-2 { animation-delay: 0.35s; }\n.cgkpb .cgkpb-write-3 { animation-delay: 0.7s; }\n\n\/* ---------- SET PIECE 1: the loud hub magnet ---------- *\/\n.cgkpb .cgkpb-hubwrap { background: var(--fridge-deep); border-top: 1px solid var(--steel); border-bottom: 1px solid var(--steel); }\n.cgkpb .cgkpb-magnetnote {\n  position: relative;\n  background: var(--yellow);\n  border: 3px solid #d9ac00;\n  border-radius: 8px;\n  padding: 30px 18px 22px;\n  box-shadow: 0 14px 34px rgba(122,83,0,0.28);\n  transform: rotate(-0.9deg);\n  transition: transform 0.3s ease;\n}\n.cgkpb .cgkpb-magnetnote:hover { transform: rotate(0deg); }\n.cgkpb .cgkpb-magnetnote::before {\n  content: '';\n  position: absolute;\n  top: -17px;\n  left: 50%;\n  margin-left: -17px;\n  width: 34px;\n  height: 34px;\n  border-radius: 50%;\n  background: radial-gradient(circle at 34% 30%, #ff6b6b 0%, #c62828 55%, #8c1616 100%);\n  box-shadow: 0 4px 10px rgba(0,0,0,0.3);\n  animation: cgkpb-magnetpulse 2.8s ease-in-out infinite;\n}\n.cgkpb .cgkpb-hubtab {\n  display: inline-block;\n  font-size: 11px;\n  font-weight: 800;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  background: var(--red);\n  color: #fff;\n  padding: 6px 12px;\n  border-radius: 4px;\n  margin-bottom: 12px;\n}\n.cgkpb .cgkpb-magnetnote h2 { font-size: 22px; color: #33280b; margin-bottom: 10px; }\n.cgkpb .cgkpb-magnetnote p { color: #3d3110; margin-bottom: 10px; font-size: 15.5px; }\n.cgkpb .cgkpb-magnetnote p:last-child { margin-bottom: 0; }\n.cgkpb .cgkpb-magnetnote strong { color: #241c05; }\n.cgkpb .cgkpb-hublist { margin: 0 0 12px; }\n.cgkpb .cgkpb-hublist li {\n  position: relative;\n  padding: 5px 0 5px 26px;\n  font-size: 15.5px;\n  color: #3d3110;\n  font-weight: 600;\n}\n.cgkpb .cgkpb-hublist li::before {\n  content: '✔';\n  position: absolute;\n  left: 2px;\n  color: #7a5300;\n  font-weight: 800;\n}\n\n\/* ---------- condition callout ---------- *\/\n.cgkpb .cgkpb-cond { background: var(--fridge-hi); }\n.cgkpb .cgkpb-condcard {\n  border: 1px solid var(--steel);\n  border-left: 6px solid var(--blue);\n  border-radius: 14px;\n  padding: 22px 18px;\n  background: #fff;\n  box-shadow: 0 10px 26px rgba(28,33,38,0.07);\n}\n.cgkpb .cgkpb-condcard h2 { font-size: 21px; margin-bottom: 10px; }\n.cgkpb .cgkpb-condcard p { color: var(--ink-soft); margin-bottom: 10px; font-size: 15.5px; }\n.cgkpb .cgkpb-condcard p:last-child { margin-bottom: 0; }\n.cgkpb .cgkpb-condcard strong { color: var(--ink); }\n\n\/* ---------- bento: magnet tiles ---------- *\/\n.cgkpb .cgkpb-bento { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }\n.cgkpb .cgkpb-tile {\n  background: #fff;\n  border: 1px solid var(--steel);\n  border-radius: 10px;\n  padding: 16px 12px;\n  text-align: center;\n  position: relative;\n  overflow: hidden;\n  animation: cgkpb-rise 0.65s ease-out both;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n  transform: rotate(-0.7deg);\n}\n.cgkpb .cgkpb-tile:nth-child(even) { transform: rotate(0.8deg); }\n.cgkpb .cgkpb-tile::before {\n  content: '';\n  position: absolute;\n  top: 0; left: 0; right: 0;\n  height: 5px;\n  background: var(--magnet-grad);\n}\n.cgkpb .cgkpb-tile:nth-child(2) { animation-delay: 0.07s; }\n.cgkpb .cgkpb-tile:nth-child(3) { animation-delay: 0.14s; }\n.cgkpb .cgkpb-tile:nth-child(4) { animation-delay: 0.21s; }\n.cgkpb .cgkpb-tile:nth-child(5) { animation-delay: 0.28s; }\n.cgkpb .cgkpb-tile:nth-child(6) { animation-delay: 0.35s; }\n.cgkpb .cgkpb-tile:hover {\n  transform: rotate(0deg) translateY(-5px);\n  box-shadow: 0 14px 28px rgba(28,33,38,0.16);\n}\n.cgkpb .cgkpb-tile .cgkpb-big {\n  display: block;\n  font-family: 'Sora', sans-serif;\n  font-weight: 800;\n  font-size: 25px;\n  margin-bottom: 3px;\n  background: var(--biro-grad);\n  -webkit-background-clip: text;\n  background-clip: text;\n  color: transparent;\n}\n.cgkpb .cgkpb-tile .cgkpb-small { font-size: 12.5px; color: var(--ink-soft); line-height: 1.4; display: block; }\n\n\/* ---------- scenes ---------- *\/\n.cgkpb .cgkpb-scene { border-top: 1px solid var(--steel); background: var(--fridge-hi); }\n.cgkpb .cgkpb-scene h2 { font-size: 24px; margin-bottom: 12px; }\n.cgkpb .cgkpb-scene h2 span {\n  background: var(--biro-grad);\n  -webkit-background-clip: text;\n  background-clip: text;\n  color: transparent;\n}\n.cgkpb .cgkpb-scene p { color: var(--ink-soft); margin-bottom: 13px; }\n.cgkpb .cgkpb-scene p:last-of-type { margin-bottom: 0; }\n.cgkpb .cgkpb-scene strong { color: var(--ink); }\n.cgkpb .cgkpb-scenetag {\n  display: inline-block;\n  font-family: 'Caveat', cursive;\n  font-weight: 700;\n  font-size: 19px;\n  color: var(--biro);\n  margin-bottom: 6px;\n}\n.cgkpb .cgkpb-scene-dark {\n  background: var(--night);\n  background-image: radial-gradient(ellipse at 88% 8%, rgba(245,197,24,0.16), transparent 58%);\n  border-top: none;\n  color: #e8edf3;\n}\n.cgkpb .cgkpb-scene-dark h2 { color: #fff; }\n.cgkpb .cgkpb-scene-dark p { color: #b9c4d1; }\n.cgkpb .cgkpb-scene-dark strong { color: #fff; }\n.cgkpb .cgkpb-scene-dark .cgkpb-scenetag { color: var(--yellow); }\n\n\/* keypad motif *\/\n.cgkpb .cgkpb-pad {\n  display: grid;\n  grid-template-columns: repeat(3, 52px);\n  gap: 9px;\n  margin: 20px 0 4px;\n  justify-content: start;\n}\n.cgkpb .cgkpb-key {\n  width: 52px;\n  height: 52px;\n  border-radius: 50%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-family: 'Sora', sans-serif;\n  font-weight: 700;\n  font-size: 17px;\n  background: #f2f4f6;\n  color: var(--ink-soft);\n  border: 1px solid var(--steel);\n  animation: cgkpb-keyglow 6s ease-in-out infinite;\n}\n.cgkpb .cgkpb-key:nth-child(1) { animation-delay: 0s; }\n.cgkpb .cgkpb-key:nth-child(2) { animation-delay: 1.6s; }\n.cgkpb .cgkpb-key:nth-child(3) { animation-delay: 3.2s; }\n.cgkpb .cgkpb-key:nth-child(4) { animation-delay: 0.8s; }\n.cgkpb .cgkpb-key:nth-child(5) { animation-delay: 2.4s; }\n.cgkpb .cgkpb-key:nth-child(6) { animation-delay: 4s; }\n.cgkpb .cgkpb-key:nth-child(7) { animation-delay: 4.8s; }\n.cgkpb .cgkpb-key:nth-child(8) { animation-delay: 2s; }\n.cgkpb .cgkpb-key:nth-child(9) { animation-delay: 3.6s; }\n.cgkpb .cgkpb-key:nth-child(10) { animation-delay: 5.2s; }\n.cgkpb .cgkpb-key:nth-child(11) { animation-delay: 1.2s; }\n.cgkpb .cgkpb-key:nth-child(12) { animation-delay: 4.4s; }\n.cgkpb .cgkpb-padcap { font-size: 13px; color: var(--ink-soft); margin-top: 12px; }\n\n\/* ---------- vibe pull-quote ---------- *\/\n.cgkpb .cgkpb-vibe {\n  background: var(--magnet-grad);\n  background-size: 220% 220%;\n  animation: cgkpb-gradshift 11s ease-in-out infinite;\n  color: #2c1608;\n  text-align: center;\n  position: relative;\n  overflow: hidden;\n}\n.cgkpb .cgkpb-vibe::before {\n  content: '';\n  position: absolute;\n  left: -30px;\n  top: -30px;\n  width: 130px;\n  height: 130px;\n  border-radius: 50%;\n  background: radial-gradient(circle at 36% 32%, rgba(255,255,255,0.5), rgba(255,255,255,0) 70%);\n  animation: cgkpb-hum 6s ease-in-out infinite;\n}\n.cgkpb .cgkpb-vibe blockquote {\n  font-family: 'Sora', sans-serif;\n  font-weight: 700;\n  font-size: 21px;\n  line-height: 1.34;\n  max-width: 620px;\n  margin: 0 auto;\n  position: relative;\n}\n.cgkpb .cgkpb-vibe cite {\n  display: block;\n  font-family: 'DM Sans', sans-serif;\n  font-style: normal;\n  font-weight: 600;\n  font-size: 13px;\n  margin-top: 14px;\n  color: #4a2408;\n  position: relative;\n}\n\n\/* ---------- SET PIECE 2: honest bit as crossed-out old codes ---------- *\/\n.cgkpb .cgkpb-honest { background: var(--fridge-deep); }\n.cgkpb .cgkpb-honest h2 { font-size: 24px; margin-bottom: 8px; }\n.cgkpb .cgkpb-honest \u003e p { color: var(--ink-soft); margin-bottom: 18px; }\n.cgkpb .cgkpb-pad-paper {\n  background: var(--note);\n  background-image: repeating-linear-gradient(180deg, transparent 0 33px, var(--note-line) 33px 34px);\n  border: 1px solid var(--note-edge);\n  border-left: 5px solid #e05a5a;\n  border-radius: 6px;\n  padding: 16px 14px 6px;\n  box-shadow: 0 12px 28px rgba(28,33,38,0.10);\n}\n.cgkpb .cgkpb-oldline {\n  padding: 12px 0 14px;\n  border-bottom: 1px dashed rgba(122,83,0,0.28);\n  animation: cgkpb-rise 0.6s ease-out both;\n}\n.cgkpb .cgkpb-oldline:last-child { border-bottom: none; }\n.cgkpb .cgkpb-oldline:nth-child(2) { animation-delay: 0.05s; }\n.cgkpb .cgkpb-oldline:nth-child(3) { animation-delay: 0.1s; }\n.cgkpb .cgkpb-oldline:nth-child(4) { animation-delay: 0.15s; }\n.cgkpb .cgkpb-oldline:nth-child(5) { animation-delay: 0.2s; }\n.cgkpb .cgkpb-oldline:nth-child(6) { animation-delay: 0.25s; }\n.cgkpb .cgkpb-oldline:nth-child(7) { animation-delay: 0.3s; }\n.cgkpb .cgkpb-oldcode {\n  display: block;\n  font-family: 'Caveat', cursive;\n  font-weight: 700;\n  font-size: 19px;\n  color: #8a6a1a;\n  margin-bottom: 2px;\n}\n.cgkpb .cgkpb-oldcode s { color: #a8261a; text-decoration-thickness: 2px; }\n.cgkpb .cgkpb-oldline strong {\n  display: block;\n  font-family: 'Sora', sans-serif;\n  font-weight: 700;\n  font-size: 16px;\n  color: var(--ink);\n  margin-bottom: 3px;\n}\n.cgkpb .cgkpb-oldline p { font-size: 15px; color: #4c463a; }\n.cgkpb .cgkpb-honest-foot { margin-top: 16px; font-size: 14px; color: var(--ink-soft); }\n\n\/* ---------- trust grid ---------- *\/\n.cgkpb .cgkpb-trust { background: var(--fridge-hi); }\n.cgkpb .cgkpb-trust h2 { font-size: 24px; margin-bottom: 18px; }\n.cgkpb .cgkpb-trustgrid { display: grid; grid-template-columns: 1fr; gap: 12px; }\n.cgkpb .cgkpb-trustcard {\n  background: var(--green-soft);\n  border-radius: 14px;\n  padding: 18px 18px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.cgkpb .cgkpb-trustcard:hover { transform: translateY(-4px); box-shadow: 0 14px 28px rgba(30,107,52,0.16); }\n.cgkpb .cgkpb-trustcard strong { display: block; color: var(--green); margin-bottom: 3px; font-family: 'Sora', sans-serif; font-size: 15.5px; }\n.cgkpb .cgkpb-trustcard p { font-size: 14.5px; color: #3f4a44; }\n\n\/* ---------- SET PIECE 3: specs as a kitchen whiteboard ---------- *\/\n.cgkpb .cgkpb-specs { background: var(--fridge-deep); }\n.cgkpb .cgkpb-board {\n  position: relative;\n  background: #fdfefe;\n  border: 8px solid #c9d1d8;\n  border-radius: 12px;\n  padding: 22px 12px 16px;\n  box-shadow: 0 16px 36px rgba(28,33,38,0.16), inset 0 0 40px rgba(200,214,226,0.35);\n}\n.cgkpb .cgkpb-board::before {\n  content: '';\n  position: absolute;\n  top: -26px;\n  left: 50%;\n  margin-left: -15px;\n  width: 30px;\n  height: 30px;\n  border-radius: 50%;\n  background: radial-gradient(circle at 34% 30%, #7db4ff 0%, #1f6fd0 55%, #14468a 100%);\n  box-shadow: 0 4px 10px rgba(0,0,0,0.28);\n  animation: cgkpb-hum 4.5s ease-in-out infinite;\n}\n.cgkpb .cgkpb-board h2 {\n  font-family: 'Caveat', cursive;\n  font-weight: 700;\n  font-size: 30px;\n  color: var(--biro);\n  letter-spacing: 0;\n  margin-bottom: 2px;\n}\n.cgkpb .cgkpb-boardsub { font-size: 13.5px; color: var(--ink-soft); margin-bottom: 14px; }\n.cgkpb .cgkpb-underline { width: 190px; height: 14px; margin-bottom: 8px; }\n.cgkpb .cgkpb-underline path {\n  stroke-dasharray: 260;\n  animation: cgkpb-write 1.8s ease-out 0.2s both;\n}\n.cgkpb .cgkpb-tablewrap { overflow-x: auto; }\n.cgkpb .cgkpb-board table { font-size: 14.5px; }\n.cgkpb .cgkpb-board th, .cgkpb .cgkpb-board td {\n  text-align: left;\n  padding: 10px 8px;\n  border-bottom: 1px solid #dde5ec;\n  vertical-align: top;\n}\n.cgkpb .cgkpb-board th { width: 40%; color: var(--ink-soft); font-weight: 600; }\n.cgkpb .cgkpb-board td { color: var(--ink); }\n.cgkpb .cgkpb-board tr { transition: background 0.2s ease; }\n.cgkpb .cgkpb-board tr:hover { background: #eff6fd; }\n.cgkpb .cgkpb-tray {\n  height: 12px;\n  margin: 16px -12px -16px;\n  border-radius: 0 0 6px 6px;\n  background: linear-gradient(180deg, #b9c3cb, #98a4ae);\n  position: relative;\n}\n.cgkpb .cgkpb-tray::before,\n.cgkpb .cgkpb-tray::after {\n  content: '';\n  position: absolute;\n  top: -7px;\n  height: 8px;\n  width: 46px;\n  border-radius: 4px;\n}\n.cgkpb .cgkpb-tray::before { left: 18px; background: var(--biro); }\n.cgkpb .cgkpb-tray::after { left: 74px; background: var(--red); }\n\n\/* ---------- compatibility ---------- *\/\n.cgkpb .cgkpb-compat { background: var(--fridge-hi); }\n.cgkpb .cgkpb-compat h2 { font-size: 24px; margin-bottom: 6px; }\n.cgkpb .cgkpb-compat \u003e p { color: var(--ink-soft); margin-bottom: 16px; }\n.cgkpb .cgkpb-row {\n  display: flex;\n  align-items: flex-start;\n  gap: 11px;\n  padding: 12px 8px;\n  border-bottom: 1px solid var(--fridge-deep);\n  border-radius: 8px;\n  transition: background 0.2s ease;\n}\n.cgkpb .cgkpb-row:hover { background: var(--fridge); }\n.cgkpb .cgkpb-badge {\n  flex: 0 0 auto;\n  font-size: 11px;\n  font-weight: 800;\n  letter-spacing: 0.05em;\n  padding: 5px 10px;\n  border-radius: 999px;\n  margin-top: 2px;\n}\n.cgkpb .cgkpb-yes { background: var(--green-soft); color: var(--green); }\n.cgkpb .cgkpb-no { background: var(--rose-soft); color: var(--rose-ink); }\n.cgkpb .cgkpb-note-badge { background: var(--amber-soft); color: var(--yellow-deep); }\n.cgkpb .cgkpb-row p { font-size: 14.5px; color: var(--ink-soft); }\n.cgkpb .cgkpb-row p strong { color: var(--ink); }\n\n\/* ---------- fit columns ---------- *\/\n.cgkpb .cgkpb-fitwrap { background: var(--fridge-deep); }\n.cgkpb .cgkpb-fit { display: grid; grid-template-columns: 1fr; gap: 14px; }\n.cgkpb .cgkpb-fitcol { border-radius: 16px; padding: 22px 18px; transition: transform 0.3s ease; }\n.cgkpb .cgkpb-fitcol:hover { transform: translateY(-4px); }\n.cgkpb .cgkpb-fit-no { background: #fff; border: 1px solid var(--steel); }\n.cgkpb .cgkpb-fit-yes {\n  background: var(--night);\n  background-image: radial-gradient(ellipse at 92% 0%, rgba(245,197,24,0.2), transparent 58%);\n  color: #e8edf3;\n}\n.cgkpb .cgkpb-fitcol h3 { font-size: 18px; margin-bottom: 12px; }\n.cgkpb .cgkpb-fit-yes h3 { color: var(--yellow); }\n.cgkpb .cgkpb-fitcol li { padding: 7px 0 7px 25px; position: relative; font-size: 15px; }\n.cgkpb .cgkpb-fit-no li { color: var(--ink-soft); }\n.cgkpb .cgkpb-fit-yes li { color: #c4cedb; }\n.cgkpb .cgkpb-fit-no li::before { content: '✕'; position: absolute; left: 0; color: var(--rose-ink); font-weight: 700; }\n.cgkpb .cgkpb-fit-yes li::before { content: '✓'; position: absolute; left: 0; color: var(--yellow); font-weight: 700; }\n\n\/* ---------- setup ---------- *\/\n.cgkpb .cgkpb-setup { background: var(--fridge-hi); }\n.cgkpb .cgkpb-setup h2 { font-size: 24px; margin-bottom: 18px; }\n.cgkpb .cgkpb-steps { display: grid; grid-template-columns: 1fr; gap: 12px; }\n.cgkpb .cgkpb-step {\n  background: #fff;\n  border: 1px solid var(--steel);\n  border-radius: 14px;\n  padding: 18px 16px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.cgkpb .cgkpb-step:hover { transform: translateY(-4px); box-shadow: 0 14px 28px rgba(28,33,38,0.12); }\n.cgkpb .cgkpb-stepnum {\n  display: inline-flex;\n  width: 34px;\n  height: 34px;\n  align-items: center;\n  justify-content: center;\n  border-radius: 50%;\n  font-family: 'Sora', sans-serif;\n  font-weight: 800;\n  font-size: 14px;\n  color: #2a2210;\n  background: var(--magnet-grad);\n  margin-bottom: 9px;\n  animation: cgkpb-tick 3.4s ease-in-out infinite;\n}\n.cgkpb .cgkpb-step:nth-child(2) .cgkpb-stepnum { animation-delay: 0.35s; }\n.cgkpb .cgkpb-step:nth-child(3) .cgkpb-stepnum { animation-delay: 0.7s; }\n.cgkpb .cgkpb-step:nth-child(4) .cgkpb-stepnum { animation-delay: 1.05s; }\n.cgkpb .cgkpb-step strong { display: block; font-family: 'Sora', sans-serif; font-size: 15.5px; margin-bottom: 4px; }\n.cgkpb .cgkpb-step p { font-size: 14px; color: var(--ink-soft); }\n\n\/* ---------- included ---------- *\/\n.cgkpb .cgkpb-inc { background: var(--fridge-deep); }\n.cgkpb .cgkpb-inc h2 { font-size: 24px; margin-bottom: 8px; }\n.cgkpb .cgkpb-inc h3 { font-size: 17px; margin: 20px 0 10px; }\n.cgkpb .cgkpb-inc \u003e p { color: var(--ink-soft); margin-bottom: 14px; font-size: 15px; }\n.cgkpb .cgkpb-inclist { display: grid; grid-template-columns: 1fr; gap: 8px; }\n.cgkpb .cgkpb-inclist li {\n  background: #fff;\n  border: 1px solid var(--steel);\n  border-radius: 10px;\n  padding: 12px 14px;\n  font-size: 14.5px;\n  transition: transform 0.25s ease, box-shadow 0.25s ease;\n}\n.cgkpb .cgkpb-inclist li:hover { transform: translateY(-3px); box-shadow: 0 10px 20px rgba(28,33,38,0.10); }\n.cgkpb .cgkpb-notinc li { background: var(--rose-soft); border-color: #f0c8c1; color: #5c2b24; }\n.cgkpb .cgkpb-incnote { margin-top: 14px; font-size: 13.5px; color: var(--ink-soft); }\n\n\/* ---------- shipping ---------- *\/\n.cgkpb .cgkpb-ship { background: var(--fridge-hi); }\n.cgkpb .cgkpb-ship h2 { font-size: 24px; margin-bottom: 18px; }\n.cgkpb .cgkpb-shipgrid { display: grid; grid-template-columns: 1fr; gap: 12px; }\n.cgkpb .cgkpb-shipcard {\n  background: #fff;\n  border: 1px solid var(--steel);\n  border-top: 4px solid var(--blue);\n  border-radius: 14px;\n  padding: 18px 16px;\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.cgkpb .cgkpb-shipcard:nth-child(2) { border-top-color: var(--green); }\n.cgkpb .cgkpb-shipcard:nth-child(3) { border-top-color: var(--yellow); }\n.cgkpb .cgkpb-shipcard:hover { transform: translateY(-4px); box-shadow: 0 14px 28px rgba(28,33,38,0.12); }\n.cgkpb .cgkpb-shipcard strong { display: block; font-family: 'Sora', sans-serif; font-size: 15.5px; margin-bottom: 5px; color: var(--biro-deep); }\n.cgkpb .cgkpb-shipcard p { font-size: 14px; color: var(--ink-soft); }\n\n\/* ---------- SET PIECE 4: FAQ as magnet notes on the fridge door ---------- *\/\n.cgkpb .cgkpb-faq { padding-top: 30px; padding-bottom: 34px; }\n.cgkpb .cgkpb-faq h2 { font-size: 24px; margin-bottom: 4px; }\n.cgkpb .cgkpb-faq \u003e p { color: var(--ink-soft); margin-bottom: 18px; font-size: 15px; }\n.cgkpb .cgkpb-faq details {\n  position: relative;\n  background: var(--note);\n  border: 1px solid var(--note-edge);\n  border-radius: 4px;\n  margin: 0 0 16px;\n  padding: 0 14px;\n  box-shadow: 0 8px 20px rgba(28,33,38,0.12);\n  transform: rotate(-0.6deg);\n  transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n.cgkpb .cgkpb-faq details:nth-child(even) { transform: rotate(0.7deg); background: #f2f7ff; border-color: #cfe0f5; }\n.cgkpb .cgkpb-faq details:nth-child(3n) { background: #fff1f0; border-color: #f3cfc9; }\n.cgkpb .cgkpb-faq details:hover { transform: rotate(0deg); box-shadow: 0 14px 28px rgba(28,33,38,0.18); }\n.cgkpb .cgkpb-faq details::before {\n  content: '';\n  position: absolute;\n  top: -11px;\n  left: 22px;\n  width: 22px;\n  height: 22px;\n  border-radius: 50%;\n  background: radial-gradient(circle at 34% 30%, #ffd76b 0%, #f5c518 55%, #b58a00 100%);\n  box-shadow: 0 3px 7px rgba(0,0,0,0.28);\n}\n.cgkpb .cgkpb-faq details:nth-child(even)::before { background: radial-gradient(circle at 34% 30%, #7db4ff 0%, #1f6fd0 55%, #14468a 100%); }\n.cgkpb .cgkpb-faq details:nth-child(3n)::before { background: radial-gradient(circle at 34% 30%, #ff7b7b 0%, #c62828 55%, #8c1616 100%); }\n.cgkpb .cgkpb-faq summary {\n  cursor: pointer;\n  list-style: none;\n  position: relative;\n  min-height: 48px;\n  display: flex;\n  align-items: center;\n  padding: 14px 30px 14px 0;\n  font-family: 'Sora', sans-serif;\n  font-weight: 700;\n  font-size: 15px;\n  color: var(--ink);\n}\n.cgkpb .cgkpb-faq summary::-webkit-details-marker { display: none; }\n.cgkpb .cgkpb-faq summary::after {\n  content: '+';\n  position: absolute;\n  right: 2px;\n  top: 50%;\n  transform: translateY(-50%);\n  font-size: 22px;\n  font-weight: 700;\n  color: var(--biro);\n  transition: transform 0.25s ease;\n}\n.cgkpb .cgkpb-faq details[open] summary::after { transform: translateY(-50%) rotate(45deg); }\n.cgkpb .cgkpb-faq details p { padding: 0 0 16px; font-size: 15px; color: #4a4b3f; }\n.cgkpb .cgkpb-faq details p + p { padding-top: 0; margin-top: -6px; }\n\n\/* ---------- item specifics ---------- *\/\n.cgkpb .cgkpb-itemspec { background: var(--fridge-deep); }\n.cgkpb .cgkpb-itemspec h2 { font-size: 20px; margin-bottom: 14px; }\n.cgkpb .cgkpb-itemspec table { font-size: 13.5px; }\n.cgkpb .cgkpb-itemspec th, .cgkpb .cgkpb-itemspec td {\n  text-align: left;\n  padding: 8px 10px;\n  border-bottom: 1px solid var(--steel);\n  vertical-align: top;\n}\n.cgkpb .cgkpb-itemspec th { width: 40%; color: var(--ink-soft); font-weight: 600; }\n\n\/* ---------- CTA ---------- *\/\n.cgkpb .cgkpb-cta { text-align: center; padding: 44px 18px; }\n.cgkpb .cgkpb-cta h2 { font-size: 25px; margin-bottom: 10px; }\n.cgkpb .cgkpb-cta h2 span {\n  background: var(--biro-grad);\n  -webkit-background-clip: text;\n  background-clip: text;\n  color: transparent;\n}\n.cgkpb .cgkpb-cta \u003e p { color: var(--ink-soft); max-width: 520px; margin: 0 auto 18px; }\n.cgkpb .cgkpb-ctanote {\n  display: inline-block;\n  background: var(--note);\n  border: 1px solid var(--note-edge);\n  border-radius: 4px;\n  padding: 16px 20px 14px;\n  font-family: 'Caveat', cursive;\n  font-weight: 700;\n  font-size: 22px;\n  color: var(--biro-deep);\n  position: relative;\n  box-shadow: 0 10px 22px rgba(28,33,38,0.14);\n  transform: rotate(-1.2deg);\n  animation: cgkpb-wobble 8s ease-in-out infinite;\n}\n.cgkpb .cgkpb-ctanote::before {\n  content: '';\n  position: absolute;\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  width: 22px;\n  height: 22px;\n  border-radius: 50%;\n  background: radial-gradient(circle at 34% 30%, #ff7b7b 0%, #c62828 55%, #8c1616 100%);\n  box-shadow: 0 3px 7px rgba(0,0,0,0.28);\n}\n\n\/* ---------- footer ---------- *\/\n.cgkpb .cgkpb-footer {\n  padding: 22px 18px 26px;\n  font-size: 11.5px;\n  line-height: 1.7;\n  color: var(--ink-soft);\n  border-top: 1px solid var(--steel);\n  text-align: center;\n  background: var(--fridge);\n}\n.cgkpb .cgkpb-footer p { margin-bottom: 8px; }\n.cgkpb .cgkpb-footer p:last-child { margin-bottom: 0; }\n\n\/* ---------- reduced motion ---------- *\/\n@media (prefers-reduced-motion: reduce) {\n  .cgkpb, .cgkpb *, .cgkpb *::before, .cgkpb *::after {\n    animation: none !important;\n    transition: none !important;\n  }\n}\n\n\/* ---------- wider screens ---------- *\/\n@media (min-width: 700px) {\n  .cgkpb section { padding: 48px 36px; }\n  .cgkpb .cgkpb-nav { padding: 18px 36px; }\n  .cgkpb .cgkpb-hero { padding: 56px 36px 48px; }\n  .cgkpb .cgkpb-hero h1 { font-size: 44px; }\n  .cgkpb .cgkpb-sub { font-size: 18px; }\n  .cgkpb .cgkpb-handle {\n    display: block;\n    position: absolute;\n    right: 20px;\n    top: 12%;\n    bottom: 12%;\n    width: 13px;\n    border-radius: 8px;\n    background: linear-gradient(90deg, #f3f6f8, #c4ced6 45%, #9fadb8 60%, #eef2f5);\n    box-shadow: 0 3px 10px rgba(28,33,38,0.22);\n    z-index: 2;\n  }\n  .cgkpb .cgkpb-hero .cgkpb-sub,\n  .cgkpb .cgkpb-hero .cgkpb-heronote { max-width: 620px; }\n  .cgkpb .cgkpb-bento { grid-template-columns: repeat(3, 1fr); gap: 14px; }\n  .cgkpb .cgkpb-tile { padding: 22px 16px; }\n  .cgkpb .cgkpb-tile .cgkpb-big { font-size: 28px; }\n  .cgkpb .cgkpb-trustgrid { grid-template-columns: 1fr 1fr; }\n  .cgkpb .cgkpb-fit { grid-template-columns: 1fr 1fr; }\n  .cgkpb .cgkpb-steps { grid-template-columns: repeat(4, 1fr); }\n  .cgkpb .cgkpb-inclist { grid-template-columns: 1fr 1fr; }\n  .cgkpb .cgkpb-shipgrid { grid-template-columns: repeat(3, 1fr); }\n  .cgkpb .cgkpb-scene h2 { font-size: 29px; }\n  .cgkpb .cgkpb-vibe blockquote { font-size: 26px; }\n  .cgkpb .cgkpb-magnetnote { padding: 34px 30px 26px; }\n  .cgkpb .cgkpb-magnetnote h2 { font-size: 26px; }\n  .cgkpb .cgkpb-board { padding: 28px 24px 20px; }\n  .cgkpb .cgkpb-board h2 { font-size: 36px; }\n  .cgkpb .cgkpb-tray { margin: 20px -24px -20px; }\n  .cgkpb .cgkpb-condcard { padding: 30px 32px; }\n  .cgkpb .cgkpb-cta h2 { font-size: 31px; }\n  .cgkpb .cgkpb-footer { padding: 26px 36px 30px; font-size: 12px; }\n}\n\u003c\/style\u003e\n\n\u003cdiv class=\"cgkpb\"\u003e\n\n  \u003c!-- NAV --\u003e\n  \u003cdiv class=\"cgkpb-nav\"\u003e\n    \u003cdiv class=\"cgkpb-brand\"\u003eCamGuard \u003cspan\u003eAustralia\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"cgkpb-navtag\"\u003eIndependent eufy specialists · Townsville QLD\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- HERO: the fridge door --\u003e\n  \u003csection class=\"cgkpb-hero cgkpb-door\"\u003e\n    \u003cdiv class=\"cgkpb-handle\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"cgkpb-chip\"\u003e📦 Brand new · Factory sealed · Original retail box\u003c\/div\u003e\n    \u003ch1\u003eeufy Security Keypad \u003cem\u003e(T8960)\u003c\/em\u003e\n\u003c\/h1\u003e\n    \u003cp class=\"cgkpb-sub\"\u003eEvery house has a code somebody set once and nobody has changed since. This is the wall-mounted box that finally gives it somewhere to live: key in a PIN to arm or disarm your eufy system, no phone hunt required.\u003c\/p\u003e\n\n    \u003c!-- the note on the door: illustration + real text --\u003e\n    \u003cdiv class=\"cgkpb-stuck\"\u003e\n      \u003csvg class=\"cgkpb-doodle\" viewbox=\"0 0 300 210\" aria-hidden=\"true\" focusable=\"false\"\u003e\n        \u003cpath d=\"M28 34 H244 a12 12 0 0 1 12 12 V140 c-26 8 -46 28 -56 56 H40 a12 12 0 0 1 -12 -12 Z\" fill=\"#fffbe6\" stroke=\"#e9dcaa\" stroke-width=\"2.5\"\u003e\u003c\/path\u003e\n        \u003cpath d=\"M256 140 c-30 4 -48 22 -56 56 c26 -6 44 -22 56 -56 Z\" fill=\"#efe2b4\" stroke=\"#e9dcaa\" stroke-width=\"2.5\"\u003e\u003c\/path\u003e\n        \u003cpath class=\"cgkpb-write\" d=\"M52 74 q14 -13 28 0 t28 0 t28 0 t28 0\" fill=\"none\" stroke=\"#1b3fae\" stroke-width=\"3.5\" stroke-linecap=\"round\"\u003e\u003c\/path\u003e\n        \u003cpath class=\"cgkpb-write cgkpb-write-2\" d=\"M52 106 q14 -13 28 0 t28 0 t28 0\" fill=\"none\" stroke=\"#1b3fae\" stroke-width=\"3.5\" stroke-linecap=\"round\"\u003e\u003c\/path\u003e\n        \u003cpath class=\"cgkpb-write cgkpb-write-3\" d=\"M52 138 q14 -13 28 0 t28 0\" fill=\"none\" stroke=\"#c62828\" stroke-width=\"3.5\" stroke-linecap=\"round\"\u003e\u003c\/path\u003e\n        \u003ccircle cx=\"136\" cy=\"34\" r=\"19\" fill=\"#c62828\"\u003e\u003c\/circle\u003e\n        \u003cpath d=\"M124 28 a15 15 0 0 1 13 -9\" fill=\"none\" stroke=\"#ffffff\" stroke-opacity=\"0.55\" stroke-width=\"4\" stroke-linecap=\"round\"\u003e\u003c\/path\u003e\n      \u003c\/svg\u003e\n      \u003cp class=\"cgkpb-stuck-text\"\u003ewifi: on the modem\u003cbr\u003egarage: ask Dad\u003cbr\u003ealarm: ask Nan\u003c\/p\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- IMG-PLACEHOLDER: hero product shot - eufy Security Keypad (white) three-quarter angle, sealed retail box beside it, fridge-white background --\u003e\n\n    \u003cp class=\"cgkpb-heronote\"\u003e⚠ Hub required: this keypad only works connected to a eufy HomeBase 2, HomeBase 3 or HomeBase Pro. Sold separately. Without one it has no function at all.\u003c\/p\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SET PIECE: the loud magnet nobody can pretend they did not see --\u003e\n  \u003cdiv class=\"cgkpb-hubwrap\"\u003e\n    \u003csection\u003e\n      \u003cdiv class=\"cgkpb-magnetnote\"\u003e\n        \u003cspan class=\"cgkpb-hubtab\"\u003eRead this one\u003c\/span\u003e\n        \u003ch2\u003eIt is an accessory. It needs a HomeBase.\u003c\/h2\u003e\n        \u003cp\u003eThe keypad is not a security system on its own. eufy states plainly that \u003cstrong\u003eit must be connected to a HomeBase to function\u003c\/strong\u003e. No hub means no arming, no disarming, no panic alarm, nothing. It talks to the hub over a sub-1GHz radio link, and the siren you hear is the HomeBase's, not the keypad's.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eeufy lists three compatible hubs, each with a minimum firmware version:\u003c\/strong\u003e\u003c\/p\u003e\n        \u003cul class=\"cgkpb-hublist\"\u003e\n          \u003cli\u003eHomeBase 2, on firmware v2.1.8.8h or above\u003c\/li\u003e\n          \u003cli\u003eHomeBase 3, on firmware v3.1.0.3 or above\u003c\/li\u003e\n          \u003cli\u003eHomeBase Pro, on firmware v4.1.4.3 or above\u003c\/li\u003e\n        \u003c\/ul\u003e\n        \u003cp\u003eThose firmware numbers are not decoration. A hub sitting on old firmware is exactly how a brand new keypad ends up looking broken on the kitchen bench. Update the HomeBase in the eufy Security app \u003cstrong\u003ebefore\u003c\/strong\u003e you pair anything.\u003c\/p\u003e\n        \u003cp\u003eAny other hub, including the HomeBase Mini, MiniBase and HomeBase E, is not on eufy's compatibility list, so we do not list it as compatible either. If your hub is not one of the three named above, check with eufy before you buy.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- CONDITION CALLOUT --\u003e\n  \u003csection class=\"cgkpb-cond\"\u003e\n    \u003cdiv class=\"cgkpb-condcard\"\u003e\n      \u003ch2\u003eCondition: brand new, still sealed\u003c\/h2\u003e\n      \u003cp\u003eThis is \u003cstrong\u003efactory-sealed stock in its full original retail packaging\u003c\/strong\u003e. Never opened, never used, never mounted on somebody else's laundry wall. The box goes to you the way it left the production line.\u003c\/p\u003e\n      \u003cp\u003eBefore it ships, \u003cstrong\u003eevery unit's serial number is photographed and logged at dispatch\u003c\/strong\u003e, so your warranty record exists before the parcel does.\u003c\/p\u003e\n      \u003cp\u003eCovered by our \u003cstrong\u003ein-house 12-month CamGuard warranty\u003c\/strong\u003e. That is a CamGuard warranty, not a manufacturer warranty, and it sits on top of your rights under Australian Consumer Law.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- BENTO STATS: magnet tiles --\u003e\n  \u003csection\u003e\n    \u003cdiv class=\"cgkpb-bento\"\u003e\n      \u003cdiv class=\"cgkpb-tile\"\u003e\n\u003cspan class=\"cgkpb-big\"\u003e6\u003c\/span\u003e\u003cspan class=\"cgkpb-small\"\u003eaccess codes per HomeBase\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-tile\"\u003e\n\u003cspan class=\"cgkpb-big\"\u003e180 days\u003c\/span\u003e\u003cspan class=\"cgkpb-small\"\u003eper charge, eufy's rating\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-tile\"\u003e\n\u003cspan class=\"cgkpb-big\"\u003e4\u003c\/span\u003e\u003cspan class=\"cgkpb-small\"\u003emodes: Away, Home, Custom, Off\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-tile\"\u003e\n\u003cspan class=\"cgkpb-big\"\u003e30 sec\u003c\/span\u003e\u003cspan class=\"cgkpb-small\"\u003eexit delay, Home to Away\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-tile\"\u003e\n\u003cspan class=\"cgkpb-big\"\u003e200 m\u003c\/span\u003e\u003cspan class=\"cgkpb-small\"\u003eopen-air range to the hub\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-tile\"\u003e\n\u003cspan class=\"cgkpb-big\"\u003e3\u003c\/span\u003e\u003cspan class=\"cgkpb-small\"\u003ekeypads max per HomeBase\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SCENE 1 --\u003e\n  \u003csection class=\"cgkpb-scene\"\u003e\n    \u003cspan class=\"cgkpb-scenetag\"\u003eby the back door, where the shoes are\u003c\/span\u003e\n    \u003ch2\u003eThe code goes \u003cspan\u003eon the wall\u003c\/span\u003e, not in your pocket\u003c\/h2\u003e\n    \u003cp\u003eA physical numeric keypad, and nothing else. No screen, no menus, no firmware update mid-doorway. Key in an access code and the whole eufy system arms or disarms, which matters most for the people in the house who will never open the app: the teenager, the visiting parent, anyone carrying two bags of shopping and a set of keys in their teeth.\u003c\/p\u003e\n    \u003cp\u003eFour modes sit on the buttons: \u003cstrong\u003eAway, Home, Customized and Off\u003c\/strong\u003e. The custom one is yours to build in the eufy Security app. Switch between the Home and Away presets and you get a \u003cstrong\u003e30-second exit delay\u003c\/strong\u003e, which is roughly the gap between deciding to leave and remembering the bins.\u003c\/p\u003e\n    \u003cdiv class=\"cgkpb-pad\" aria-hidden=\"true\"\u003e\n      \u003cspan class=\"cgkpb-key\"\u003e1\u003c\/span\u003e\u003cspan class=\"cgkpb-key\"\u003e2\u003c\/span\u003e\u003cspan class=\"cgkpb-key\"\u003e3\u003c\/span\u003e\n      \u003cspan class=\"cgkpb-key\"\u003e4\u003c\/span\u003e\u003cspan class=\"cgkpb-key\"\u003e5\u003c\/span\u003e\u003cspan class=\"cgkpb-key\"\u003e6\u003c\/span\u003e\n      \u003cspan class=\"cgkpb-key\"\u003e7\u003c\/span\u003e\u003cspan class=\"cgkpb-key\"\u003e8\u003c\/span\u003e\u003cspan class=\"cgkpb-key\"\u003e9\u003c\/span\u003e\n      \u003cspan class=\"cgkpb-key\"\u003e✳\u003c\/span\u003e\u003cspan class=\"cgkpb-key\"\u003e0\u003c\/span\u003e\u003cspan class=\"cgkpb-key\"\u003e#\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cp class=\"cgkpb-padcap\"\u003eThe buttons backlight themselves in low light, courtesy of an ambient light sensor. More on that sensor shortly, because the internet has it wrong.\u003c\/p\u003e\n    \u003c!-- IMG-PLACEHOLDER: lifestyle shot - keypad mounted beside an internal door, hand keying in a code, shoes and a school bag in frame --\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SCENE 2 --\u003e\n  \u003csection class=\"cgkpb-scene\"\u003e\n    \u003cspan class=\"cgkpb-scenetag\"\u003esix codes, and not one of them written on the fridge\u003c\/span\u003e\n    \u003ch2\u003eEveryone gets their own, \u003cspan\u003eand Nan gets hers\u003c\/span\u003e\n\u003c\/h2\u003e\n    \u003cp\u003eEach HomeBase supports \u003cstrong\u003eup to six access codes\u003c\/strong\u003e, four to eight digits each by default. Codes can be given an expiry date, which is a very polite way to end a house-sitting arrangement without a conversation about it.\u003c\/p\u003e\n    \u003cp\u003eThere is also an \u003cstrong\u003eemergency code\u003c\/strong\u003e you can set in the app. Entering it disarms the alarm and quietly sends a message to your emergency contacts, rather than announcing anything in the room.\u003c\/p\u003e\n    \u003cp\u003eSix is the ceiling, so pick your six. Nan will use hers. Nan will also tell the neighbour what it is, and that is a household policy problem rather than a product one.\u003c\/p\u003e\n    \u003c!-- IMG-PLACEHOLDER: eufy Security app screenshot - access code list with named codes and an expiry date set --\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SCENE 3 (dark) --\u003e\n  \u003csection class=\"cgkpb-scene cgkpb-scene-dark\"\u003e\n    \u003cspan class=\"cgkpb-scenetag\"\u003e10:40pm, kitchen light off\u003c\/span\u003e\n    \u003ch2\u003eThe little sensor on the front \u003cspan\u003eis not watching you\u003c\/span\u003e\n\u003c\/h2\u003e\n    \u003cp\u003eHalf the listings on the internet call it a motion sensor. eufy's own manual labels it that way too. eufy's support team has since corrected it in writing: \u003cstrong\u003eit is an ambient light sensor\u003c\/strong\u003e. It notices that the room has gone dark and lights up the buttons. It does not detect motion, and we are not going to sell it to you as though it does.\u003c\/p\u003e\n    \u003cp\u003eWhat is separate is the \u003cstrong\u003epanic button\u003c\/strong\u003e. Press and hold it for three seconds and the alarm sounds from your HomeBase while notifications go out through the eufy Security app and by email to the account. It alerts your own account. It does not contact emergency services or a monitoring centre, and nobody is dispatched.\u003c\/p\u003e\n    \u003cp\u003eThe link back to the hub is a \u003cstrong\u003esub-1GHz radio connection\u003c\/strong\u003e, not Wi-Fi and not Bluetooth, rated by eufy at open-air distances up to 200 metres. There is nothing to join to your network and no password to lose.\u003c\/p\u003e\n    \u003c!-- IMG-PLACEHOLDER: night shot - keypad on a dark hallway wall with the button backlight visible --\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- VIBE --\u003e\n  \u003csection class=\"cgkpb-vibe\"\u003e\n    \u003cblockquote\u003e\"Every Australian household runs on a code somebody set in a hurry years ago. This is just a tidier place to keep it than the side of the fridge.\"\u003c\/blockquote\u003e\n    \u003ccite\u003eThe vibe, in one sentence\u003c\/cite\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SET PIECE: the honest bit as crossed-out old codes --\u003e\n  \u003csection class=\"cgkpb-honest\"\u003e\n    \u003ch2\u003eThe honest bit\u003c\/h2\u003e\n    \u003cp\u003eThe old list, with the wrong entries crossed out and the real ones written underneath. Everything here comes from eufy's manual, product pages or support articles.\u003c\/p\u003e\n    \u003cdiv class=\"cgkpb-pad-paper\"\u003e\n\n      \u003cdiv class=\"cgkpb-oldline\"\u003e\n        \u003cspan class=\"cgkpb-oldcode\"\u003eCrossed out: \u003cs\u003e\"works on its own\"\u003c\/s\u003e\u003c\/span\u003e\n        \u003cstrong\u003eIt does not work on its own.\u003c\/strong\u003e\n        \u003cp\u003eWithout a eufy HomeBase 2, HomeBase 3 or HomeBase Pro it has no function at all: no arming, no disarming, no panic alarm. It is a radio remote for a hub, and the hub is sold separately. If you do not own one, this is not the product to start with.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cgkpb-oldline\"\u003e\n        \u003cspan class=\"cgkpb-oldcode\"\u003eCrossed out: \u003cs\u003e\"USB-C, surely\"\u003c\/s\u003e\u003c\/span\u003e\n        \u003cstrong\u003eIt charges over Micro-USB.\u003c\/strong\u003e\n        \u003cp\u003eBoth current eufy manuals still show a Micro-USB port, and there is no USB-C revision. The charging cable is in the box. A wall plug is not, so use a standard 5V 1A USB charger from the drawer that already has four of them in it.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cgkpb-oldline\"\u003e\n        \u003cspan class=\"cgkpb-oldcode\"\u003eCrossed out: \u003cs\u003e\"IP65, mount it outside\"\u003c\/s\u003e\u003c\/span\u003e\n        \u003cstrong\u003eeufy publishes no weather rating for this keypad.\u003c\/strong\u003e\n        \u003cp\u003eNone: not on the product pages, not in the manuals. The IP65 line you may have read elsewhere is not a eufy figure. eufy's own instruction is not to expose the device to strong sunshine or a wet environment, so treat it as indoor or genuinely sheltered mounting. Rated for use between -10°C and 50°C, stored between -20°C and 60°C.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cgkpb-oldline\"\u003e\n        \u003cspan class=\"cgkpb-oldcode\"\u003eCrossed out: \u003cs\u003e\"a code for everyone\"\u003c\/s\u003e\u003c\/span\u003e\n        \u003cstrong\u003eSix access codes, and three keypads, per HomeBase.\u003c\/strong\u003e\n        \u003cp\u003eSix codes of four to eight digits each, and a maximum of three keypads paired to one hub. A big household or a house with four ways in will hit that ceiling, so count the doors and the people before you order.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cgkpb-oldline\"\u003e\n        \u003cspan class=\"cgkpb-oldcode\"\u003eCrossed out: \u003cs\u003e\"built-in motion sensor\"\u003c\/s\u003e\u003c\/span\u003e\n        \u003cstrong\u003eThat sensor is an ambient light sensor.\u003c\/strong\u003e\n        \u003cp\u003eIt backlights the buttons when the room is dark. eufy's manual mislabels it and eufy's support team has explicitly corrected the record. There is no motion detection in this device.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cgkpb-oldline\"\u003e\n        \u003cspan class=\"cgkpb-oldcode\"\u003eCrossed out: \u003cs\u003e\"pop a AA in it\"\u003c\/s\u003e\u003c\/span\u003e\n        \u003cstrong\u003eThe battery is built in.\u003c\/strong\u003e\n        \u003cp\u003eA 2600 mAh rechargeable cell, with no user-replaceable battery documented anywhere by eufy. eufy rates it at 180 days, about six months, per charge, from their own internal lab testing. Real life depends on how much traffic goes through your door.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"cgkpb-oldline\"\u003e\n        \u003cspan class=\"cgkpb-oldcode\"\u003eCrossed out: \u003cs\u003e\"the keypad has the siren\"\u003c\/s\u003e\u003c\/span\u003e\n        \u003cstrong\u003eThe siren is in the HomeBase.\u003c\/strong\u003e\n        \u003cp\u003eThe keypad triggers, the hub sounds. There is also no display screen on the keypad, so status is read from the button lights and the eufy Security app, not from a panel.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n    \u003cp class=\"cgkpb-honest-foot\"\u003eNone of that is buried in a spec sheet on purpose. We would rather you knew it before the box arrives than after.\u003c\/p\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- WHY CAMGUARD --\u003e\n  \u003csection class=\"cgkpb-trust\"\u003e\n    \u003ch2\u003eWhy buy it from CamGuard?\u003c\/h2\u003e\n    \u003cdiv class=\"cgkpb-trustgrid\"\u003e\n      \u003cdiv class=\"cgkpb-trustcard\"\u003e\n        \u003cstrong\u003e12-month CamGuard warranty\u003c\/strong\u003e\n        \u003cp\u003eOur own in-house warranty on every unit we sell. Not a manufacturer warranty: it is us, in Townsville, and it applies in addition to your Australian Consumer Law rights.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-trustcard\"\u003e\n        \u003cstrong\u003eSerial photographed at dispatch\u003c\/strong\u003e\n        \u003cp\u003eEvery unit's serial number is photographed and logged before it ships, so your warranty record exists from day one and you never have to find the sticker.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-trustcard\"\u003e\n        \u003cstrong\u003eeufy is all we do\u003c\/strong\u003e\n        \u003cp\u003eIndependent eufy specialists. Hub questions, firmware questions, \"will this pair with the HomeBase I already own\" questions: ask before you order, not after.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-trustcard\"\u003e\n        \u003cstrong\u003eDispatched in 1 business day\u003c\/strong\u003e\n        \u003cp\u003eFrom Townsville QLD, with tracking on every parcel.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SET PIECE: specs as the kitchen whiteboard --\u003e\n  \u003csection class=\"cgkpb-specs\"\u003e\n    \u003cdiv class=\"cgkpb-board\"\u003e\n      \u003ch2\u003eFull specifications\u003c\/h2\u003e\n      \u003csvg class=\"cgkpb-underline\" viewbox=\"0 0 200 14\" aria-hidden=\"true\" focusable=\"false\"\u003e\n        \u003cpath d=\"M4 9 q26 -8 52 -1 t52 -1 t52 -1 t36 2\" fill=\"none\" stroke=\"#1b3fae\" stroke-width=\"4\" stroke-linecap=\"round\"\u003e\u003c\/path\u003e\n      \u003c\/svg\u003e\n      \u003cp class=\"cgkpb-boardsub\"\u003eWritten up off eufy's manual and product pages. Anything eufy does not publish is not on the board.\u003c\/p\u003e\n      \u003cdiv class=\"cgkpb-tablewrap\"\u003e\n        \u003ctable\u003e\n          \u003ctbody\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eModel\u003c\/th\u003e\n\u003ctd\u003eeufy Security Keypad, T8960. Also sold under the name eufy KeyPad E10: same hardware, two names.\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eCondition\u003c\/th\u003e\n\u003ctd\u003eBrand new, factory sealed in its original retail packaging\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eHub requirement\u003c\/th\u003e\n\u003ctd\u003eA eufy HomeBase is required. It does not work standalone.\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eCompatible hubs\u003c\/th\u003e\n\u003ctd\u003eHomeBase 2 (v2.1.8.8h or above), HomeBase 3 (v3.1.0.3 or above), HomeBase Pro (v4.1.4.3 or above)\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eKeypads per HomeBase\u003c\/th\u003e\n\u003ctd\u003eUp to 3\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eKeypad type\u003c\/th\u003e\n\u003ctd\u003ePhysical numeric keypad\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eDisplay\u003c\/th\u003e\n\u003ctd\u003eNone\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eCore function\u003c\/th\u003e\n\u003ctd\u003eKey in an access code to arm or disarm the eufy security system\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eSecurity modes\u003c\/th\u003e\n\u003ctd\u003eAway, Home, Customized (CUS) and Off. Custom modes are built in the eufy Security app.\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eExit delay\u003c\/th\u003e\n\u003ctd\u003e30 seconds when switching between the Home and Away preset modes\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eAccess codes\u003c\/th\u003e\n\u003ctd\u003eUp to 6 per HomeBase, 4 to 8 digits by default, with per-code expiry dates\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eEmergency code\u003c\/th\u003e\n\u003ctd\u003eA duress code set in the app: entering it disarms the alarm and sends a message to emergency contacts\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003ePanic button\u003c\/th\u003e\n\u003ctd\u003eDedicated button. Press and hold for 3 seconds to trigger the alarm from the HomeBase, plus app and email notifications.\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eWireless link\u003c\/th\u003e\n\u003ctd\u003eSub-1GHz RF to the HomeBase. Not Wi-Fi, not Bluetooth.\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eRange\u003c\/th\u003e\n\u003ctd\u003eUp to 200 m (656 ft) to the HomeBase in open area\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eBattery\u003c\/th\u003e\n\u003ctd\u003eBuilt-in rechargeable cell, 2600 mAh, not user-replaceable\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eBattery life\u003c\/th\u003e\n\u003ctd\u003eUp to 180 days, about 6 months, per charge. eufy states this is internal lab testing and actual performance varies.\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eCharging port\u003c\/th\u003e\n\u003ctd\u003eMicro-USB, not USB-C. Charging cable included, wall charger not included.\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eCharging input\u003c\/th\u003e\n\u003ctd\u003e5V 1A\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eButton backlight\u003c\/th\u003e\n\u003ctd\u003eAmbient light sensor lights the buttons in the dark. It is not a motion sensor.\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eMounting\u003c\/th\u003e\n\u003ctd\u003eWall bracket included. Fix it with the supplied 3M adhesive strips or the supplied screws (6 mm drill bit), then slide the keypad down onto the bracket until it snaps in.\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eOperating temperature\u003c\/th\u003e\n\u003ctd\u003e-10°C to 50°C\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eStorage temperature\u003c\/th\u003e\n\u003ctd\u003e-20°C to 60°C\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eWeather rating\u003c\/th\u003e\n\u003ctd\u003eNone published by eufy. eufy directs that the device must not be exposed to strong sunshine or a wet environment, so indoor or sheltered mounting only.\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eColour\u003c\/th\u003e\n\u003ctd\u003eWhite\u003c\/td\u003e\n\u003c\/tr\u003e\n            \u003ctr\u003e\n\u003cth scope=\"row\"\u003eDimensions and weight\u003c\/th\u003e\n\u003ctd\u003eNot published by eufy, so not stated here\u003c\/td\u003e\n\u003c\/tr\u003e\n          \u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-tray\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- COMPATIBILITY --\u003e\n  \u003csection class=\"cgkpb-compat\"\u003e\n    \u003ch2\u003eWill it work with your setup?\u003c\/h2\u003e\n    \u003cp\u003eThe hub question decides everything else. Start at the top.\u003c\/p\u003e\n\n    \u003cdiv class=\"cgkpb-row\"\u003e\n      \u003cspan class=\"cgkpb-badge cgkpb-yes\"\u003eYES\u003c\/span\u003e\n      \u003cp\u003e\u003cstrong\u003eeufy HomeBase 2\u003c\/strong\u003e, on firmware v2.1.8.8h or above.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cgkpb-row\"\u003e\n      \u003cspan class=\"cgkpb-badge cgkpb-yes\"\u003eYES\u003c\/span\u003e\n      \u003cp\u003e\u003cstrong\u003eeufy HomeBase 3\u003c\/strong\u003e, on firmware v3.1.0.3 or above. eufy's own HomeBase 3 compatibility table lists T8960 as compatible.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cgkpb-row\"\u003e\n      \u003cspan class=\"cgkpb-badge cgkpb-yes\"\u003eYES\u003c\/span\u003e\n      \u003cp\u003e\u003cstrong\u003eeufy HomeBase Pro\u003c\/strong\u003e, on firmware v4.1.4.3 or above.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cgkpb-row\"\u003e\n      \u003cspan class=\"cgkpb-badge cgkpb-yes\"\u003eYES\u003c\/span\u003e\n      \u003cp\u003e\u003cstrong\u003eeufy Security app\u003c\/strong\u003e, free on iOS and Android. Access codes, modes and the emergency code are all set there.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cgkpb-row\"\u003e\n      \u003cspan class=\"cgkpb-badge cgkpb-no\"\u003eNO\u003c\/span\u003e\n      \u003cp\u003e\u003cstrong\u003eWorking on its own\u003c\/strong\u003e. With no HomeBase connected, the keypad has no function: eufy states it must be connected to a HomeBase to work.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cgkpb-row\"\u003e\n      \u003cspan class=\"cgkpb-badge cgkpb-no\"\u003eNO\u003c\/span\u003e\n      \u003cp\u003e\u003cstrong\u003eWi-Fi or Bluetooth pairing\u003c\/strong\u003e. It uses a sub-1GHz radio link to the HomeBase instead, so it never joins your home network.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cgkpb-row\"\u003e\n      \u003cspan class=\"cgkpb-badge cgkpb-no\"\u003eNO\u003c\/span\u003e\n      \u003cp\u003e\u003cstrong\u003eExposed outdoor mounting\u003c\/strong\u003e. eufy publishes no weather rating and warns against strong sunshine and wet environments.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cgkpb-row\"\u003e\n      \u003cspan class=\"cgkpb-badge cgkpb-note-badge\"\u003eNOTE\u003c\/span\u003e\n      \u003cp\u003e\u003cstrong\u003eOther hubs, including HomeBase Mini, MiniBase and HomeBase E\u003c\/strong\u003e. eufy's compatibility list names HomeBase 2, HomeBase 3 and HomeBase Pro only, so we do not claim any other hub either way. Check with eufy first if yours is not one of the three.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cgkpb-row\"\u003e\n      \u003cspan class=\"cgkpb-badge cgkpb-note-badge\"\u003eNOTE\u003c\/span\u003e\n      \u003cp\u003e\u003cstrong\u003eFirmware comes first\u003c\/strong\u003e. Update your HomeBase in the eufy Security app before pairing. eufy qualifies every compatible hub with a minimum firmware version, so a hub below it can behave as though the keypad is faulty.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cgkpb-row\"\u003e\n      \u003cspan class=\"cgkpb-badge cgkpb-note-badge\"\u003eNOTE\u003c\/span\u003e\n      \u003cp\u003e\u003cstrong\u003eHousehold limits\u003c\/strong\u003e. Up to 3 keypads and 6 access codes per HomeBase, so plan the doors and the people before you order a second one.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- FIT --\u003e\n  \u003cdiv class=\"cgkpb-fitwrap\"\u003e\n    \u003csection\u003e\n      \u003cdiv class=\"cgkpb-fit\"\u003e\n        \u003cdiv class=\"cgkpb-fitcol cgkpb-fit-no\"\u003e\n          \u003ch3\u003eProbably not for you if…\u003c\/h3\u003e\n          \u003cul\u003e\n            \u003cli\u003eYou do not own a HomeBase 2, HomeBase 3 or HomeBase Pro and do not plan to buy one\u003c\/li\u003e\n            \u003cli\u003eThe only spot you have for it is an exposed outside wall\u003c\/li\u003e\n            \u003cli\u003eYou need more than six codes, or more than three keypads on one hub\u003c\/li\u003e\n            \u003cli\u003eYou were counting on USB-C charging\u003c\/li\u003e\n            \u003cli\u003eYou want a status screen to read at a glance\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"cgkpb-fitcol cgkpb-fit-yes\"\u003e\n          \u003ch3\u003ePerfect for…\u003c\/h3\u003e\n          \u003cul\u003e\n            \u003cli\u003eHouseholds where half the family will never open the app\u003c\/li\u003e\n            \u003cli\u003eKids home before the adults, with their own code instead of yours\u003c\/li\u003e\n            \u003cli\u003eGuests, cleaners and house-sitters who need a code with an expiry date on it\u003c\/li\u003e\n            \u003cli\u003eAnyone with a HomeBase already installed and no tidy way to arm it at the door\u003c\/li\u003e\n            \u003cli\u003eHallway, garage and laundry walls, indoors and out of the weather\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- SETUP --\u003e\n  \u003csection class=\"cgkpb-setup\"\u003e\n    \u003ch2\u003eSet up in four steps\u003c\/h2\u003e\n    \u003cdiv class=\"cgkpb-steps\"\u003e\n      \u003cdiv class=\"cgkpb-step\"\u003e\n\u003cspan class=\"cgkpb-stepnum\"\u003e1\u003c\/span\u003e\u003cstrong\u003eCharge it first\u003c\/strong\u003e\u003cp\u003eUse the included Micro-USB cable with any standard 5V 1A USB charger you already own.\u003c\/p\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-step\"\u003e\n\u003cspan class=\"cgkpb-stepnum\"\u003e2\u003c\/span\u003e\u003cstrong\u003eUpdate the hub\u003c\/strong\u003e\u003cp\u003eIn the eufy Security app, update your HomeBase: v2.1.8.8h+ (HB2), v3.1.0.3+ (HB3), v4.1.4.3+ (Pro).\u003c\/p\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-step\"\u003e\n\u003cspan class=\"cgkpb-stepnum\"\u003e3\u003c\/span\u003e\u003cstrong\u003eAdd it and set codes\u003c\/strong\u003e\u003cp\u003eAdd the keypad in the app, then set your access codes (4 to 8 digits), the modes and the emergency code.\u003c\/p\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-step\"\u003e\n\u003cspan class=\"cgkpb-stepnum\"\u003e4\u003c\/span\u003e\u003cstrong\u003eStick it or screw it\u003c\/strong\u003e\u003cp\u003eFix the bracket with the 3M strips or the screws (6 mm bit), then slide the keypad down until it snaps in.\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- INCLUDED --\u003e\n  \u003csection class=\"cgkpb-inc\"\u003e\n    \u003ch2\u003eWhat is in the box\u003c\/h2\u003e\n    \u003cp\u003eSealed retail packaging, containing:\u003c\/p\u003e\n    \u003cul class=\"cgkpb-inclist\"\u003e\n      \u003cli\u003e🔢 eufy Security Keypad (T8960)\u003c\/li\u003e\n      \u003cli\u003e🔩 Wall mounting bracket\u003c\/li\u003e\n      \u003cli\u003e🪛 Mounting screws\u003c\/li\u003e\n      \u003cli\u003e🔌 Micro-USB charging cable\u003c\/li\u003e\n      \u003cli\u003e🧷 2 x 3M adhesive stickers\u003c\/li\u003e\n      \u003cli\u003e📄 User manual and welcome card\u003c\/li\u003e\n    \u003c\/ul\u003e\n    \u003ch3\u003eNot included\u003c\/h3\u003e\n    \u003cul class=\"cgkpb-inclist cgkpb-notinc\"\u003e\n      \u003cli\u003e✗ A eufy HomeBase. One is required, sold separately.\u003c\/li\u003e\n      \u003cli\u003e✗ A USB wall charger. The cable is included, the plug is not.\u003c\/li\u003e\n      \u003cli\u003e✗ A siren. The alarm sounds from the HomeBase.\u003c\/li\u003e\n    \u003c\/ul\u003e\n    \u003cp class=\"cgkpb-incnote\"\u003eWorth knowing: eufy's own Australian product page lists a shorter set of box contents than the manual does, leaving out the bracket, screws, adhesive strips and cable. We have gone with the manual, which is the more complete list.\u003c\/p\u003e\n    \u003c!-- IMG-PLACEHOLDER: flat lay of the unboxed contents - keypad, bracket, screws, Micro-USB cable, adhesive strips, manual --\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SHIPPING \/ WARRANTY \/ RETURNS --\u003e\n  \u003csection class=\"cgkpb-ship\"\u003e\n    \u003ch2\u003eShipping, warranty \u0026amp; returns\u003c\/h2\u003e\n    \u003cdiv class=\"cgkpb-shipgrid\"\u003e\n      \u003cdiv class=\"cgkpb-shipcard\"\u003e\n        \u003cstrong\u003e🚀 Express as Standard\u003c\/strong\u003e\n        \u003cp\u003eAustralia Post Express included on every order over $99.00. Under $99.00 it is $9.95 flat tracked, or $12.95 for the Express upgrade. Dispatched in 1 business day from Townsville QLD, tracking on every parcel.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-shipcard\"\u003e\n        \u003cstrong\u003e🛡️ 12-month warranty\u003c\/strong\u003e\n        \u003cp\u003eOur in-house CamGuard warranty, not a manufacturer warranty, in addition to your Australian Consumer Law rights. Faulty and warranty returns are always free.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"cgkpb-shipcard\"\u003e\n        \u003cstrong\u003e↩️ 30-day returns\u003c\/strong\u003e\n        \u003cp\u003eChanged your mind? Return within 30 days of delivery. The buyer covers return postage and the original shipping is not refunded. Have the serial number handy to start a return.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SET PIECE: FAQ as magnet notes on the fridge door --\u003e\n  \u003csection class=\"cgkpb-faq cgkpb-door\"\u003e\n    \u003cdiv class=\"cgkpb-handle\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n    \u003ch2\u003eThe notes on the fridge\u003c\/h2\u003e\n    \u003cp\u003eTap a note to read the rest of it.\u003c\/p\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eDo I actually need a HomeBase?\u003c\/summary\u003e\n      \u003cp\u003eYes, and there is no way around it. eufy states that the keypad must be connected to a HomeBase to function. It works with HomeBase 2 (firmware v2.1.8.8h or above), HomeBase 3 (v3.1.0.3 or above) and HomeBase Pro (v4.1.4.3 or above), all sold separately.\u003c\/p\u003e\n      \u003cp\u003eWith no hub connected it does nothing at all: no arming, no disarming, no panic alarm. The alarm it triggers is the HomeBase's siren, not its own.\u003c\/p\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eWill it work with a HomeBase Mini, MiniBase or HomeBase E?\u003c\/summary\u003e\n      \u003cp\u003eeufy's compatibility list names HomeBase 2, HomeBase 3 and HomeBase Pro only. Those other hubs are not on it, so we will not list them as compatible and we will not guess in either direction. If your hub is not one of the three named above, check with eufy before you order.\u003c\/p\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eIt says brand new. What does that mean here?\u003c\/summary\u003e\n      \u003cp\u003eFactory sealed, in its full original retail packaging, never opened and never used. Every unit's serial number is photographed and logged at dispatch, so the warranty record is created before the parcel leaves us.\u003c\/p\u003e\n      \u003cp\u003eIt is covered by our 12-month CamGuard warranty, which is a CamGuard warranty rather than a manufacturer warranty, on top of your Australian Consumer Law rights.\u003c\/p\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eHow many codes can I set, and can I expire one?\u003c\/summary\u003e\n      \u003cp\u003eUp to six access codes per HomeBase, four to eight digits each by default, and each code can be given an expiry date. There is also an emergency code you can set in the app: entering it disarms the alarm and sends a message to your emergency contacts.\u003c\/p\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eDoes it detect motion?\u003c\/summary\u003e\n      \u003cp\u003eNo. The sensor on the front is an ambient light sensor that backlights the buttons in the dark, and eufy's support team has confirmed that in writing. If another listing tells you this keypad has a motion sensor, it is repeating a mislabel that appears in eufy's own manual.\u003c\/p\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eCan I mount it outside by the front door?\u003c\/summary\u003e\n      \u003cp\u003eWe would not. eufy publishes no IP or weather rating for this keypad anywhere, and the manual says not to expose it to strong sunshine or a wet environment. Keep it indoors or somewhere genuinely sheltered, and within its -10°C to 50°C operating range.\u003c\/p\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eWhat charger does it take?\u003c\/summary\u003e\n      \u003cp\u003eMicro-USB, not USB-C. The charging cable is included; a wall plug is not. Any standard 5V 1A USB charger will do, and you almost certainly have one already.\u003c\/p\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eHow long does the battery last?\u003c\/summary\u003e\n      \u003cp\u003eeufy rates the built-in 2600 mAh cell at 180 days, about six months, per charge, based on their own internal lab testing. Real-world life depends on how often the household comes and goes. The battery is built in and is not user-replaceable.\u003c\/p\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eWhat happens when I press the panic button?\u003c\/summary\u003e\n      \u003cp\u003ePress and hold it for three seconds. The alarm sounds from your HomeBase, and notifications go to the eufy Security app and to the account email address.\u003c\/p\u003e\n      \u003cp\u003eTo be clear about what it is: it alerts your own account and whoever you have set up in the app. It does not contact emergency services and it is not a monitored alarm service.\u003c\/p\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eHow big is it and what does it weigh?\u003c\/summary\u003e\n      \u003cp\u003eeufy does not publish dimensions or a product weight for this model on either product page or in the manual, so we are not going to invent them. Judge it from the photos, and note it is designed to be held on a bracket with two adhesive strips, so it is not a heavy unit.\u003c\/p\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eIs this the same keypad eufy sells?\u003c\/summary\u003e\n      \u003cp\u003eYes. It is the same T8960 hardware, sold under two names: eufy Security Keypad and eufy KeyPad E10. eufy Australia's own listed price for it is A$99.95, read on 26 July 2026.\u003c\/p\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eHow do warranty claims work?\u003c\/summary\u003e\n      \u003cp\u003eMessage us with your order details and the serial number. Every unit's serial is photographed and logged at dispatch, so the record already exists on our end. Faulty and warranty returns are always free under our 12-month CamGuard warranty, alongside your Australian Consumer Law rights.\u003c\/p\u003e\n    \u003c\/details\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- ITEM SPECIFICS --\u003e\n  \u003csection class=\"cgkpb-itemspec\"\u003e\n    \u003ch2\u003eItem specifics\u003c\/h2\u003e\n    \u003ctable\u003e\n      \u003ctbody\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eBrand\u003c\/th\u003e\n\u003ctd\u003eeufy (by Anker)\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eModel\u003c\/th\u003e\n\u003ctd\u003eeufy Security Keypad, also sold as eufy KeyPad E10\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eMPN\u003c\/th\u003e\n\u003ctd\u003eT8960\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eCondition\u003c\/th\u003e\n\u003ctd\u003eBrand new, factory sealed\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003ePackaging\u003c\/th\u003e\n\u003ctd\u003eOriginal retail box, sealed\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eType\u003c\/th\u003e\n\u003ctd\u003eSecurity system keypad (accessory)\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eColour\u003c\/th\u003e\n\u003ctd\u003eWhite\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eDisplay\u003c\/th\u003e\n\u003ctd\u003eNone\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003ePower source\u003c\/th\u003e\n\u003ctd\u003eBuilt-in rechargeable battery, Micro-USB charging\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eConnectivity\u003c\/th\u003e\n\u003ctd\u003eSub-1GHz RF to a eufy HomeBase\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eRequired hub\u003c\/th\u003e\n\u003ctd\u003eeufy HomeBase 2, HomeBase 3 or HomeBase Pro. Not included.\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003ePlacement\u003c\/th\u003e\n\u003ctd\u003eIndoor or sheltered wall mounting\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eNumber of units\u003c\/th\u003e\n\u003ctd\u003e1\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eCustom bundle\u003c\/th\u003e\n\u003ctd\u003eNo\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003cth scope=\"row\"\u003eModified item\u003c\/th\u003e\n\u003ctd\u003eNo\u003c\/td\u003e\n\u003c\/tr\u003e\n      \u003c\/tbody\u003e\n    \u003c\/table\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- CTA --\u003e\n  \u003csection class=\"cgkpb-cta cgkpb-door\"\u003e\n    \u003ch2\u003eSix codes. \u003cspan\u003eOne of them is Nan's.\u003c\/span\u003e\n\u003c\/h2\u003e\n    \u003cp\u003eOrder today and it leaves Townsville within 1 business day, serial photographed and logged, warranty active on arrival. Bring your own HomeBase and your own wall plug.\u003c\/p\u003e\n    \u003cdiv class=\"cgkpb-ctanote\"\u003enew alarm code:\u003cbr\u003enot the street number\u003cbr\u003ethis time\u003c\/div\u003e\n    \u003c!-- IMG-PLACEHOLDER: closing shot - keypad mounted neatly on a hallway wall, coat hooks in frame --\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- FOOTER --\u003e\n  \u003cdiv class=\"cgkpb-footer\"\u003e\n    \u003cp\u003eCamGuard Australia · ABN 62 385 894 763 · Townsville, QLD\u003c\/p\u003e\n    \u003cp\u003eCamGuard Australia is an independent reseller of genuine eufy Security products and is not affiliated with, or endorsed by, Anker Innovations. All product names and trademarks are the property of their respective owners. Our 12-month CamGuard warranty applies in addition to your rights under Australian Consumer Law.\u003c\/p\u003e\n    \u003cp\u003eThis keypad is an accessory and requires a eufy HomeBase 2, HomeBase 3 or HomeBase Pro, sold separately, to operate; it has no function without one, and the alarm it triggers sounds from the HomeBase. Minimum hub firmware versions apply as listed above. Battery-life figures are eufy's ratings, which eufy states are based on internal lab testing; actual performance varies with use. eufy publishes no IP or weather rating for this model, and no dimensions or weight, so none are stated here. Product specifications are sourced from the manufacturer's published materials and may be updated without notice.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n","brand":"eufy","offers":[{"title":"Default Title","offer_id":44487353991211,"sku":"CG-KPE10-BN-T","price":95.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/0086\/1739\/files\/1_45221141-81d4-48c3-bd69-afbffe6cddc2.webp?v=1785025369","url":"https:\/\/www.camguardaustralia.com.au\/products\/eufy-security-keypad-brand-new","provider":"CamGuard Australia","version":"1.0","type":"link"}