:root{color-scheme:light dark;--bg:#EAF4EF;--bg-glow:radial-gradient(80% 55% at 15% 0%,rgba(95,224,176,.45),transparent 70%);--field-border:rgba(11,27,22,.45);--text:#0B1B16;--muted:rgba(11,27,22,.7);--faint:rgba(11,27,22,.62);--accent:#087A55;--accent-text:#066345;--warn-text:#8A4B00;--accent-soft:rgba(8,122,85,.13);--on-accent:#FFFFFF;--surface:#FFFFFF;--glass:rgba(255,255,255,.72);--glass-border:rgba(255,255,255,.9);--line:rgba(11,27,22,.1);--warn:#B25E09;--warn-bg:rgba(178,94,9,.13);--shadow:0 8px 24px rgba(11,27,22,.08)}
@media (prefers-color-scheme: dark){:root{--bg:#07110E;--bg-glow:radial-gradient(80% 55% at 15% 0%,rgba(16,185,129,.24),transparent 70%);--field-border:rgba(255,255,255,.4);--text:#F2FBF7;--muted:rgba(242,251,247,.72);--faint:rgba(242,251,247,.5);--accent:#3DDC9E;--accent-text:#3DDC9E;--warn-text:#F2B35A;--accent-soft:rgba(61,220,158,.18);--on-accent:#032A1D;--surface:#14211D;--glass:rgba(20,33,29,.78);--glass-border:rgba(255,255,255,.14);--line:rgba(255,255,255,.12);--warn:#F2B35A;--warn-bg:rgba(242,179,90,.18);--shadow:0 8px 24px rgba(0,0,0,.4)}}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}
body{margin:0;background-color:var(--bg);background-image:var(--bg-glow);background-repeat:no-repeat;background-size:100% 900px;color:var(--text);font:17px/1.55 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;overflow-wrap:break-word}
a{color:var(--accent)}
img,svg{max-width:100%}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}
.skip{position:absolute;left:12px;top:-100px;z-index:20;background:var(--accent);color:var(--on-accent);padding:12px 16px;border-radius:12px;font-weight:700;text-decoration:none}
.skip:focus{top:8px}
.site-header{position:sticky;top:0;z-index:10;background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.site-header-inner{max-width:1080px;margin:0 auto;padding:6px 16px;display:flex;align-items:center;gap:16px;min-height:60px}
.site-logo{display:inline-flex;align-items:center;gap:10px;min-height:48px;color:var(--text);font-weight:800;font-size:1.25rem;letter-spacing:-.01em;text-decoration:none}
.site-logo .logo-mark{display:block;width:32px;height:32px;flex:none}
.site-nav{display:none;margin-left:auto;gap:4px}
.site-nav a{display:inline-flex;align-items:center;min-height:48px;padding:0 12px;color:var(--muted);font-size:.95rem;font-weight:600;text-decoration:none;border-radius:12px}
.site-nav a:hover{color:var(--text)}
.site-header .btn{margin-left:auto;min-height:48px;padding:0 18px;font-size:.95rem}
@media (min-width:640px){.site-nav{display:flex}.site-header .btn{margin-left:8px}}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border:1px solid var(--accent);border-radius:999px;background:var(--accent);color:var(--on-accent);font:inherit;font-weight:700;text-decoration:none;cursor:pointer;text-align:center}
.btn:hover{filter:brightness(1.06)}
.btn-ghost{background:var(--glass);border-color:var(--line);color:var(--text)}
.site-footer{border-top:1px solid var(--line);margin-top:48px;padding:28px 0 40px;color:var(--muted);font-size:.95rem}
.site-footer-inner{max-width:1080px;margin:0 auto;padding:0 16px;display:flex;flex-wrap:wrap;gap:8px 24px;align-items:center;justify-content:space-between}
.site-footer nav{display:flex;flex-wrap:wrap;gap:0 8px}
.site-footer nav a{display:inline-flex;align-items:center;min-height:48px;padding:0 8px;color:var(--muted);text-decoration:none;font-weight:600}
.site-footer nav a:hover{color:var(--text);text-decoration:underline}
.prose{max-width:720px;margin:0 auto;padding:32px 20px 24px}
.prose h1{font-size:2rem;line-height:1.2;letter-spacing:-.02em;margin:.6em 0 .2em}
.prose h2{font-size:1.2rem;margin:1.8em 0 .4em}
.prose p{margin:.6em 0}
.prose ul{padding-left:1.3em}
.prose li{margin:.4em 0}
.prose .meta{color:var(--muted);font-size:.9rem;margin:0 0 1.2em}
.prose .links{display:flex;flex-wrap:wrap;gap:10px;margin:1.2em 0}
.prose .links a{display:inline-flex;align-items:center;min-height:48px;padding:0 18px;background:var(--surface);border:1px solid var(--line);border-radius:14px;color:var(--accent-text);font-weight:700;text-decoration:none}
.prose .links a:first-child{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.notice{background:var(--warn-bg);color:var(--warn);border-radius:12px;padding:12px 14px;margin:1em 0;font-size:.95rem}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
[hidden]{display:none!important}
/* The product page. The shared look (colours, header, footer, buttons) comes from @zocery/site-chrome. */
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.wrap{max-width:1080px;margin:0 auto;padding:0 16px}
.center{text-align:center}
main section{padding:clamp(56px,8vw,96px) 0;scroll-margin-top:72px}
.site-footer{margin-top:0}
h1,h2,h3{letter-spacing:-.02em;text-wrap:balance}
p,li{text-wrap:pretty}
h1{font-size:clamp(2.1rem,8.2vw,3.6rem);line-height:1.06;margin:16px 0 14px}
h1 em{font-style:normal;color:var(--accent)}
h2{font-size:clamp(1.6rem,5.5vw,2.2rem);line-height:1.15;margin:8px 0 12px}
h3{font-size:1.25rem;line-height:1.25;margin:6px 0 8px}
.row h3{font-size:clamp(1.4rem,4vw,1.8rem);line-height:1.15;margin:0 0 12px}
.row .muted{max-width:44ch;font-size:1.05rem}
.row>div:not(.card){max-width:30rem}
.lead{max-width:560px;margin:0 auto 24px;color:var(--muted);font-size:1.1rem}
.muted{color:var(--muted)}
.fineprint{max-width:520px;margin:12px auto 0;color:var(--faint);font-size:.9rem}
.eyebrow{display:inline-block;margin:0;padding:6px 12px;border-radius:999px;background:var(--accent-soft);color:var(--accent-text);font-size:.9rem;font-weight:700;line-height:1.2}
.hero{padding-top:32px}
.hero-grid{display:grid;gap:40px;align-items:center;text-align:center}
.hero .lead{margin-bottom:28px}
.hero-notify{width:100%;max-width:480px;margin:0 auto}
.hero-copy>.btn[data-after-launch]{margin-bottom:4px}
.hero-more{display:inline-flex;align-items:center;gap:6px;min-height:48px;margin-top:4px;color:var(--accent-text);font-weight:700;text-decoration:none}
.hero-more:hover{text-decoration:underline}
.facts{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 16px;margin:16px 0 0;padding:20px 0 0;border-top:1px solid var(--line);list-style:none;color:var(--muted);font-size:.875rem;font-weight:600}
.facts li{white-space:nowrap}
.facts li::before{content:"✓"/"";margin-right:6px;color:var(--accent-text)}
/* Three screens, the middle one in front, the outer two tucked behind it. */
.phones{position:relative;display:flex;justify-content:center;align-items:center;padding:8px 0 16px}
.phone{position:relative;margin:0;border-radius:24px;border:5px solid #111;overflow:hidden;background:#111;box-shadow:var(--shadow)}
.phone img{display:block;width:100%;height:auto}
.phone-big{z-index:1;width:46%;max-width:250px}
.phone-side{width:36%;max-width:200px;opacity:.92}
.phone-side:first-child{margin-right:-12%;transform:rotate(-6deg) translateY(18px)}
.phone-side:last-child{margin-left:-12%;transform:rotate(6deg) translateY(18px)}
.band{background:var(--glass)}
.row{display:grid;gap:24px;align-items:center;padding:28px 0}
.row:first-of-type{padding-top:0}
.card{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:var(--shadow);color:var(--muted);font-size:.95rem}
.card p{margin:.4em 0}
.card b,.card h3{color:var(--text)}
@media (max-width:899px){.hero-form-visible .site-header .btn[href$="#notify"]{visibility:hidden}}
.btn[aria-disabled=true]{opacity:.7;cursor:progress}
/* The receipt demo */
.demo{display:grid;margin:28px auto 20px;max-width:760px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--shadow)}
.demo-receipt{display:flex;justify-content:center;align-items:center;padding:24px;background:color-mix(in srgb,var(--text) 12%,var(--surface))}
.receipt{width:100%;max-width:300px;padding:22px 20px;background:#FDFDF8;color:#222;box-shadow:0 6px 18px rgba(0,0,0,.14);font:.85rem/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
.receipt p{margin:0}
.receipt-head{text-align:center;padding:2px 0 12px}
.receipt-head:last-child{padding:12px 0 0;margin-top:12px!important;border-top:1px dashed #999}
.receipt-row{display:flex;justify-content:space-between;gap:12px;padding:3px 0}
.receipt-head+.receipt-row{padding-top:12px;border-top:1px dashed #999}
.receipt-total{margin-top:8px!important;padding-top:10px;border-top:1px dashed #999;font-weight:800}
.demo-out{padding:24px;min-height:240px}
.demo-title{margin:0 0 10px;font-weight:800}
.demo-empty{color:var(--muted)}
.demo-list{list-style:none;margin:0;padding:0}
.demo-list li{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.demo-list small{color:var(--muted);margin-left:4px}
.demo-list .demo-total{border-bottom:0;font-weight:800;font-size:1.1rem}
.demo-list li.enter{animation:pop .45s cubic-bezier(.22,1,.36,1)}
@keyframes pop{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* The two product mock-ups: same frame, label on top, a divided foot */
.card.mock{display:flex;flex-direction:column;gap:8px;padding:24px;min-height:368px}
.card p.mock-label{margin:0 0 4px;color:var(--muted);font-size:.85rem;font-weight:600}
.mock-foot{margin-top:auto;padding-top:16px;border-top:1px dashed var(--line)}
.mock-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.card .people{display:flex;margin:0}
.people span{display:grid;place-items:center;width:28px;height:28px;margin-left:-6px;border:2px solid var(--surface);border-radius:50%;background:var(--accent-soft);color:var(--accent-text);font-size:.75rem;font-weight:800}
.people span:last-child{background:var(--accent);color:var(--on-accent)}
.card .mini-item{display:flex;align-items:center;gap:10px;margin:0;padding:6px 0;color:var(--text)}
.mini-item small{margin-left:auto;color:var(--muted);font-size:.85rem}
.tick{display:grid;place-items:center;width:20px;height:20px;flex:none;border:2px solid var(--accent);border-radius:50%}
.mini-item.done{color:var(--muted)!important}
.mini-item.done .name{text-decoration:line-through}
.mini-item.done .tick{background:var(--accent)}
.mini-item.done .tick::after{content:"";width:5px;height:9px;margin-top:-2px;border:solid var(--on-accent);border-width:0 2px 2px 0;transform:rotate(45deg)}
.card .spend-total{margin:0;color:var(--text);font-size:2rem;font-weight:800;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.spend-total small{font-size:1rem;font-weight:600;color:var(--muted)}
.bars{display:flex;align-items:flex-end;gap:10px;height:120px;margin:auto 0 24px}
.bars span{position:relative;flex:1;height:var(--h);border-radius:6px 6px 2px 2px;background:color-mix(in srgb,var(--accent) 30%,transparent)}
.bars span.now{background:var(--accent)}
.bars i{position:absolute;left:0;right:0;bottom:-20px;text-align:center;font-style:normal;font-size:.75rem;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips span{padding:4px 10px;border-radius:999px;background:var(--warn-bg);color:var(--warn-text);font-weight:700;font-size:.85rem}
.card .chips{margin:4px 0 0}
.features{display:grid;gap:0 40px;margin:36px 0 0;padding:0;list-style:none;text-align:left}
.features li{padding:20px 0 22px;border-top:1px solid var(--line)}
.features h3{margin:0 0 6px}
.features p{margin:0;color:var(--muted)}
.vs{display:grid;gap:6px;padding:16px 0;border-bottom:1px solid var(--line)}
.vs p{margin:0;color:var(--muted)}
.vs .k{font-weight:800;color:var(--text)}
.vs-head{display:none}
.vs .with::before{content:"✓ ";color:var(--accent-text);font-weight:800}
.vs .with{color:var(--text)}
.vs .with b{color:var(--accent-text);font-weight:700}
.band-dark{--field-border:rgba(255,255,255,.4);--warn:#F2B35A;--text:#E6F0EC;--muted:#A9BDB5;--faint:#8CA399;--accent:#3DDC9E;--accent-text:#3DDC9E;--warn-text:#F2B35A;--accent-soft:rgba(61,220,158,.18);--on-accent:#032A1D;--line:rgba(255,255,255,.14);--surface:#14211D;--glass:rgba(255,255,255,.08);background:#0F1A16;color:var(--text)}
.band-dark a{color:var(--accent)}
.band-dark .btn{color:var(--on-accent)}
.checks{display:grid;gap:24px 48px;margin:28px 0 32px;padding:0;list-style:none}
.checks li{color:var(--muted);line-height:1.6}
.checks b{display:block;margin-bottom:4px;color:var(--text);font-size:1.1rem}
.links{display:flex;flex-wrap:wrap;gap:4px 20px}
.links a{display:inline-flex;align-items:center;min-height:48px;font-weight:700;text-decoration:none}
.final{border-top:1px solid var(--line)}
/* The notify form */
.notify{width:100%}
.final .notify{max-width:520px;margin:24px auto 0}
.final .muted{max-width:52ch;margin-left:auto;margin-right:auto}
.notify-live{display:flex;flex-direction:column;gap:10px}
.notify input{min-height:52px;width:100%;padding:0 18px;border-radius:999px;border:1px solid var(--field-border);background:var(--surface);color:var(--text);font:inherit}
.notify input:focus{border-color:var(--accent)}
.notify input[aria-invalid=true]{border-color:var(--warn)}
.notify input::placeholder{color:var(--faint)}
.notify .btn{width:100%}
.notify-note{margin:10px 0 0;color:var(--muted);font-size:.9rem}
.notify-status{margin:10px 0 0;min-height:1.5em;font-weight:600}
.notify-status:empty{min-height:0;margin:0}
.notify-status.ok{color:var(--accent-text)}
.notify-status.bad{color:var(--warn-text)}
.notify-noscript{margin:0;color:var(--muted)}
.notify-frame iframe{display:block;width:100%;max-width:380px;height:150px;margin:12px auto 0;border:0;border-radius:14px;background:var(--surface)}
@media (min-width:640px){
  .notify-live{flex-direction:row}
  .notify .btn{width:auto;flex:none}
  .demo{grid-template-columns:1fr 1fr}
  .features{grid-template-columns:repeat(3,1fr)}
  .checks{grid-template-columns:1fr 1fr;max-width:820px}
  .row{grid-template-columns:1fr 1fr;gap:64px}
  .row-flip>.card{order:-1}
  .vs{grid-template-columns:150px 1fr 1fr;gap:24px}
  .vs-head{display:grid;padding-bottom:8px;color:var(--muted);font-size:.85rem;font-weight:700}
  .vs-head span:last-child{color:var(--accent-text)}
  .vs .with::before{content:none}
}
@media (min-width:900px){
  .hero{padding:64px 0 72px}
  .hero-grid{grid-template-columns:1.05fr .95fr;gap:48px;text-align:left}
  .hero h1{font-size:3.25rem}
  .hero .lead{margin-left:0}
  .hero-notify{margin:0}
  .facts{display:grid;grid-template-columns:repeat(2,max-content);justify-content:start;gap:10px 32px}
}
/* Scroll reveal: only added by the script, and only when motion is allowed, so the text is there without it. */
.js-reveal .reveal{opacity:0;transform:translateY(16px);transition:opacity .6s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.22,1,.36,1)}
.js-reveal .reveal.in{opacity:1;transform:none}
