:root{--scan-dock-h: 76px}.kiosk-shell{padding-bottom:calc(var(--scan-dock-h) + env(safe-area-inset-bottom,0px))}body.in-game .kiosk-shell{padding-bottom:0}.scan-dock{position:fixed;left:50%;bottom:0;transform:translate(-50%);width:100%;max-width:480px;z-index:90;display:flex;justify-content:center;padding:18px 16px calc(12px + env(safe-area-inset-bottom,0px));background:linear-gradient(to top,var(--bg-app) 55%,transparent);pointer-events:none}@media(min-width:540px){.scan-dock{max-width:560px}}@media(min-width:760px){.scan-dock{max-width:720px}}body.in-game .scan-dock,body.scan-open .scan-dock{display:none}.scan-dock-btn{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:12px 26px;font-family:var(--font-pixel);font-size:12px;letter-spacing:.06em;color:var(--ink);background:var(--hot-pink);border:3px solid var(--black);border-radius:999px;box-shadow:var(--px-shadow);cursor:pointer;transition:transform .1s,box-shadow .1s}.scan-dock-btn:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--black)}.scan-dock-btn:focus-visible{outline:3px solid var(--neon-cyan);outline-offset:3px}.scan-dock-ico{width:22px;height:22px;flex:0 0 auto}body.scan-open{overflow:hidden}.scan-ov{position:fixed;inset:0;z-index:1000;background:var(--black);color:var(--ink);font-family:var(--font-body)}.scan-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:var(--black)}.scan-shade{position:absolute;inset:0;pointer-events:none}.scan-frame{position:absolute;left:50%;top:46%;width:min(68vw,300px);aspect-ratio:1;transform:translate(-50%,-50%);box-shadow:0 0 0 100vmax color-mix(in srgb,var(--black) 58%,transparent);border-radius:var(--r-md);pointer-events:none}.scan-frame i{position:absolute;width:34px;height:34px;border:5px solid var(--neon-cyan)}.scan-frame i:nth-child(1){left:-3px;top:-3px;border-right:0;border-bottom:0;border-top-left-radius:var(--r-md)}.scan-frame i:nth-child(2){right:-3px;top:-3px;border-left:0;border-bottom:0;border-top-right-radius:var(--r-md)}.scan-frame i:nth-child(3){left:-3px;bottom:-3px;border-right:0;border-top:0;border-bottom-left-radius:var(--r-md)}.scan-frame i:nth-child(4){right:-3px;bottom:-3px;border-left:0;border-top:0;border-bottom-right-radius:var(--r-md)}.scan-top{position:absolute;left:0;right:0;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:max(14px,env(safe-area-inset-top)) 16px 14px}.scan-title{font-family:var(--font-display);font-size:22px;line-height:1.1;text-transform:uppercase;letter-spacing:.01em;text-wrap:balance;text-shadow:2px 2px 0 var(--black)}.scan-close{flex:0 0 auto;width:48px;height:48px;display:grid;place-items:center;cursor:pointer;color:var(--ink);background:var(--bg-card);border:3px solid var(--black);border-radius:50%;box-shadow:var(--px-shadow)}.scan-close svg{width:20px;height:20px}.scan-close:focus-visible{outline:3px solid var(--neon-cyan);outline-offset:3px}.scan-msg{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:16px 22px calc(26px + env(safe-area-inset-bottom,0px));text-align:center;font-size:16px;line-height:1.4;font-weight:600;text-shadow:0 1px 6px var(--black);background:linear-gradient(to top,color-mix(in srgb,var(--black) 78%,transparent),transparent)}.scan-confirm{position:absolute;inset:0;z-index:3;display:grid;place-items:center;padding:20px;background:color-mix(in srgb,var(--black) 70%,transparent)}.scan-confirm[hidden]{display:none}.scan-confirm-card{width:min(360px,100%);display:flex;flex-direction:column;gap:12px;text-align:center;padding:22px 18px;background:var(--bg-card);border:3px solid var(--hot-pink);border-radius:var(--r-lg);box-shadow:var(--px-shadow)}.scan-confirm-q{font-family:var(--font-display);font-size:26px;text-transform:uppercase}.scan-confirm-to{font-size:17px;font-weight:700;color:var(--neon-cyan);overflow-wrap:anywhere}.scan-confirm-btns{display:flex;gap:10px;margin-top:6px}.scan-confirm-btns button{flex:1;min-height:48px;padding:10px 12px;cursor:pointer;font-family:var(--font-pixel);font-size:10px;letter-spacing:.04em;text-transform:uppercase;border:3px solid var(--black);border-radius:999px;box-shadow:var(--px-shadow)}.scan-no{color:var(--ink);background:var(--bg-inner)}.scan-yes{color:var(--ink);background:var(--hot-pink)}.scan-confirm-btns button:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--black)}@media(prefers-reduced-motion:reduce){.scan-dock-btn{transition:none}}
