:root{font-family:system-ui,sans-serif;color:#183b32;background:#f6f4ed;line-height:1.5}*{box-sizing:border-box}body{margin:0}main{max-width:520px;margin:0 auto;padding:28px 20px 50px}.brand{font-size:.8rem;letter-spacing:.18em;font-weight:750;color:#47705e}h1{font-size:2rem;line-height:1.15}h2{font-size:1.4rem}section{background:white;border:1px solid #dbe2d7;border-radius:18px;padding:20px;margin:20px 0}label{display:block;font-weight:650;margin-top:16px}input,button{font:inherit;width:100%;min-height:48px;border-radius:9px;margin:7px 0 10px;padding:12px}input{border:1px solid #899c90;background:white;min-width:0}button{border:0;background:#205d43;color:white;font-weight:650;cursor:pointer}.secondary{background:#e0e9dd;color:#183b32}a{color:#205d43}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #c18316;outline-offset:3px}[role=alert]{background:#ffe8df;padding:14px;border-radius:9px;color:#802800}[role=status]{background:#deefd8;padding:14px;border-radius:9px}.qr{display:block;max-width:100%;height:auto;margin:20px auto}.stamps{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.stamps span{aspect-ratio:1;display:grid;place-items:center;border-radius:50%;background:#f1f3ed;color:#637066}.stamps .filled{background:#205d43;color:white;font-size:1.5rem}
.button-link{display:flex;align-items:center;justify-content:center;width:100%;box-sizing:border-box;min-height:48px;border-radius:9px;margin:7px 0 10px;padding:12px;background:#205d43;color:#fff;font-weight:650;text-align:center;text-decoration:none}.button-link:hover{background:#15452f}.button-link.secondary{background:#e0e9dd;color:#183b32}.button-link.secondary:hover{background:#ceddc9}
.code-card{text-align:center;margin:16px 0;padding:24px 20px}.code-card h1{font-size:1.65rem;margin:0 0 8px}.code-instruction{margin:0 0 12px}.code-validity{display:inline-block;margin:0;padding:6px 12px;border-radius:20px;background:#e0e9dd;color:#183b32;font-size:.85rem;font-weight:650}.code-card .qr{width:260px;max-width:100%;margin:16px auto}.code-manual{border-top:1px solid #dbe2d7;padding-top:14px}.code-manual label{margin-top:0;font-size:.9rem}.code-manual input{font-family:ui-monospace,monospace;font-size:1.5rem;font-weight:750;letter-spacing:.18em;text-align:center;background:#f6f4ed;border-color:#dbe2d7;margin-bottom:0}.code-hint,.code-footer{font-size:.85rem;color:#47705e}.code-hint{margin:14px 0}.code-card .button-link{margin-bottom:0}.code-footer{text-align:center;margin:0 8px}
summary{cursor:pointer;min-height:44px;padding:10px 0;font-weight:650}summary:focus-visible{outline:3px solid #c18316;outline-offset:3px}#redemption-history,.stamp-dates{padding-left:24px}#redemption-history li,.stamp-dates li{padding:6px 0;font-variant-numeric:tabular-nums}
dialog{width:calc(100% - 32px);max-width:520px;max-height:90dvh;overflow:auto;border:1px solid #dbe2d7;border-radius:18px;padding:20px;color:inherit;background:#fff}dialog::backdrop{background:#10251dcc}dialog h2{margin-top:0}#scanner-video{display:block;width:100%;max-height:40dvh;object-fit:contain;background:#10251d;border-radius:9px}#scanner-video:not([src]){min-height:120px}select{font:inherit;width:100%;min-height:48px;padding:10px;border:1px solid #899c90;border-radius:9px;background:white}select:focus-visible{outline:3px solid #c18316;outline-offset:3px}[hidden]{display:none!important}button:disabled{opacity:.6;cursor:wait}
select{font:inherit;width:100%;min-height:48px;border:1px solid #899c90;border-radius:9px;padding:12px;margin:7px 0 10px;background:white}select:focus-visible{outline:3px solid #c18316;outline-offset:3px}
.admin{max-width:1120px}.admin header nav{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.admin header nav form{margin-left:auto}.admin header nav button{width:auto}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left}th,td{padding:12px;border-bottom:1px solid #dbe2d7;vertical-align:top}th{font-size:.9rem}td time{white-space:nowrap}.identifier{font-family:ui-monospace,monospace;font-size:.8rem;overflow-wrap:anywhere}.pagination{display:flex;justify-content:space-between;gap:16px;margin-top:20px}.checkbox-label{display:flex;align-items:center;gap:12px}.checkbox-label input{width:22px;min-height:22px;margin:0}.danger{background:#802800}.admin details{min-width:180px}.admin dd{margin-left:0;margin-bottom:8px}.admin form{max-width:650px}

.cashier-success[role=status]{display:flex;align-items:center;gap:14px;background:#205d43;color:#fff;border:2px solid #15452f;border-radius:12px;padding:18px 20px;margin:20px 0;font-size:1.15rem;box-shadow:0 4px 12px #183b3226;transition:opacity .25s ease}.cashier-success-icon{display:grid;place-items:center;flex:0 0 36px;height:36px;border-radius:50%;background:#fff;color:#205d43;font-size:1.4rem;font-weight:800}.cashier-success.is-hiding{opacity:0}@media(prefers-reduced-motion:reduce){.cashier-success[role=status]{transition:none}}
