:root{--bg:#0f1020;--card:#1b1c33;--line:#2c2e4a;--txt:#f2f3ff;--muted:#9aa0c0;--brand:#6c7bff;--brand-2:#9a7bff;--gold:#ffcf5c;--ok:#36d399;--err:#ff6b81}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--txt);-webkit-tap-highlight-color:transparent;font-family:-apple-system,Apple SD Gothic Neo,Pretendard,system-ui,sans-serif}.page{max-width:480px;min-height:100%;margin:0 auto;padding:18px}.page.center{justify-content:center;align-items:center;display:flex}.card{background:var(--card);border:1px solid var(--line);text-align:center;border-radius:18px;width:100%;padding:24px 20px}.brand{background:linear-gradient(90deg, var(--brand), var(--brand-2));color:#0000;-webkit-background-clip:text;background-clip:text;margin:0 0 4px;font-size:26px}.brand-sm{color:var(--brand);font-weight:700}.muted{color:var(--muted);font-size:14px;line-height:1.5}.err{color:var(--err);margin:8px 0;font-size:14px}.form{text-align:left;flex-direction:column;gap:8px;margin-top:16px;display:flex}.form label{color:var(--muted);margin-top:8px;font-size:13px}.form input{border:1px solid var(--line);width:100%;color:var(--txt);background:#14152a;border-radius:12px;padding:14px;font-size:16px}.form input:focus{outline:2px solid var(--brand)}.seg{gap:8px;display:flex}.seg button{border:1px solid var(--line);color:var(--muted);background:#14152a;border-radius:12px;flex:1;padding:12px;font-size:15px}.seg button.seg-on{border-color:var(--brand);color:var(--txt);background:#20224a}.btn{background:linear-gradient(90deg, var(--brand), var(--brand-2));color:#fff;border:none;border-radius:14px;width:100%;margin-top:14px;padding:15px;font-size:16px;font-weight:700}.btn:disabled{opacity:.6}.btn.gold{color:#2a1a00;background:linear-gradient(90deg,#ffcf5c,#ff9f43)}.btn.ghost{background:#2c2e4a}.btn.scan-btn{margin-top:18px}.link{color:var(--brand);background:0 0;border:none;margin-top:12px;font-size:14px}.topbar{justify-content:space-between;align-items:center;display:flex}.hello{margin:16px 0 10px;font-size:16px}.progress{align-items:center;gap:10px;margin-bottom:8px;display:flex}.progress span{color:var(--muted);white-space:nowrap;font-size:13px}.progress-bar{background:#14152a;border-radius:99px;flex:1;height:10px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--ok), var(--brand));height:100%;transition:width .5s}.map-wrap{margin:12px 0}.map-bg{aspect-ratio:1;border:1px solid var(--line);background:radial-gradient(circle at 30% 20%,#2a2c55,#0000 40%),radial-gradient(circle at 80% 70%,#3a2c55,#0000 40%),#14152a;border-radius:16px;width:100%;position:relative;overflow:hidden}.booth{flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;transform:translate(-50%,-50%)}.booth-name{color:var(--muted);white-space:nowrap;font-size:11px}.stamp{border:2px dashed var(--line);width:52px;height:52px;color:var(--muted);background:#1b1c33;border-radius:50%;justify-content:center;align-items:center;font-size:20px;font-weight:800;display:flex}.stamp.big{width:96px;height:96px;margin:0 auto 12px;font-size:44px}.stamp.stamp-on{border:2px solid var(--ok);color:#fff;background:radial-gradient(circle, var(--ok), #1c8c63);box-shadow:0 0 0 4px #36d3992e}.stamp.stamp-fail{border:2px solid var(--err);color:#fff;background:radial-gradient(circle, var(--err), #b03048)}@keyframes stampPop{0%{opacity:0;transform:scale(2.4)rotate(-25deg)}60%{opacity:1;transform:scale(.82)rotate(8deg)}80%{transform:scale(1.08)rotate(-3deg)}to{transform:scale(1)rotate(0)}}.stamp-pop{animation:.55s cubic-bezier(.18,.9,.3,1.3) both stampPop}.scanner-overlay{z-index:50;background:#000000d9;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.scanner-box{text-align:center;width:100%;max-width:360px}.scanner-region{aspect-ratio:1;border:2px solid var(--brand);background:#000;border-radius:16px;width:100%;overflow:hidden}.scanner-box .muted{margin:12px 0}.congrats .confetti{font-size:56px}.cta-box{border:1px solid var(--brand);text-align:left;background:#20224a;border-radius:14px;margin:18px 0;padding:16px}.cta-box b{color:var(--gold)}.qr-box{background:#fff;border-radius:14px;margin:12px 0;padding:16px;display:inline-block}.qr-name{font-size:14px}
