:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f2f2f7;--surface:#fff;--surface-2:#f2f2f7;--fill:#78788029;--fill-strong:#78788047;--separator:#3c3c434a;--bar:#f9f9f9c7;--label:#000;--label-2:#3c3c43d9;--label-3:#3c3c4399;--link:#0064d2;--danger:#d70015;--success:#248a3d;--warning-bg:#fff4d6;--warning-text:#6b4a00;--font:-apple-system, BlinkMacSystemFont, system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-rounded:ui-rounded, -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--t-large:700 34px/41px var(--font);--t-title1:700 28px/34px var(--font);--t-title2:700 22px/28px var(--font);--t-title3:600 20px/25px var(--font);--t-headline:600 17px/22px var(--font);--t-body:400 17px/22px var(--font);--t-callout:400 16px/21px var(--font);--t-subhead:400 15px/20px var(--font);--t-footnote:400 13px/18px var(--font);--t-caption:400 12px/16px var(--font);--r-group:12px;--r-card:24px;--r-button:14px;--gutter:16px;--tap:44px;--max:520px;--spring:linear(0, .009, .035 2.1%, .141, .281 6.7%, .723 12.9%, .938 16.7%, 1.017, 1.077, 1.121, 1.149 24.3%, 1.159, 1.163, 1.161, 1.154 29.9%, 1.129 32.8%, 1.051 39.6%, 1.017 43.1%, .991, .977 51%, .974 53.8%, .975 57.1%, .997 69.8%, 1.003 76.9%, 1);--spring-soft:linear(0, .0066, .0263 2.2%, .1055 4.5%, .4031 10.8%, .6245 16%, .7802 21.3%, .8853 27.5%, .9461 33.8%, .9799 41.1%, .9961 50.5%, 1.0027 64.3%, 1.0011 83.7%, 1);--ease-out:cubic-bezier(.22, 1, .36, 1);--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#000;--surface:#1c1c1e;--surface-2:#2c2c2e;--fill:#7676803d;--fill-strong:#7676805c;--separator:#54545899;--bar:#161618c7;--label:#fff;--label-2:#ebebf5bf;--label-3:#ebebf573;--link:#4da3ff;--danger:#ff6961;--success:#4cd964;--warning-bg:#3a2d0c;--warning-text:#ffd479}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--label);font:var(--t-body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;margin:0}#root{min-height:100dvh}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--link);outline-offset:2px;border-radius:6px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.page{max-width:var(--max);padding:0 var(--gutter) calc(32px + var(--safe-bottom));margin:0 auto}.navbar{z-index:20;padding-top:var(--safe-top);height:calc(44px + var(--safe-top));background:0 0;border-bottom:.5px solid #0000;grid-template-columns:1fr auto 1fr;align-items:center;transition:background-color .2s,border-color .2s;display:grid;position:sticky;top:0}.navbar.is-scrolled{background:var(--bar);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-bottom-color:var(--separator)}.navbar__inner{max-width:var(--max);grid-column:1/-1;grid-template-columns:1fr auto 1fr;align-items:center;width:100%;margin:0 auto;padding:0 8px;display:grid}.navbar__title{font:var(--t-headline);opacity:0;transition:opacity .2s, transform .25s var(--ease-out);white-space:nowrap;text-overflow:ellipsis;max-width:60vw;overflow:hidden;transform:translateY(4px)}.navbar.is-scrolled .navbar__title{opacity:1;transform:none}.navbar__side{align-items:center;min-width:0;display:flex}.navbar__side--end{justify-content:flex-end}.large-title{font:var(--t-large);letter-spacing:.01em;transform-origin:0 100%;will-change:transform, opacity;overflow-wrap:anywhere;margin:4px 0 16px}.large-title__row{align-items:center;gap:12px;display:flex}.nav-button{min-height:var(--tap);min-width:var(--tap);color:var(--link);font:var(--t-body);background:0 0;border:0;align-items:center;gap:4px;padding:0 8px;display:inline-flex}.group{margin:0 0 28px}.group__header{font:var(--t-footnote);color:var(--label-2);margin:0 16px 6px}.group__footer{font:var(--t-footnote);color:var(--label-2);margin:6px 16px 0}.group__body{background:var(--surface);border-radius:var(--r-group);overflow:hidden}.row{min-height:var(--tap);text-align:left;width:100%;color:var(--label);font:var(--t-body);background:0 0;border:0;align-items:center;gap:12px;padding:11px 16px;display:flex;position:relative}.row+.row:before{content:"";border-top:.5px solid var(--separator);position:absolute;top:0;left:16px;right:0}.row--with-icon+.row:before,.row+.row--with-icon:before{left:56px}button.row:active,a.row:active{background:var(--fill)}a.row{text-decoration:none}.row__icon{color:#fff;border-radius:7px;flex:none;place-items:center;width:28px;height:28px;display:grid}.row__text{flex:1;min-width:0}.row__sub{font:var(--t-subhead);color:var(--label-2);margin-top:2px;display:block}.row__value{color:var(--label-2)}.row__chevron{color:var(--label-3);flex:none}.row--danger{color:var(--danger)}.row--center{text-align:center;justify-content:center}.field{padding:0 16px;display:block;position:relative}.field+.field:before{content:"";border-top:.5px solid var(--separator);position:absolute;top:0;left:16px;right:0}.field__label{font:var(--t-footnote);color:var(--label-2);padding-top:10px;display:block}.field__input{width:100%;min-height:36px;font:var(--t-body);color:var(--label);background:0 0;border:0;outline:0;padding:2px 0 10px;display:block}.field__input::placeholder{color:var(--label-3)}.field:focus-within .field__label{color:var(--link)}.field__error{font:var(--t-footnote);color:var(--danger);margin-top:-4px;padding-bottom:10px;display:block}.switch{appearance:none;background:var(--fill-strong);cursor:pointer;border-radius:999px;flex:none;width:51px;height:31px;margin:0;transition:background-color .25s;position:relative}.switch:after{content:"";width:27px;height:27px;transition:transform .35s var(--spring-soft);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 3px 8px #00000026,0 3px 1px #0000000f}.switch:checked{background:#34c759}.switch:checked:after{transform:translate(20px)}.switch:disabled{opacity:.5;cursor:default}.switch:focus-visible{outline-offset:3px;border-radius:999px}.button{border-radius:var(--r-button);width:100%;min-height:50px;font:var(--t-headline);background:var(--label);color:var(--bg);transition:transform .3s var(--spring-soft), opacity .2s;border:0;justify-content:center;align-items:center;gap:8px;padding:14px 20px;text-decoration:none;display:inline-flex}.button:hover{text-decoration:none}.button:active{transform:scale(.97)}.button:disabled{opacity:.45;cursor:default;transform:none}.button--brand{background:var(--brand-button);color:var(--brand-button-text)}.button--plain{background:var(--fill);color:var(--link)}.button--danger{background:var(--danger);color:#fff}.button--compact{width:auto;min-height:var(--tap);font:var(--t-subhead);border-radius:999px;padding:10px 16px;font-weight:600}.spinner{border:2.5px solid;border-right-color:#0000;border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.notice{border-radius:var(--r-group);background:var(--surface);font:var(--t-subhead);align-items:flex-start;gap:12px;margin-bottom:20px;padding:14px 16px;display:flex}.notice svg{flex:none;margin-top:1px}.notice--warning{background:var(--warning-bg);color:var(--warning-text)}.notice--error{background:color-mix(in srgb, var(--danger) 14%, var(--surface));color:var(--label)}.notice--error svg{color:var(--danger)}.notice strong{margin-bottom:2px;font-weight:600;display:block}.empty{text-align:center;color:var(--label-2);padding:64px 24px}.empty h1{font:var(--t-title2);color:var(--label);margin:16px 0 8px}.empty p{max-width:34ch;margin:0 auto 24px}.toast-region{z-index:60;left:0;right:0;bottom:calc(24px + var(--safe-bottom));pointer-events:none;padding:0 var(--gutter);justify-content:center;display:flex;position:fixed}.toast{background:color-mix(in srgb, var(--label) 88%, transparent);color:var(--bg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);font:var(--t-subhead);animation:toast-in .45s var(--spring-soft);border-radius:999px;max-width:100%;padding:12px 18px;font-weight:600}@keyframes toast-in{0%{opacity:0;transform:translateY(20px)scale(.96)}}.sheet-backdrop{z-index:50;background:#0006;animation:.25s ease-out fade-in;position:fixed;inset:0}.sheet{z-index:51;max-width:var(--max);max-height:calc(100dvh - var(--safe-top) - 24px);background:var(--bg);padding:8px var(--gutter) calc(20px + var(--safe-bottom));animation:sheet-up .5s var(--spring-soft);border-radius:14px 14px 0 0;margin:0 auto;position:fixed;bottom:0;left:0;right:0;overflow-y:auto;box-shadow:0 -10px 40px #0000002e}.sheet__grabber{background:var(--fill-strong);border-radius:3px;width:36px;height:5px;margin:0 auto 12px}.sheet__title{font:var(--t-title3);text-align:center;margin:4px 0 8px}.sheet__text{font:var(--t-subhead);color:var(--label-2);text-align:center;margin:0 0 20px}.sheet__actions{gap:10px;display:grid}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}@keyframes fade-in{0%{opacity:0}}.pass-wrap{perspective:1400px;margin:4px 0 28px}.pass{transform-style:preserve-3d;transition:transform .8s var(--spring-soft);cursor:pointer;border-radius:var(--r-card);-webkit-user-select:none;user-select:none;display:grid;position:relative}.pass.is-flipped{transform:rotateY(180deg)}.pass:focus-visible{outline-offset:4px;border-radius:var(--r-card)}.pass__face{backface-visibility:hidden;border-radius:var(--r-card);background-color:var(--card);color:var(--card-text);background-image:linear-gradient(#ffffff24,#fff0 42%);flex-direction:column;grid-area:1/1;min-height:100%;padding:18px;display:flex;overflow:hidden;box-shadow:0 1px 2px #0000001f,0 12px 32px -8px #00000047}.pass__face--back{transform:rotateY(180deg)}.pass__head{align-items:center;gap:10px;min-height:36px;display:flex}.pass__logo{object-fit:cover;background:#ffffffe6;border-radius:9px;flex:none;width:36px;height:36px}.pass__monogram{width:36px;height:36px;font:700 17px/1 var(--font-rounded);border:1.5px solid;border-radius:9px;flex:none;place-items:center;display:grid}.pass__business{font:var(--t-headline);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pass__count{text-align:right;font:var(--t-caption);color:var(--card-muted)}.pass__count b{font:600 22px/26px var(--font-rounded);color:var(--card-text);font-variant-numeric:tabular-nums;display:block}.pass__greeting{font:var(--t-title2);overflow-wrap:anywhere;margin:18px 0 2px}.pass__reward{font:var(--t-subhead);color:var(--card-muted);margin:0 0 16px}.stamps{grid-template-columns:repeat(var(--cols,5), 1fr);gap:10px;margin:0 0 18px;display:grid}.stamp{aspect-ratio:1;border:2px dashed color-mix(in srgb, var(--card-text) 45%, transparent);color:color-mix(in srgb, var(--card-text) 70%, transparent);border-radius:50%;place-items:center;display:grid;position:relative}.stamp svg{width:46%;height:46%}.stamp--filled{background:var(--stamp);color:var(--stamp-ink);border:0;box-shadow:inset 0 -2px #0000001f}.stamp--new{animation:stamp-in .7s var(--spring) both}.stamp--celebrate{animation:stamp-cheer .9s var(--spring) both;animation-delay:calc(var(--i) * 45ms)}@keyframes stamp-in{0%{opacity:0;transform:scale(1.6)}to{opacity:1;transform:scale(1)}}@keyframes stamp-cheer{0%{transform:scale(1)}35%{transform:scale(1.16)}to{transform:scale(1)}}.pass__complete{background:color-mix(in srgb, var(--card-text) 14%, transparent);font:var(--t-subhead);border-radius:14px;margin:0 0 16px;padding:12px 14px}.pass__complete strong{font:var(--t-headline);display:block}.pass__qr{color:#000;text-align:center;background:#fff;border-radius:16px;align-self:center;width:min(220px,100%);margin-top:auto;padding:12px 12px 8px}.pass__qr img,.pass__qr canvas{width:100%;height:auto;image-rendering:pixelated;display:block}.pass__qr span{font:var(--t-caption);color:#3c3c43;margin-top:4px;display:block}.pass__flip-hint{font:var(--t-caption);color:var(--card-muted);justify-content:center;align-items:center;gap:6px;margin-top:12px;display:flex}.pass__back-title{font:var(--t-title3);margin:16px 0 12px}.pass__facts{gap:14px;margin:0;display:grid}.pass__facts dt{font:var(--t-caption);color:var(--card-muted)}.pass__facts dd{font:var(--t-callout);margin:2px 0 0}.pass--inactive .pass__face{filter:grayscale(.85)}.brand-hero{margin:-4px 0 20px}.brand-hero__logo{object-fit:cover;background:var(--surface);width:52px;height:52px;box-shadow:0 0 0 .5px var(--separator);border-radius:13px;flex:none}.brand-hero__monogram{background:var(--brand-button);width:52px;height:52px;color:var(--brand-button-text);font:700 24px/1 var(--font-rounded);border-radius:13px;flex:none;place-items:center;display:grid}.brand-hero__welcome{font:var(--t-callout);color:var(--label-2);max-width:40ch;margin:0}.mini-pass{background-color:var(--card);color:var(--card-text);background-image:linear-gradient(#ffffff24,#fff0 60%);border-radius:16px;align-items:center;gap:12px;margin-bottom:28px;padding:14px 16px;display:flex}.mini-pass__text{font:var(--t-subhead)}.mini-pass__text b{font:var(--t-headline);display:block}.turnstile{justify-content:center;min-height:0;margin:0 0 16px;display:flex}.legal{font:var(--t-footnote);color:var(--label-2);text-align:center;margin:14px 8px 0}.draft-banner{border:2px solid var(--danger);color:var(--danger);border-radius:var(--r-group);font:var(--t-headline);text-align:center;margin:0 0 20px;padding:12px 14px}.prose{background:var(--surface);border-radius:var(--r-group);padding:4px 18px 18px}.prose h2{font:var(--t-title3);margin:22px 0 8px}.prose p,.prose li{font:var(--t-callout);color:var(--label)}.prose ul{padding-left:20px}.prose .gap{background:var(--warning-bg);color:var(--warning-text);border-radius:4px;padding:0 3px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.pass{transition:none}}.code-input{font:600 28px/36px var(--font-rounded);letter-spacing:.3em;font-variant-numeric:tabular-nums}.group+.button,form>.button{margin-top:0}.row__select{color:var(--label-2);font:var(--t-body);text-align:right;max-width:60%;min-height:var(--tap);background:0 0;border:0}.scanner{aspect-ratio:1;border-radius:var(--r-card);background:#000;max-height:56dvh;margin:0 auto 10px;position:relative;overflow:hidden}.scanner__video{object-fit:cover;width:100%;height:100%;display:block}.scanner__frame{pointer-events:none;border-radius:28px;outline:3px solid #ffffffe6;position:absolute;inset:18%;box-shadow:0 0 0 100vmax #00000059}.scanner__problem{text-align:center;color:#fff;font:var(--t-subhead);place-content:center;justify-items:center;gap:12px;padding:24px;display:grid;position:absolute;inset:0}.scanner__problem p{max-width:32ch;margin:0}.scanner__hint{font:var(--t-subhead);color:var(--label-2);text-align:center;min-height:40px;margin:0 16px 24px}.button--big{border-radius:16px;min-height:60px;font-size:19px}.counter-card{text-align:center;margin:0 0 16px}.counter-card__dots{flex-wrap:wrap;justify-content:center;gap:8px;max-width:280px;margin:0 auto 10px;display:flex}.counter-card__dots i{border:2px solid var(--fill-strong);border-radius:50%;width:22px;height:22px}.counter-card__dots i.is-on{background:var(--brand-button);border-color:var(--brand-button)}.counter-card__count{font:var(--t-subhead);color:var(--label-2);margin:0}.counter-card__count b{font:700 22px/28px var(--font-rounded);color:var(--label);font-variant-numeric:tabular-nums}.counter-done{color:var(--success);justify-content:center;font-weight:600}.counter-done svg{color:var(--success)}.recover-qr{background:#fff;border-radius:20px;width:min(260px,100%);margin:0 auto 20px;padding:16px}.recover-qr img{width:100%;height:auto;display:block}.tabbar{z-index:30;padding:6px 8px calc(6px + var(--safe-bottom));background:var(--bar);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-top:.5px solid var(--separator);justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar__item{max-width:120px;min-height:var(--tap);font:500 10px/12px var(--font);color:var(--label-2);flex-direction:column;flex:1;align-items:center;gap:2px;text-decoration:none;display:flex}.tabbar__item:hover{text-decoration:none}.tabbar__item.active{color:var(--link)}.tabbar-spacer{height:calc(64px + var(--safe-bottom))}.stats{grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px;margin:0 0 20px;display:grid}.stat{background:var(--surface);border-radius:var(--r-group);padding:12px 14px}.stat b{font:700 26px/32px var(--font-rounded);font-variant-numeric:tabular-nums;display:block}.stat span{font:var(--t-footnote);color:var(--label-2)}.search{background:var(--fill);min-height:36px;color:var(--label-2);border-radius:10px;align-items:center;gap:8px;margin:0 0 20px;padding:0 10px;display:flex}.search input{font:var(--t-body);color:var(--label);background:0 0;border:0;outline:0;flex:1;min-height:36px}.search input::placeholder{color:var(--label-3)}.customer-value{font-variant-numeric:tabular-nums;align-items:center;gap:6px;display:inline-flex}.row__logo{object-fit:cover;border-radius:7px;width:28px;height:28px}.preview-card{pointer-events:none;max-width:360px;margin:0 auto}.preview-card .pass__qr,.preview-card .pass__flip-hint,.preview-card .pass__face--back{display:none}.preview-card .pass-wrap{margin-bottom:24px}textarea.field__input{resize:vertical;min-height:44px;font:var(--t-body)}.stepper{background:var(--fill);border-radius:9px;align-items:center;display:inline-flex}.stepper button{width:44px;height:34px;font:400 22px/1 var(--font);color:var(--label);background:0 0;border:0}.stepper button:disabled{color:var(--label-3)}.stepper output{text-align:center;min-width:32px;font:600 17px/1 var(--font-rounded);font-variant-numeric:tabular-nums}.color-hex{background:var(--fill);width:92px;color:var(--label);text-align:center;border:0;border-radius:8px;padding:6px 8px;font:500 15px/20px ui-monospace,Menlo,Consolas,monospace}.color-swatch{cursor:pointer;background:0 0;border:0;border-radius:50%;width:36px;height:36px;padding:0}.color-swatch::-webkit-color-swatch-wrapper{padding:0}.color-swatch::-webkit-color-swatch{border:.5px solid var(--separator);border-radius:50%}.save-bar{margin:0 0 28px}.counter-qr{background:#fff;border-radius:12px;width:160px;margin:16px auto 8px;padding:8px}.counter-qr img{width:100%;height:auto;display:block}.link-button{color:var(--link);font:var(--t-body);min-height:var(--tap);background:0 0;border:0;padding:0 4px}
