﻿:root{--blue: #2b6bff;--blue-ink: #1b4fd6;--blue-50: #eef4ff;--blue-100: #dbe7ff;--sky: #16b6e6;--ink: #0c1526;--ink-2: #37465c;--mut: #6b7a90;--mut-2: #93a1b5;--bg: #ffffff;--bg-soft: #f5f8fc;--panel: #ffffff;--line: #e8eef6;--line-2: #d7e0ee;--armed: #f59e2e;--armed-50: #fff4e4;--alarm: #f24a63;--alarm-50: #ffedef;--safe: #1fb877;--safe-50: #e6f8f0;--term-bg: #0d1524;--term-bg-2: #0a1120;--term-line: rgba(255, 255, 255, 0.09);--term-text: #d6e2f2;--term-mut: #7286a3;--mono: ui-monospace, "SF Mono", "SFMono-Regular", "JetBrains Mono", Menlo, Consolas, monospace;--sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--maxw: 68rem;--r: 16px;--r-sm: 11px;--r-lg: 24px;--shadow: 0 18px 48px -26px rgba(20, 42, 88, 0.30);--shadow-sm: 0 6px 20px -12px rgba(20, 42, 88, 0.28)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.65;overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:var(--blue-ink);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:4px}img{max-width:100%;height:auto}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 1.5rem}.center{text-align:center}h1,h2,h3{letter-spacing:-.02em;text-wrap:balance}.eyebrow{font-family:var(--mono);font-size:.72rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--blue);margin:0 0 .7rem}.eyebrow--center{text-align:center}.eyebrow--red{color:var(--alarm)}.eyebrow--green{color:var(--safe)}h2{font-size:clamp(1.55rem,3.2vw,2.1rem);font-weight:720;margin:0 0 .6rem;line-height:1.14}.section__lede{color:var(--mut);max-width:42rem;margin:0 0 2rem;font-size:1.02rem}.section__lede.center{margin-left:auto;margin-right:auto}.lede{color:var(--ink-2);font-size:1.1rem;margin:1rem 0 0;max-width:34rem}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.15rem 1.5rem;position:sticky;top:0;z-index:20;background:rgba(255,255,255,.82);backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--line);max-width:none}.wordmark{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--mono);font-weight:700;font-size:1.05rem;color:var(--ink)}.wordmark .u{color:var(--blue)}.wordmark:hover{text-decoration:none}.wordmark__badge{display:inline-flex;filter:drop-shadow(0 3px 6px rgba(20,60,140,.18))}.topnav{display:flex;align-items:center;gap:1.35rem;font-family:var(--mono);font-size:.82rem}.topnav a{color:var(--ink-2)}.topnav a:hover{color:var(--ink);text-decoration:none}.topnav__cta{padding:.42rem .95rem;border-radius:999px;background:var(--blue);color:#fff !important;font-weight:600}.topnav__cta:hover{background:var(--blue-ink)}.langs{display:inline-flex;gap:.1rem;padding:.18rem;border:1px solid var(--line-2);border-radius:999px}.langs a{font-size:.7rem;font-weight:700;letter-spacing:.05em;padding:.18rem .6rem;border-radius:999px;color:var(--mut)}.langs a:hover{text-decoration:none;color:var(--ink)}.langs a.on{background:var(--blue-50);color:var(--blue-ink)}@media (max-width: 40rem){.topnav{gap:.8rem;font-size:.76rem}.topnav a[href$=readme]{display:none}}.hero{padding:clamp(3rem,7vw,5.5rem) 0 clamp(2.5rem,5vw,4rem)}.hero__grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(1.5rem,4vw,3.5rem);align-items:center}@media (max-width: 52rem){.hero__grid{grid-template-columns:1fr;text-align:center}.hero__copy .lede,.hero__copy .cta{margin-left:auto;margin-right:auto}.cta{justify-content:center}}.hero__title{font-size:clamp(2.3rem,6vw,3.7rem);font-weight:800;line-height:1.03;margin:0;max-width:16ch}@media (max-width: 52rem){.hero__title{max-width:none}}.hero__meta{margin:1.4rem 0 0;font-family:var(--mono);font-size:.76rem;letter-spacing:.04em;color:var(--mut-2)}.cta{margin-top:1.9rem;display:flex;gap:.65rem;flex-wrap:wrap}.button{font-family:var(--mono);font-size:.86rem;font-weight:600;padding:.66rem 1.25rem;border-radius:11px;border:1px solid var(--line-2);color:var(--ink);background:var(--panel);transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease,background .15s ease}.button:hover{text-decoration:none;transform:translateY(-2px);border-color:var(--blue);box-shadow:var(--shadow-sm)}.button--primary{background:var(--blue);border-color:rgba(0,0,0,0);color:#fff;box-shadow:0 10px 24px -12px rgba(43,107,255,.75)}.button--primary:hover{background:var(--blue-ink);border-color:rgba(0,0,0,0)}.button--ghost{background:rgba(0,0,0,0);border-color:rgba(0,0,0,0);color:var(--ink-2)}.button--ghost:hover{box-shadow:none;border-color:var(--line-2)}.scene{position:relative;display:grid;place-items:center}.scene--hero{padding:1.5rem;border-radius:var(--r-lg);background:radial-gradient(120% 120% at 50% 18%, var(--blue-50), #fff 70%);border:1px solid var(--line);box-shadow:var(--shadow)}.art{width:100%;height:auto;display:block;overflow:visible}.desk{stroke:var(--line-2);stroke-width:2.4;stroke-linecap:round}.dev-base{fill:#fff;stroke:var(--line-2);stroke-width:2;stroke-linejoin:round}.dev-lid{fill:#fff;stroke:var(--line-2);stroke-width:2}.dev-screen{fill:var(--blue-50);transition:fill .4s ease}.dev-screen--alarm{fill:var(--alarm-50)}.dev-screen--safe{fill:var(--safe-50)}.lock{color:var(--ink-2)}.lock-body{fill:currentColor}.lock-shackle{fill:none;stroke:currentColor;stroke-width:3.2;stroke-linecap:round}.lock-hole{fill:#fff}.lock-check{fill:none;stroke:#fff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.lock--alarm{color:var(--alarm)}.lock--safe{color:var(--safe)}.is-armed .lock{color:var(--armed)}.fig{fill:var(--blue-100);stroke:var(--line-2);stroke-width:1.5}.fig--back circle,.fig--back path{fill:var(--blue-100);stroke:var(--line-2);stroke-width:1.5}.alarm-waves path{fill:none;stroke:var(--blue);stroke-width:3;stroke-linecap:round;opacity:.5}.alarm-waves--red path{stroke:var(--alarm)}.cursor{fill:var(--ink);stroke:#fff;stroke-width:1.5}.bell-body{fill:var(--alarm)}.bell-clap{fill:var(--alarm)}.phone-body{fill:var(--ink)}.phone-screen{fill:#fff}.notif{fill:var(--blue-50);stroke:var(--line);stroke-width:1}.notif-dot{fill:var(--alarm)}.notif-l{fill:var(--mut-2)}.vf{fill:#0d1524}.vf-corners path{fill:none;stroke:var(--safe);stroke-width:2.2;stroke-linecap:round}.subject{fill:rgba(255,255,255,.16)}.rec{fill:var(--alarm)}.vf-t{fill:#cfe0ff;font-family:var(--mono);font-size:8px;letter-spacing:.08em}.flash{fill:#fff;opacity:0}.thumb{fill:var(--blue-50);stroke:var(--line-2);stroke-width:1.4}.thumb.is-new{fill:var(--safe-50);stroke:var(--safe)}.fob-body{fill:var(--ink)}.fob-btn{fill:var(--safe)}.fob-ico{fill:none;stroke:#fff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.fob-led{fill:var(--safe)}.link{fill:none;stroke:var(--safe);stroke-width:2.6;stroke-linecap:round;stroke-dasharray:6 7;opacity:.75}.aura{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:-1}.aura span{position:absolute;width:46%;aspect-ratio:1;border-radius:30%;border:2px solid var(--blue);opacity:0}.band{padding:clamp(3.2rem,6vw,5rem) 0;background:var(--bg-soft);border-block:1px solid var(--line)}section.story{padding:clamp(3.2rem,6vw,5rem) 0}section.closing{padding:clamp(3.5rem,7vw,6rem) 0}.frieze{list-style:none;margin:2.4rem 0 0;padding:0;display:grid;gap:.9rem;grid-template-columns:repeat(6, 1fr);counter-reset:step}@media (max-width: 60rem){.frieze{grid-template-columns:repeat(3, 1fr)}}@media (max-width: 34rem){.frieze{grid-template-columns:repeat(2, 1fr)}}.fr-step{position:relative;text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:1.2rem .7rem 1rem}.fr-step b{display:block;font-size:.95rem;margin-top:.55rem}.fr-step span:last-child{display:block;font-size:.8rem;color:var(--mut);margin-top:.15rem;line-height:1.45}.fr-ic{display:inline-grid;place-items:center;width:2.6rem;height:2.6rem;border-radius:12px;background:var(--blue-50);color:var(--blue)}.fr-ic svg{width:1.35rem;height:1.35rem}.fr-step::after{content:"→";position:absolute;right:-.72rem;top:50%;transform:translateY(-50%);color:var(--mut-2);font-size:.9rem;z-index:1}.fr-step:last-child::after{content:none}@media (max-width: 60rem){.fr-step:nth-child(3n)::after{content:none}}@media (max-width: 34rem){.fr-step::after{content:none}}.story__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,4vw,3.5rem);align-items:center}.story--alt{background:var(--bg-soft);border-block:1px solid var(--line)}@media (max-width: 50rem){.story__grid{grid-template-columns:1fr;gap:1.6rem}.story--alt .story__copy,.story:not(.story--alt) .story__copy{order:-1}}.story__copy p{color:var(--mut);margin:.4rem 0 0}.story__art .scene{padding:1.5rem;border-radius:var(--r-lg);background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow)}.ticks{list-style:none;margin:1.3rem 0 0;padding:0;display:grid;gap:.6rem}.ticks li{position:relative;padding-left:1.7rem;color:var(--ink-2);font-size:.94rem}.ticks li::before{content:"";position:absolute;left:0;top:.42em;width:.7rem;height:.7rem;border-radius:50%;background:var(--blue-50);box-shadow:inset 0 0 0 2px var(--blue)}.eyebrow--red~.ticks li::before{background:var(--alarm-50);box-shadow:inset 0 0 0 2px var(--alarm)}.eyebrow--green~.ticks li::before{background:var(--safe-50);box-shadow:inset 0 0 0 2px var(--safe)}.cards{margin:2.4rem 0 0;display:grid;gap:1rem;grid-template-columns:repeat(3, 1fr)}@media (max-width: 54rem){.cards{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 34rem){.cards{grid-template-columns:1fr}}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:1.4rem 1.4rem 1.5rem;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.card h3{font-family:var(--mono);font-size:.98rem;font-weight:700;margin:.9rem 0 .35rem}.card p{margin:0;color:var(--mut);font-size:.9rem}.card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--blue-100)}.card__ic{display:inline-grid;place-items:center;width:2.9rem;height:2.9rem;border-radius:13px;background:var(--blue-50);color:var(--blue)}.card__ic svg{width:1.5rem;height:1.5rem}.strip{list-style:none;margin:2.4rem 0 0;padding:0;display:grid;gap:.9rem;grid-template-columns:repeat(6, 1fr)}@media (max-width: 60rem){.strip{grid-template-columns:repeat(3, 1fr)}}@media (max-width: 34rem){.strip{grid-template-columns:repeat(2, 1fr)}}.panel{text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:1.3rem .8rem}.panel p{margin:.7rem 0 0;font-size:.82rem;color:var(--ink-2);line-height:1.4}.panel--alarm{background:var(--alarm-50);border-color:rgba(242,74,99,.28)}.panel--safe{background:var(--safe-50);border-color:rgba(31,184,119,.3)}.panel__ic{display:inline-grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:50%;background:var(--blue-50);color:var(--blue)}.panel__ic svg{width:1.35rem;height:1.35rem}.panel--alarm .panel__ic{background:#fff;color:var(--alarm)}.panel--safe .panel__ic{background:#fff;color:var(--safe)}.band--install{background:linear-gradient(180deg, var(--bg-soft), #fff)}.install__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,4vw,3rem);align-items:center}@media (max-width: 50rem){.install__grid{grid-template-columns:1fr}}.install__copy h2{text-align:left}.install__rows{display:grid;gap:.6rem;margin:.4rem 0 1.3rem}.irow{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);padding:.7rem .95rem}.irow code{font-family:var(--mono);font-size:.82rem;color:var(--ink-2)}.irow__k{font-family:var(--mono);font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--blue);background:var(--blue-50);padding:.2rem .55rem;border-radius:999px;white-space:nowrap}.install__note{color:var(--mut);font-size:.88rem;margin:0}.scene--term{align-items:stretch}.term{width:100%;background:linear-gradient(180deg, var(--term-bg), var(--term-bg-2));border:1px solid rgba(20,40,80,.5);border-radius:var(--r);overflow:hidden;box-shadow:0 30px 60px -28px rgba(12,30,70,.55)}.term__bar{display:flex;align-items:center;gap:.5rem;padding:.65rem 1rem;border-bottom:1px solid var(--term-line);font-family:var(--mono);font-size:.7rem;color:var(--term-mut)}.term__dot{width:.6rem;height:.6rem;border-radius:50%;background:rgba(255,255,255,.16)}.term__dot:nth-child(1){background:#ff5f57}.term__dot:nth-child(2){background:#febc2e}.term__dot:nth-child(3){background:#28c840}.term__title{margin-left:auto}.term__body{margin:0;padding:1.1rem 1.2rem;overflow-x:auto;font-family:var(--mono);font-size:.8rem;line-height:1.85;color:var(--term-text)}.term__body code{background:none;padding:0;color:inherit;font-size:inherit}.term .p{color:var(--sky)}.term .ok{color:#2bd48b}.s-idle{color:var(--mut-2)}.s-armed{color:var(--armed)}.s-trig{color:#ffc65c}.s-alarm{color:var(--alarm)}.closing{text-align:center}.scene--closing{max-width:24rem;margin:0 auto}.closing__quote{margin:1.6rem auto 0;max-width:30rem;font-size:1.35rem;font-weight:650;color:var(--ink)}.closing__quote span{color:var(--mut);font-weight:400}footer{border-top:1px solid var(--line);padding:2rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;max-width:var(--maxw);margin:0 auto;font-family:var(--mono);font-size:.78rem;color:var(--mut)}footer .foot__mark{font-weight:700;color:var(--ink)}footer .foot__mark .u{color:var(--blue)}footer a{color:var(--mut)}footer .sep{color:var(--line-2);padding:0 .4rem}.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s cubic-bezier(.22, 1, .36, 1)}.reveal.is-in{opacity:1;transform:none}@keyframes aura{0%{transform:scale(.7);opacity:0}35%{opacity:.5}100%{transform:scale(1.35);opacity:0}}.aura span{animation:aura 4.5s ease-out infinite}.aura span:nth-child(2){animation-delay:1.5s}.aura span:nth-child(3){animation-delay:3s}@keyframes ripple{0%{opacity:0;transform:translateX(-4px) scale(.9)}50%{opacity:.6}100%{opacity:0;transform:translateX(6px) scale(1.08)}}.is-in .alarm-waves path{transform-origin:left center;animation:ripple 2.4s ease-out infinite}.is-in .alarm-waves path:nth-child(2){animation-delay:.6s}.is-in .alarm-waves.is-loud path{animation-duration:1.4s}@keyframes shake{0%, 100%{transform:rotate(0)}20%{transform:rotate(-9deg)}40%{transform:rotate(8deg)}60%{transform:rotate(-6deg)}80%{transform:rotate(4deg)}}.is-in .bell{transform-origin:88px 74px;animation:shake 1.1s ease-in-out .2s infinite}@keyframes slide{from{opacity:0;transform:translate(10px, -8px)}to{opacity:1;transform:none}}.notif,.notif-dot,.notif-l{opacity:0}.is-in .notif{animation:slide .5s ease-out .5s forwards}.is-in .notif-dot,.is-in .notif-l{animation:slide .5s ease-out .7s forwards}@keyframes flash{0%, 100%{opacity:0}8%{opacity:.85}30%{opacity:0}}.is-in .flash{animation:flash 3s ease-out .4s infinite}@keyframes pop{0%{opacity:0;transform:scale(.6)}100%{opacity:1;transform:none}}.thumb.is-new{opacity:0;transform-origin:center}.is-in .thumb.is-new{animation:pop .5s ease-out .9s forwards}@keyframes dash{to{stroke-dashoffset:0}}.is-in .link{stroke-dasharray:120;stroke-dashoffset:120;animation:dash .7s ease-out .3s forwards,linkflow 1.6s linear 1s infinite}@keyframes linkflow{to{stroke-dashoffset:-26}}@keyframes draw{from{stroke-dashoffset:22}to{stroke-dashoffset:0}}.lock-check{stroke-dasharray:22;stroke-dashoffset:22}.is-in .lock--safe .lock-check{animation:draw .5s ease-out .9s forwards}@keyframes fobpress{0%, 100%{transform:scale(1)}50%{transform:scale(.86)}}.is-in .fob-btn{transform-origin:46px 92px;animation:fobpress 2s ease-in-out .4s infinite}@keyframes nudge{0%, 100%{transform:translate(0, 0)}50%{transform:translate(-8px, -8px)}}.is-in .hand{animation:nudge 2.2s ease-in-out infinite}.is-in .fr-step,.is-in .panel{animation:rise .5s ease-out both;animation-delay:calc(var(--i, 0)*90ms)}@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes type{from{width:0}to{width:17ch}}@keyframes caret{50%{border-color:rgba(0,0,0,0)}}.is-in .typed{display:inline-block;overflow:hidden;white-space:nowrap;vertical-align:bottom;border-right:2px solid var(--sky);animation:type 1.1s steps(17) .4s both,caret .7s step-end 5}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none !important;transition:none !important}.reveal{opacity:1;transform:none}.notif,.notif-dot,.notif-l,.thumb.is-new{opacity:1}.lock-check{stroke-dashoffset:0}.link{stroke-dashoffset:0}.typed{border:0}}