*{box-sizing:border-box}body{margin:0;background:#f6f8fc;color:#141b2b;font-family:Inter,Arial,sans-serif;line-height:1.5}body:before{content:"";display:block;height:7px;background:linear-gradient(90deg,#00c6f2,#005bcb,#ea008d,#ffdc00,#141b2b)}a{color:#005abe}button,input,.button{font:inherit}button,.button{cursor:pointer;display:inline-block;border:0;border-radius:12px;background:#075fc8;color:#fff;padding:12px 19px;font-weight:700;text-decoration:none}button:disabled{cursor:default;opacity:.5}button:hover:not(:disabled),.button:hover{filter:brightness(.94)}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #edb900;outline-offset:3px}.secondary{background:#eaf0f8;color:#173c66}.danger{background:#fff0f1;color:#a71732}input{display:block;width:100%;border:1px solid #c3cddd;background:white;padding:12px;border-radius:10px;color:#18263a;margin-top:6px}label{font-size:.95rem;font-weight:600}h1{font-size:clamp(26px,5vw,38px);letter-spacing:-1px;margin:8px 0 20px}h2{margin:0 0 14px;font-size:22px}p{margin:8px 0 18px}.brand{max-width:1080px;margin:auto;padding:18px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand img{display:block;width:145px;height:112px;object-fit:contain;mix-blend-mode:multiply}.back{font-size:14px;text-decoration:none}.customer{max-width:650px;margin:auto;padding:14px 20px 32px}.admin{max-width:1080px;margin:auto;padding:14px 24px 32px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:2px;color:#005ac6}.panel{background:#fff;border:1px solid #e1e7ef;border-radius:23px;padding:24px;margin-bottom:20px;box-shadow:0 8px 26px #263f6b08}.panel form{margin-top:16px}.panel button{margin-top:14px}#message:empty{display:none}#message.error,#dialog-error{color:#ad1933}#message{padding:12px;border-radius:12px;background:#eaf0f8}.greeting{display:flex;justify-content:space-between;gap:10px}.greeting h2{margin-bottom:0}.muted,.hint,.privacy-note{color:#5a687a;font-size:13px}.hint{margin:8px 0 12px}.stamps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:clamp(7px,2vw,15px);margin:24px 0}.stamp{aspect-ratio:1;display:grid;place-items:center;border:3px solid transparent;border-radius:50%;background:linear-gradient(white,white) padding-box,conic-gradient(#00c9ec,#075fcb,#ec008b,#ffcf00,#00c9ec) border-box;font-size:clamp(18px,4.5vw,28px);font-weight:800}.stamp.filled{background:linear-gradient(140deg,#00b8ef,#074bb9);color:white;border:0}.progress{height:12px;background:#e9eef6;border-radius:20px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#00b9ec,#075fc8);transition:width .3s}.count{text-align:center;font-weight:800;font-size:21px;margin-bottom:10px}.remaining{text-align:center;margin-top:15px}.reward{position:relative;overflow:hidden}.reward:before{content:"";position:absolute;top:0;left:0;right:0;height:6px;background:linear-gradient(90deg,#00c6f2,#005bcb,#ea008d,#ffdc00)}.reward h2{font-size:32px;letter-spacing:-1px;margin-top:4px}.badge{display:inline-block;padding:7px 12px;border-radius:8px;background:#edf1f7;font-weight:700;font-size:13px}.badge.ready{background:#dff6e9;color:#126237}.refresh{width:100%}.toolbar,.search,.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.toolbar p{flex:1}.search{margin:25px 0 12px;align-items:end}.search label{flex:1;min-width:200px}#create,#login{max-width:600px}.customer-row{background:white;padding:22px;border:1px solid #dfe6ef;border-radius:19px;margin:14px 0}.customer-row h2{margin:0;font-size:20px}.customer-row .actions{margin-top:16px}.customer-row input{font-size:12px}.customer-row .actions button{font-size:13px;padding:10px 13px}.customer-row .stamps{max-width:330px;margin:14px 0;gap:9px}.customer-row .stamp{font-size:16px}.history{font-size:13px;margin-top:15px;border-top:1px solid #edf0f6;padding-top:12px}.history p{margin:5px 0}.privacy-note{margin-top:24px}footer{display:flex;justify-content:center;flex-wrap:wrap;gap:20px;padding:30px 18px;font-size:12px}dialog{border:0;border-radius:20px;max-width:480px;width:calc(100% - 30px);padding:26px;box-shadow:0 20px 80px #0004}dialog::backdrop{background:#14244399}dialog .actions{justify-content:flex-end;margin-top:20px}#dialog-error:empty{display:none}[hidden]{display:none!important}@media(max-width:520px){.brand{padding:10px 20px}.brand img{width:120px;height:95px}.panel{padding:20px}.admin{padding:14px 16px}.customer-row{padding:18px}.customer-row .actions button{flex:1}.reward h2{font-size:30px}}
