:root{--teal:#43bcc4;--teal-deep:#329aa3;--teal-wash:#e8f7f8;--pink:#ea739b;--pink-soft:#ec93ac;--pink-wash:#fdeef3;--yellow:#fac400;--amber:#f2b324;--yellow-wash:#fff6de;--ink:#4f4f4f;--ink-soft:#8b8279;--cream:#fffaf3;--card:#fff;--line:#f1e7d9;--radius:22px;--radius-sm:14px;--shadow:0 12px 32px #7a603c1a;--shadow-sm:0 4px 14px #7a603c14}*{box-sizing:border-box}html,body{margin:0;padding:0}body{min-height:100dvh;color:var(--ink);background-color:var(--cream);font-family:var(--font-rounded), "Hiragino Maru Gothic ProN", "Hiragino Sans", "Noto Sans JP", system-ui, sans-serif;-webkit-font-smoothing:antialiased;background-image:radial-gradient(760px 420px at 8% -6%,#43bcc429,#0000 65%),radial-gradient(680px 420px at 96% 4%,#ea739b24,#0000 65%),radial-gradient(900px 560px at 50% 108%,#fac4001f,#0000 70%);background-attachment:fixed;font-weight:500;line-height:1.75}.wrap{max-width:480px;margin:0 auto;padding:0 18px 72px}.wrap.admin{max-width:1040px}.garland{width:100%;max-width:520px;height:auto;margin:0 auto;display:block}.brand{text-align:center;padding-top:6px}.brand .logo{width:min(62vw,232px);height:auto;margin:0 auto;display:block}.brand h1{letter-spacing:.03em;margin:6px 0 4px;font-size:19px;font-weight:800}.brand p{color:var(--ink-soft);margin:0 0 22px;font-size:12.5px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:26px 20px 22px;position:relative;overflow:hidden}.card:before{content:"";background:linear-gradient(90deg, var(--teal) 0 33.3%, var(--pink) 33.3% 66.6%, var(--yellow) 66.6% 100%);height:6px;position:absolute;inset:0 0 auto}.card+.card{margin-top:16px}.steps{justify-content:center;gap:7px;margin-bottom:20px;display:flex}.steps span{background:var(--line);border-radius:999px;width:30px;height:5px;transition:background .25s}.steps span.on{background:var(--teal)}h2{letter-spacing:.02em;margin:0 0 6px;font-size:17.5px;font-weight:800}.lead{color:var(--ink-soft);margin:0 0 20px;font-size:13px}label{letter-spacing:.03em;margin-bottom:7px;font-size:12.5px;font-weight:800;display:block}.hint{color:var(--ink-soft);margin:6px 0 0;font-size:11.5px;font-weight:500;line-height:1.6}.field{margin-bottom:18px}input{width:100%;color:var(--ink);border:2px solid var(--line);border-radius:var(--radius-sm);background:#fffdfa;padding:14px 15px;font-family:inherit;font-size:16px;font-weight:600;transition:border-color .15s,box-shadow .15s}input::placeholder{color:#cfc4b6;font-weight:500}input:focus{border-color:var(--teal);box-shadow:0 0 0 4px var(--teal-wash);outline:none}input.code{letter-spacing:.45em;text-align:center;padding-left:.45em;font-size:24px;font-weight:800}input.ticket{letter-spacing:.1em;text-transform:uppercase;text-align:center;font-weight:800}button{cursor:pointer;font-family:inherit}.btn{background:linear-gradient(135deg, var(--teal) 0%, var(--teal-deep) 100%);color:#fff;letter-spacing:.04em;border:none;border-radius:999px;width:100%;padding:15px 18px;font-size:15.5px;font-weight:800;transition:transform .12s,box-shadow .15s,filter .15s;box-shadow:0 8px 18px #329aa34d}.btn:hover:not(:disabled){filter:brightness(1.05);box-shadow:0 10px 22px #329aa35c}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;box-shadow:none;cursor:not-allowed}.btn.pink{background:linear-gradient(135deg, var(--pink-soft) 0%, var(--pink) 100%);box-shadow:0 8px 18px #ea739b52}.btn.pink:hover:not(:disabled){box-shadow:0 10px 22px #ea739b61}.btn.ghost{color:var(--teal-deep);border:2px solid var(--line);box-shadow:none;background:#fff}.btn.ghost:hover:not(:disabled){border-color:var(--teal);background:var(--teal-wash);filter:none}.btn.small{width:auto;padding:10px 20px;font-size:13px}.linkrow{text-align:center;color:var(--ink-soft);margin-top:16px;font-size:12.5px}.linkrow a{color:var(--teal-deep);font-weight:700}.alert{border-radius:var(--radius-sm);border:1.5px solid #0000;margin-bottom:16px;padding:12px 14px;font-size:13px;line-height:1.7}.alert.error{color:#c2456f;background:#fdeef3;border-color:#f6ccd9}.alert.info{background:var(--teal-wash);color:#237e86;border-color:#bfe9ec}.alert.dev{background:var(--yellow-wash);color:#99760a;border-style:dashed;border-color:#f2dda0}.coupon{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;margin-bottom:16px;overflow:hidden}.coupon .top{background:linear-gradient(135deg, #f3a7bd 0%, var(--pink-soft) 38%, var(--pink) 100%);color:#fff;text-align:center;padding:22px 20px 24px;position:relative}.coupon .top:after{content:"";border-bottom:3px dotted #ffffffd9;position:absolute;bottom:-1px;left:14px;right:14px}.coupon .eyebrow{letter-spacing:.16em;opacity:.92;font-size:11.5px;font-weight:800}.coupon .amount{letter-spacing:.01em;white-space:nowrap;font-size:clamp(30px,9vw,40px);font-weight:800;line-height:1.2}.coupon .amount small{margin-left:2px;font-size:.42em;font-weight:800}.coupon .amount .times{opacity:.85;margin:0 .16em 0 .2em;font-size:.62em;font-weight:700}.coupon .name{margin-top:2px;font-size:14.5px;font-weight:800}.coupon .body{padding:18px 20px 20px}.meta{color:var(--ink-soft);margin:0 0 14px;font-size:12px}.pill{background:var(--yellow-wash);color:#a07b0c;border-radius:999px;margin:0 6px 6px 0;padding:4px 11px;font-size:11px;font-weight:800;display:inline-block}.pill.held{background:var(--teal-wash);color:var(--teal-deep)}.pill.off{color:#918a80;background:#f4f0ea}.storelist{gap:10px;display:grid}.pickhint{text-align:center;color:var(--ink);margin:0 0 2px;font-size:13.5px;font-weight:800}.footer-note{color:#6f665e;text-align:center;margin-top:26px;font-size:13.5px;line-height:1.95}.spinner{vertical-align:-2px;border:2px solid #ffffff80;border-top-color:#fff;border-radius:50%;width:14px;height:14px;margin-right:7px;animation:.7s linear infinite spin;display:inline-block}.btn.ghost .spinner{border-color:#329aa34d;border-top-color:var(--teal-deep)}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,#f4ece1,#fbf6ef,#f4ece1) 0 0/200% 100%;border-radius:999px;height:14px;animation:1.2s ease-in-out infinite shimmer}.skeleton+.skeleton{width:70%;margin-top:10px}@keyframes shimmer{to{background-position:-200% 0}}table{border-collapse:collapse;width:100%;font-size:12.5px}th,td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:10px 12px}th{color:var(--ink-soft);letter-spacing:.04em;font-size:11.5px;font-weight:800}tbody tr:hover{background:#fffaf3}td.mono{letter-spacing:.04em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600}.tablewrap{overflow-x:auto}.stats{flex-wrap:wrap;gap:12px;margin-bottom:18px;display:flex}.stat{border-radius:var(--radius-sm);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-top:4px solid var(--teal);background:#fff;flex:140px;padding:14px 16px}.stat.used{border-top-color:var(--pink)}.stat.left{border-top-color:var(--yellow)}.stat b{font-size:26px;font-weight:800;line-height:1.3;display:block}.stat span{color:var(--ink-soft);font-size:11.5px;font-weight:700}.row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.row .field{margin-bottom:0}.status-tag{border-radius:999px;padding:3px 10px;font-size:11px;font-weight:800;display:inline-block}.status-tag.unused{background:var(--teal-wash);color:var(--teal-deep)}.status-tag.used{background:var(--pink-wash);color:#c2456f}.status-tag.disabled{color:#918a80;background:#f4f0ea}.powered{justify-content:center;align-items:center;gap:9px;margin:26px 0 14px;display:flex}.powered span{color:var(--ink-soft);letter-spacing:.06em;white-space:nowrap;font-size:11.5px;font-weight:700}.powered img{width:96px;height:auto;display:block}textarea{width:100%;color:var(--ink);border:2px solid var(--line);border-radius:var(--radius-sm);resize:vertical;background:#fffdfa;padding:13px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;line-height:1.7}textarea:focus{border-color:var(--teal);box-shadow:0 0 0 4px var(--teal-wash);outline:none}code{background:var(--yellow-wash);border-radius:5px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}.scanner{z-index:50;color:#fff;padding:16px 18px calc(20px + env(safe-area-inset-bottom));background:#1c1614;flex-direction:column;align-items:center;display:flex;position:fixed;inset:0;overflow-y:auto}.scanner-head{justify-content:space-between;align-items:center;gap:12px;width:100%;max-width:440px;margin-bottom:14px;font-size:14px;font-weight:800;display:flex}.scanner-head button{color:#fff;background:#ffffff24;border:none;border-radius:999px;flex:none;width:34px;height:34px;font-size:15px}.scanner-alert{width:100%;max-width:440px}.scanner-view{aspect-ratio:1;background:#000;border-radius:18px;width:100%;max-width:440px;position:relative;overflow:hidden}.scanner-view video{object-fit:cover;width:100%;height:100%;display:block}.scanner-frame{border:3px solid #ffffffe6;border-radius:14px;position:absolute;inset:14%;box-shadow:0 0 0 100vmax #00000059}.scanner-lead{text-align:center;max-width:440px;margin:16px 0 14px;font-size:14px;font-weight:700;line-height:1.8}.scanner .btn.ghost{color:#fff;background:0 0;border-color:#fff6}.scanner .btn.ghost:hover:not(:disabled){background:#ffffff1a;border-color:#fff}.scanner .hint{color:#ffffffa6}.scanner-busy{margin-top:60px;font-size:15px;font-weight:800}.scanner-manual{gap:14px;width:100%;max-width:380px;margin-top:28px;display:grid}.scanner-manual input{text-align:center;letter-spacing:.2em;background:#fff;font-size:26px}.booth-bar{border-radius:var(--radius-sm);text-align:center;gap:6px;margin-bottom:16px;padding:14px 16px;display:grid}.booth-bar.ok{background:var(--teal-wash);color:#1f7a82;border:1.5px solid #bfe9ec}.booth-bar.ok b{color:var(--ink);font-size:18px;font-weight:800}.booth-label{letter-spacing:.1em;font-size:11px;font-weight:800}.booth-timer{font-size:12.5px;font-weight:700}.booth-bar.need{background:var(--yellow-wash);color:#8a6d00;border:1.5px solid #f2dda0}.booth-bar.need b{font-size:14.5px;font-weight:800;line-height:1.7}.booth-bar.need span{font-size:12.5px;line-height:1.7}.booth-bar.need .btn{justify-self:center;margin-top:4px}.sep{border:none;border-top:1px solid var(--line);margin:22px 0 18px}.details{font-size:13px}.details summary{cursor:pointer;color:var(--teal-deep);padding:4px 0;font-weight:800}.details>.hint{margin:8px 0 12px}
