:root{--bg:#f4f4f1;--surface:#fff;--ink:#1b1d22;--muted:#5f6672;--line:#e2e2dc;--brand:#1f2937;--brand-text:#fff;--ok:#15803d;--warn:#b45309;--bad:#b91c1c;--radius:16px;--shadow:0 1px 2px #0000000f, 0 6px 20px #0000000d;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#101215;--surface:#1a1d22;--ink:#eceef2;--muted:#9aa1ad;--line:#2b3038;--shadow:none}}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;margin:0}body.no-scroll{overflow:hidden}h1,h2,h3,p{margin:0}h1{font-size:1.5rem;line-height:1.2}h2{font-size:1.1rem}h3{font-size:1rem}ul,ol{margin:0;padding:0;list-style:none}a{color:inherit}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--muted)}.small{font-size:.85rem}.center-text{text-align:center}.warn-text{color:var(--warn)}:focus-visible{outline:3px solid var(--brand);outline-offset:2px}.screen{width:100%;max-width:520px;padding:16px 16px calc(32px + env(safe-area-inset-bottom));flex-direction:column;gap:14px;min-height:100dvh;margin:0 auto;display:flex}.screen.center{justify-content:center;align-items:stretch}.screen.platform,.screen.landing{max-width:760px}.panel{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:12px;padding:16px;display:flex}.panel-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.form{flex-direction:column;gap:12px;display:flex}.two-cols{grid-template-columns:1fr 1fr;gap:10px;display:grid}.row-actions{flex-wrap:wrap;gap:8px;display:flex}.row-actions>*{flex:1}.page-footer{text-align:center;color:var(--muted);margin-top:auto;padding-top:12px;font-size:.85rem}.page-footer a{text-decoration:underline}.field{flex-direction:column;gap:6px;display:flex}.field-label{font-size:.88rem;font-weight:600}.field-hint{color:var(--muted);font-size:.8rem}input,select{border:1.5px solid var(--line);background:var(--surface);border-radius:12px;width:100%;min-height:46px;padding:10px 12px}input[type=checkbox]{width:20px;height:20px;min-height:20px}input[type=color]{width:46px;min-height:40px;padding:2px}input:read-only{background:0 0}.code-input{letter-spacing:.4em;text-align:center;font-variant-numeric:tabular-nums;font-size:1.4rem}.check-row{align-items:center;gap:10px;font-size:.92rem;display:flex}.inline-field,.copy-field{align-items:stretch;gap:8px;display:flex}.inline-field input,.copy-field input{flex:1;min-width:0}.btn{text-align:center;border:0;border-radius:12px;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:10px 18px;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand);color:var(--brand-text)}.btn-secondary{border:1.5px solid var(--line);background:0 0}.btn-ghost{color:var(--muted);background:0 0}.btn-dark{color:#fff;background:#111}.btn-danger{background:var(--bad);color:#fff}.btn-danger-ghost{color:var(--bad);background:0 0}.link-button{color:var(--brand);text-underline-offset:3px;background:0 0;border:0;padding:6px 4px;font-size:.88rem;font-weight:600;text-decoration:underline}.link-button.danger{color:var(--bad)}.icon-button{background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex}.icon-button.big{background:var(--bg);width:56px;height:56px}.icon-button.on-brand{color:var(--brand-text)}.primary-button{color:#111;background:#fff;border:0;border-radius:12px;padding:12px 18px;font-weight:700}.segmented{background:var(--bg);border-radius:12px;grid-auto-columns:1fr;grid-auto-flow:column;gap:4px;padding:4px;display:grid}.segmented button{background:0 0;border:0;border-radius:9px;min-height:40px;font-weight:600}.segmented button.is-selected{background:var(--surface);box-shadow:var(--shadow)}.spinner-wrap{place-items:center;padding:40px;display:grid}.spinner{border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}.spinner.small{border-width:2px;border-color:currentColor #fff6 #fff6;width:16px;height:16px}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.notice{background:var(--bg);border-radius:12px;padding:10px 12px;font-size:.92rem}.notice-error{color:#7f1d1d;background:#fee2e2}.notice-success{color:#14532d;background:#dcfce7}.warn-box{color:#78350f;background:#fef3c7;border-radius:12px;flex-direction:column;gap:10px;padding:12px;display:flex}.success-box{text-align:center;color:var(--ok);flex-direction:column;align-items:center;gap:10px;padding:8px 0;display:flex}.success-box .row-actions{width:100%;color:var(--ink)}.empty{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:8px;padding:20px 8px;display:flex}.empty strong{color:var(--ink)}.toast{left:50%;bottom:calc(86px + env(safe-area-inset-bottom));color:#fff;z-index:60;max-width:90vw;box-shadow:var(--shadow);background:#111;border-radius:999px;padding:12px 18px;position:fixed;transform:translate(-50%)}.toast-error{background:var(--bad)}.sheet-backdrop{z-index:50;background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);border-radius:20px 20px 0 0;flex-direction:column;width:100%;max-width:560px;max-height:92dvh;display:flex}.sheet.wide{max-width:640px}.sheet-header{justify-content:space-between;align-items:center;padding:12px 8px 4px 20px;display:flex}.sheet-body{padding:8px 20px calc(24px + env(safe-area-inset-bottom));flex-direction:column;gap:14px;display:flex;overflow-y:auto}@media (width>=640px){.sheet-backdrop{align-items:center}.sheet{border-radius:20px}}.mark{border-radius:22%;flex:none;place-items:center;display:inline-grid;overflow:hidden}.mark-image{background:#fff}.mark-image img{object-fit:contain;width:100%;height:100%}.loyalty-card,.welcome{background:var(--brand);color:var(--brand-text);box-shadow:var(--shadow);border-radius:22px;flex-direction:column;gap:16px;padding:20px;display:flex}.loyalty-card header{align-items:center;gap:12px;display:flex}.loyalty-card header>div{flex:1;min-width:0}.loyalty-card header p{opacity:.8;font-size:.9rem}.points{align-items:baseline;gap:8px;display:flex}.points strong{font-variant-numeric:tabular-nums;font-size:3.4rem;line-height:1}.points span{opacity:.85}.holder{opacity:.8;letter-spacing:.03em;font-size:.85rem}.progress{flex-direction:column;gap:10px;display:flex}.progress-text{font-size:.92rem}.stamps{grid-template-columns:repeat(auto-fit,minmax(30px,1fr));gap:8px;max-width:100%;display:grid}.stamp{aspect-ratio:1;opacity:.5;border:2px dashed;border-radius:50%;place-items:center;display:grid}.stamp.filled{opacity:1;background:var(--brand-text);color:var(--brand);border-style:solid}.bar{background:#7f7f7f40;border-radius:99px;height:12px;overflow:hidden}.bar span{background:var(--brand-text);border-radius:99px;height:100%;transition:width .4s;display:block}.bar.mini{height:6px;margin-top:6px}.bar.mini span{background:var(--brand)}.welcome{text-align:left;align-items:flex-start}.welcome h1{font-size:1.8rem}.tagline{opacity:.85}.offer{background:#ffffff26;border-radius:12px;align-items:center;gap:8px;padding:10px 12px;display:flex}.bonus{font-weight:600}.qr-panel{text-align:center;align-items:center}.qr-box{place-items:center;padding:8px;display:grid}.qr-svg,.qr-placeholder{background:#fff;border-radius:12px;width:min(260px,70vw);height:min(260px,70vw)}.qr-placeholder{background:var(--bg)}.qr-note{color:var(--muted);font-size:.85rem}.wallet-buttons{flex-direction:column;gap:8px;display:flex}.reward-list li,.team-list li,.member-list li,.history li{border-top:1px solid var(--line);align-items:center;gap:12px;padding:10px 0;display:flex}.reward-list li:first-child,.team-list li:first-child,.member-list li:first-child,.history li:first-child{border-top:0}.reward-list li>div,.history li>div{flex-direction:column;flex:1;min-width:0;display:flex}.reward-list small,.history small{color:var(--muted)}.reward-list li.is-ready .reward-icon{background:var(--brand);color:var(--brand-text)}.reward-icon,.avatar{background:var(--bg);border-radius:50%;flex:none;place-items:center;width:40px;height:40px;font-weight:700;display:grid}.reward-cost{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.85rem}.delta{font-variant-numeric:tabular-nums;font-weight:700}.delta.plus{color:var(--ok)}.delta.minus{color:var(--bad)}.history li.is-undone{opacity:.55}.history.compact li{padding:6px 0}.team-shell{flex-direction:column;max-width:720px;min-height:100dvh;margin:0 auto;display:flex}.team-header{background:var(--surface);z-index:10;border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:10px 12px;display:flex;position:sticky;top:0}.team-title{flex-direction:column;flex:1;min-width:0;display:flex}.team-title small{color:var(--muted)}.team-main{padding-bottom:calc(84px + env(safe-area-inset-bottom));flex:1}.tab-content{flex-direction:column;gap:14px;padding:14px 14px 0;display:flex}.bottom-nav{background:var(--surface);border-top:1px solid var(--line);max-width:720px;padding-bottom:env(safe-area-inset-bottom);z-index:20;margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav button{color:var(--muted);background:0 0;border:0;flex-direction:column;flex:1;align-items:center;gap:2px;padding:10px 4px;font-size:.72rem;display:flex}.bottom-nav button.is-active{color:var(--brand);font-weight:700}.login-card{background:var(--surface);box-shadow:var(--shadow);text-align:center;border-radius:22px;flex-direction:column;align-items:stretch;gap:14px;padding:24px 20px;display:flex}.login-card .mark{background:var(--brand);color:var(--brand-text);align-self:center}.login-card .form{text-align:left}.badge{background:var(--bg);color:var(--muted);white-space:nowrap;border-radius:99px;padding:3px 8px;font-size:.7rem;font-weight:700}.badge-owner{color:#78350f;background:#fef3c7}.badge-manager{color:#1e3a8a;background:#dbeafe}.member-info{flex-direction:column;flex:1;min-width:0;display:flex}.member-info small{color:var(--muted);text-overflow:ellipsis;overflow:hidden}.team-list li.is-inactive,.biz-list li.is-inactive{opacity:.55}.team-actions{align-items:center;display:flex}.team-list li{flex-wrap:wrap}.biz-actions{flex-wrap:wrap;gap:4px 10px;width:100%;display:flex}.biz-list li{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;padding:12px;display:flex}.platform-header{justify-content:space-between;align-items:center;display:flex}.platform-header>div{gap:8px;display:flex}.past summary{cursor:pointer;color:var(--muted);padding:6px 0}.search input{width:100%}.member-points{flex-direction:column;align-items:flex-end;display:flex}.member-points small{color:var(--muted)}.member-list li{cursor:pointer}.scan-member{text-align:center;flex-direction:column;gap:4px;display:flex}.scan-points{justify-content:center;align-items:baseline;gap:8px;display:flex}.scan-points strong{font-size:2.8rem}.scan-section{flex-direction:column;gap:10px;display:flex}.stepper{justify-content:center;align-items:center;gap:18px;font-size:1.2rem;display:flex}.stepper output strong{font-size:2rem}.reward-actions{flex-direction:column;gap:8px;display:flex}.reward-button{text-align:left;border:1.5px solid var(--brand);background:0 0;border-radius:12px;align-items:center;gap:12px;width:100%;padding:12px;display:flex}.reward-button>span{flex-direction:column;flex:1;display:flex}.reward-button small{color:var(--muted)}.is-locked .reward-button{border-color:var(--line);opacity:.6}.setup-card{color:#78350f;border-radius:var(--radius);background:#fef3c7;flex-direction:column;gap:8px;padding:14px;display:flex}.setup-card li{align-items:center;gap:8px;display:flex}.setup-card li.done{opacity:.7;text-decoration:line-through}.scanner-view{aspect-ratio:1;background:#111;border-radius:16px;position:relative;overflow:hidden}.scanner-view video{object-fit:cover;width:100%;height:100%}.scanner-frame{border:3px solid #ffffffd9;border-radius:18px;position:absolute;inset:18%}.scanner-overlay{color:#fff;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:20px;display:flex;position:absolute;inset:0}.scanner-hint{text-align:center;color:var(--muted);margin-top:6px;font-size:.88rem}.tiles{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tile{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;padding:14px;display:flex}.tile strong{font-variant-numeric:tabular-nums;font-size:1.8rem}.tile small,.tile span{color:var(--muted);font-size:.8rem}.chart{align-items:flex-end;gap:4px;height:140px;display:flex}.chart-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:2px;height:100%;font-size:.7rem;display:flex}.chart-bar{background:var(--brand);border-radius:4px 4px 0 0;width:100%;min-height:2px}.top-list{counter-reset:top}.top-list li{border-top:1px solid var(--line);justify-content:space-between;padding:8px 0;display:flex}.brand-preview{background:var(--brand);color:#fff;border-radius:14px;align-items:center;gap:12px;padding:14px;display:flex}.brand-preview div{flex-direction:column;display:flex}.logo-row{flex-wrap:wrap;gap:8px;display:flex}.icon-grid{grid-template-columns:repeat(auto-fill,minmax(48px,1fr));gap:8px;display:grid}.icon-grid button{aspect-ratio:1;border:1.5px solid var(--line);background:0 0;border-radius:12px;place-items:center;display:grid}.icon-grid button.is-selected{border-color:var(--brand);background:var(--brand);color:var(--brand-text)}.color-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.swatch{border:3px solid #0000;border-radius:50%;width:36px;height:36px}.swatch.is-selected{border-color:var(--ink)}.mode-list{flex-direction:column;gap:8px;display:flex}.mode-list button{text-align:left;border:1.5px solid var(--line);background:0 0;border-radius:12px;flex-direction:column;padding:12px;display:flex}.mode-list button.is-selected{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}.mode-list small{color:var(--muted)}.poster{text-align:center;border:2px dashed var(--line);border-radius:16px;flex-direction:column;align-items:center;gap:12px;padding:16px;display:flex}.poster .mark{background:var(--brand);color:var(--brand-text)}.landing-hero{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:40px 0 20px;display:flex}.landing-mark{background:var(--brand);color:#fff;width:72px;height:72px}.landing-points{flex-direction:column;gap:14px;display:flex}.landing-points li{background:var(--surface);border-radius:var(--radius);align-items:flex-start;gap:14px;padding:14px;display:flex}.landing-points li div{flex-direction:column;display:flex}.landing-points span{color:var(--muted)}.prose{background:var(--surface);border-radius:var(--radius);flex-direction:column;gap:10px;padding:20px;line-height:1.55;display:flex}.prose h2{margin-top:8px}@media print{body *{visibility:hidden}#poster,#poster *{visibility:visible}#poster{color:#000;background:#fff;border:0;justify-content:center;font-size:1.4rem;position:fixed;inset:0}}.shots{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;display:grid}.shots figure{text-align:center;flex-direction:column;gap:8px;margin:0;display:flex}.shots img{width:100%;height:auto;box-shadow:var(--shadow);border:1px solid var(--line);border-radius:22px}.shots figcaption{color:var(--muted);font-size:.9rem}
