.ph-qr-scan{--ph-qr-cycle: 9s;position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:clamp(16px,3vw,28px);background:radial-gradient(120% 90% at 50% 0%,#f3ff2f24,#f3ff2f00 55%),linear-gradient(180deg,#f4f4f2,#ebebea)}.ph-qr-scan__scene{position:relative;width:min(100%,320px);aspect-ratio:1 / 1}.ph-qr-scan__kiosk{position:absolute;left:0;bottom:8%;width:58%;z-index:1}.ph-qr-scan__kiosk-top{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;border-radius:10px 10px 0 0;background:#0a0a0a;color:#fff;font-size:9px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.ph-qr-scan__kiosk-body{padding:12px 12px 14px;border:1px solid rgba(0,0,0,.08);border-top:none;border-radius:0 0 12px 12px;background:#fff;box-shadow:0 10px 28px #00000014}.ph-qr-scan__qr-wrap{position:relative;width:72%;margin:0 auto;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.06)}.ph-qr-scan__qr{display:block;width:100%;height:100%}.ph-qr-scan__qr-frame{position:absolute;inset:8%;border:2px solid rgba(243,255,47,.85);border-radius:4px;opacity:0;transform:scale(.96)}.ph-qr-scan__scanline{position:absolute;left:4%;right:4%;top:8%;height:3px;border-radius:999px;background:linear-gradient(90deg,transparent 0%,rgba(243,255,47,.65) 15%,var(--selection-highlight, #f3ff2f) 50%,rgba(243,255,47,.65) 85%,transparent 100%);box-shadow:0 0 4px #f3ff2ff2,0 0 12px #f3ff2fbf,0 0 20px #f3ff2f59;opacity:0;transform:translateY(0)}.ph-qr-scan__phone{position:absolute;right:-2%;top:6%;width:46%;z-index:2;transform:rotate(8deg)}.ph-qr-scan__phone-shell{position:relative;padding:7px 5px 9px;border-radius:18px;background:#0a0a0a;box-shadow:0 16px 36px #00000038,0 0 0 1px #ffffff0f inset}.ph-qr-scan__phone-notch{position:absolute;top:9px;left:50%;width:28%;height:4px;border-radius:999px;background:#ffffff1f;transform:translate(-50%)}.ph-qr-scan__phone-screen{position:relative;aspect-ratio:9 / 16;border-radius:12px;overflow:hidden;background:#111}.ph-qr-scan__state{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:14px 10px;text-align:center;opacity:0;pointer-events:none}.ph-qr-scan__state-label,.ph-qr-scan__state-title{margin:0;font-size:9px;font-weight:600;line-height:1.25;letter-spacing:-.01em;color:#fff}.ph-qr-scan__state-sub{margin:4px 0 0;font-size:7px;font-weight:500;line-height:1.35;color:#ffffff94}.ph-qr-scan__camera-view{position:relative;width:78%;aspect-ratio:1 / 1;margin-bottom:10px;border-radius:8px;overflow:hidden;background:linear-gradient(145deg,#2a2a2a,#1a1a1a)}.ph-qr-scan__camera-qr{position:absolute;inset:22%;border-radius:3px;background:linear-gradient(90deg,#fff 50%,transparent 50%) 0 0 / 4px 4px,linear-gradient(#fff 50%,transparent 50%) 0 0 / 4px 4px;background-color:#fff;opacity:.92;mask-image:radial-gradient(circle at center,#000 68%,transparent 70%)}.ph-qr-scan__camera-frame{position:absolute;inset:14%;border:2px solid rgba(243,255,47,.9);border-radius:6px}.ph-qr-scan__camera-line{position:absolute;left:14%;right:14%;top:14%;height:2px;border-radius:999px;background:var(--selection-highlight, #f3ff2f);box-shadow:0 0 8px #f3ff2fbf;opacity:0}.ph-qr-scan__spinner{width:26px;height:26px;margin-bottom:10px;border-radius:50%;border:2px solid rgba(255,255,255,.14);border-top-color:var(--selection-highlight, #f3ff2f);animation:ph-qr-spin .9s linear infinite}.ph-qr-scan__progress{display:flex;gap:4px;margin:10px 0 0;padding:0;list-style:none}.ph-qr-scan__progress li{width:18px;height:3px;border-radius:999px;background:#ffffff24}.ph-qr-scan__progress li:nth-child(1){animation:ph-qr-progress 1.1s ease-in-out infinite}.ph-qr-scan__progress li:nth-child(2){animation:ph-qr-progress 1.1s ease-in-out .2s infinite}.ph-qr-scan__progress li:nth-child(3){animation:ph-qr-progress 1.1s ease-in-out .4s infinite}.ph-qr-scan__granted-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin-bottom:10px;border-radius:50%;background:#f3ff2f2e;border:1px solid rgba(243,255,47,.55);color:var(--selection-highlight, #f3ff2f);transform:scale(.85)}.ph-qr-scan--anim .ph-qr-scan__phone{animation:ph-qr-phone-move var(--ph-qr-cycle) ease-in-out infinite}.ph-qr-scan--anim .ph-qr-scan__scanline{animation:ph-qr-kiosk-scanline var(--ph-qr-cycle) ease-in-out infinite}.ph-qr-scan--kiosk-only.ph-qr-scan--anim .ph-qr-scan__scanline{animation:ph-qr-kiosk-scanline-compact var(--ph-qr-cycle) ease-in-out infinite}.ph-qr-scan--kiosk-only.ph-qr-scan--anim:not(.ph-qr-scan--sync-vflow) .ph-qr-scan__gate-open-status{animation:ph-qr-kiosk-gate-open-standalone var(--ph-qr-cycle, 4.2s) ease-in-out infinite}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit{--ph-qr-cycle: 4.2s}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit .ph-qr-scan__scene{width:clamp(228px,60%,300px);transform:scale(.88);transform-origin:center center}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit .ph-qr-scan__kiosk-top{gap:7px;padding:clamp(9px,1.1vw,11px) clamp(14px,1.5vw,16px);border-radius:12px 12px 0 0;font-size:clamp(11px,1.2vw,13px)}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit .ph-qr-scan__kiosk-verified{margin:0 0 8px;padding:clamp(6px,.8vw,8px) clamp(10px,1.1vw,12px) clamp(6px,.8vw,8px) clamp(12px,1.3vw,14px);font-size:clamp(12px,1.25vw,15px)}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit .ph-qr-scan__kiosk-verified-check{width:clamp(15px,1.5vw,17px);height:clamp(15px,1.5vw,17px)}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit .ph-qr-scan__kiosk-body{padding:clamp(14px,1.6vw,18px) clamp(14px,1.6vw,18px) clamp(15px,1.7vw,18px);border-radius:0 0 12px 12px}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit .ph-qr-scan__kiosk-hint{margin:8px 0 0;font-size:clamp(13px,1.35vw,16px)}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit .ph-qr-scan__gate-open-status{gap:8px;margin-top:14px;padding:clamp(9px,1.1vw,11px) clamp(18px,2vw,22px);font-size:clamp(13px,1.35vw,16px)}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit .ph-qr-scan__gate-open-status svg{width:18px;height:18px}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit.ph-qr-scan--anim .ph-qr-scan__scanline{animation:ph-qr-kiosk-scanline-benefit var(--ph-qr-cycle, 4.2s) ease-in-out infinite}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit .ph-qr-scan__scanline{left:2%;right:2%;height:7px;background:linear-gradient(90deg,transparent 0%,rgba(243,255,47,.92) 8%,var(--selection-highlight, #f3ff2f) 50%,rgba(243,255,47,.92) 92%,transparent 100%);box-shadow:0 0 8px #f3ff2f,0 0 18px #f3ff2ff2,0 0 36px #f3ff2fa6,0 0 56px #f3ff2f59}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit .ph-qr-scan__qr-frame{inset:5%;border:3px solid var(--selection-highlight, #f3ff2f);box-shadow:0 0 12px #f3ff2fd9,0 0 24px #f3ff2f73}.ph-qr-scan--kiosk-only.ph-qr-scan--benefit.ph-qr-scan--anim .ph-qr-scan__qr-frame{animation:ph-qr-kiosk-frame-benefit var(--ph-qr-cycle, 4.2s) ease-in-out infinite}.ph-qr-scan--kiosk-only{position:relative;inset:auto;padding:0;background:transparent;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.ph-qr-scan--kiosk-only .ph-qr-scan__scene{display:flex;flex-direction:column;align-items:center;width:148px;aspect-ratio:auto}.ph-qr-scan--kiosk-only .ph-qr-scan__kiosk{position:relative;left:auto;bottom:auto;width:100%}.ph-qr-scan--kiosk-only .ph-qr-scan__kiosk-top{gap:5px;padding:6px 9px;border-radius:9px 9px 0 0;font-size:8px}.ph-qr-scan--kiosk-only .ph-qr-scan__kiosk-body{display:flex;flex-direction:column;align-items:center;padding:10px 10px 11px;border-radius:0 0 10px 10px;box-shadow:0 6px 16px #00000012}.ph-qr-scan--kiosk-only .ph-qr-scan__kiosk-verified{display:inline-flex;align-items:center;gap:6px;margin:0 0 6px;padding:5px 8px 5px 10px;border-radius:999px;background:#9eddb852;border:1px solid rgba(158,221,184,.45);font-size:10px;font-weight:600;line-height:1.2;letter-spacing:-.01em;color:#24523aeb;white-space:nowrap}.ph-qr-scan--kiosk-only .ph-qr-scan__kiosk-verified-check{flex-shrink:0;display:block;color:#24523aeb}.ph-qr-scan--kiosk-only .ph-qr-scan__kiosk-hint{margin:6px 0 0;font-size:10px;font-weight:600;line-height:1.25;letter-spacing:-.01em;text-align:center;color:#000000ad}.ph-qr-scan--kiosk-only .ph-qr-scan__gate-open-status{display:inline-flex;align-items:center;justify-content:center;gap:6px;margin-top:10px;padding:7px 16px;border-radius:999px;background:#fff;border:1px solid rgba(61,138,98,.22);box-shadow:0 4px 14px #3d8a621f;font-size:12px;font-weight:600;line-height:1;letter-spacing:-.01em;color:#000000d1;opacity:0;transform:translateY(6px);white-space:nowrap}.ph-qr-scan--kiosk-only .ph-qr-scan__gate-open-status svg{flex-shrink:0;color:#2d7a52}.ph-qr-scan--kiosk-only.ph-qr-scan--sync-vflow .ph-qr-scan__qr-frame{inset:6%;border:2.5px solid rgba(243,255,47,.95);box-shadow:0 0 10px #f3ff2f8c}.ph-qr-scan--kiosk-only.ph-qr-scan--sync-vflow .ph-qr-scan__scanline{left:3%;right:3%;height:4px;background:linear-gradient(90deg,transparent 0%,rgba(243,255,47,.85) 12%,var(--selection-highlight, #f3ff2f) 50%,rgba(243,255,47,.85) 88%,transparent 100%);box-shadow:0 0 6px #f3ff2f,0 0 16px #f3ff2fd9,0 0 28px #f3ff2f73}.ph-qr-scan--kiosk-only .ph-qr-scan__qr-wrap{width:76%}.ph-qr-scan--kiosk-only.ph-qr-scan--sync-vflow.ph-qr-scan--mobile-card.ph-qr-scan--anim .ph-qr-scan__scanline{animation:ph-qr-kiosk-scanline-mobile var(--ph-qr-cycle, 4.2s) ease-in-out forwards}.ph-qr-scan--kiosk-only.ph-qr-scan--sync-vflow.ph-qr-scan--mobile-card.ph-qr-scan--anim .ph-qr-scan__qr-frame{animation:ph-qr-kiosk-frame-mobile var(--ph-qr-cycle, 4.2s) ease-in-out forwards}.ph-qr-scan--kiosk-only.ph-qr-scan--sync-vflow.ph-qr-scan--mobile-card.ph-qr-scan--anim .ph-qr-scan__gate-open-status{animation:ph-qr-kiosk-gate-open-mobile var(--ph-qr-cycle, 4.2s) ease-in-out forwards}.ph-qr-scan--kiosk-only.ph-qr-scan--sync-vflow.ph-qr-scan--anim .ph-qr-scan__scanline{animation:ph-qr-kiosk-scanline-vflow var(--ph-qr-cycle) ease-in-out infinite}.ph-qr-scan--kiosk-only.ph-qr-scan--sync-vflow.ph-qr-scan--anim .ph-qr-scan__qr-frame{animation:ph-qr-kiosk-frame-vflow var(--ph-qr-cycle) ease-in-out infinite}.ph-qr-scan--kiosk-only.ph-qr-scan--sync-vflow.ph-qr-scan--anim .ph-qr-scan__gate-open-status{animation:ph-qr-kiosk-gate-open-vflow var(--ph-qr-cycle) ease-in-out infinite}.ph-qr-scan--anim .ph-qr-scan__qr-frame{animation:ph-qr-kiosk-frame var(--ph-qr-cycle) ease-in-out infinite}.ph-qr-scan--anim .ph-qr-scan__camera-line{animation:ph-qr-camera-line var(--ph-qr-cycle) ease-in-out infinite}.ph-qr-scan--anim .ph-qr-scan__state--scan{animation:ph-qr-state-scan var(--ph-qr-cycle) ease-in-out infinite}.ph-qr-scan--anim .ph-qr-scan__state--processing{animation:ph-qr-state-processing var(--ph-qr-cycle) ease-in-out infinite}.ph-qr-scan--anim .ph-qr-scan__state--granted{animation:ph-qr-state-granted var(--ph-qr-cycle) ease-in-out infinite}.ph-qr-scan--anim .ph-qr-scan__granted-icon{animation:ph-qr-granted-pop var(--ph-qr-cycle) ease-in-out infinite}@keyframes ph-qr-phone-move{0%,8%{transform:rotate(8deg) translate(12px,18px) scale(.94)}18%,38%{transform:rotate(4deg) translate(0) scale(1)}48%,to{transform:rotate(2deg) translate(-2px,4px) scale(.98)}}@keyframes ph-qr-kiosk-scanline{0%,14%{opacity:0;transform:translateY(0)}18%{opacity:1}36%{opacity:1;transform:translateY(140px)}40%,to{opacity:0;transform:translateY(140px)}}@keyframes ph-qr-kiosk-scanline-compact{0%,14%{opacity:0;transform:translateY(0)}18%{opacity:1}36%{opacity:1;transform:translateY(64px)}40%,to{opacity:0;transform:translateY(64px)}}@keyframes ph-qr-kiosk-scanline-mobile{0%,8%{opacity:0;transform:translateY(0)}10%{opacity:1}42%{opacity:1;transform:translateY(64px)}48%,to{opacity:0;transform:translateY(64px)}}@keyframes ph-qr-kiosk-frame-mobile{0%,8%{opacity:0;transform:scale(.96)}12%,44%{opacity:1;transform:scale(1)}50%,to{opacity:0;transform:scale(1.02)}}@keyframes ph-qr-kiosk-gate-open-mobile{0%,46%{opacity:0;transform:translateY(8px)}54%{opacity:1;transform:translateY(0)}88%,to{opacity:1;transform:translateY(0)}}@keyframes ph-qr-kiosk-gate-open-standalone{0%,46%{opacity:0;transform:translateY(6px)}54%,88%{opacity:1;transform:translateY(0)}92%,to{opacity:0;transform:translateY(6px)}}@keyframes ph-qr-kiosk-scanline-benefit{0%,12%{opacity:0;transform:translateY(0)}16%{opacity:1}38%{opacity:1;transform:translateY(104px)}42%,to{opacity:0;transform:translateY(104px)}}@keyframes ph-qr-kiosk-frame-benefit{0%,12%{opacity:0;transform:scale(.96)}16%,40%{opacity:1;transform:scale(1)}44%,to{opacity:0;transform:scale(1.02)}}@keyframes ph-qr-kiosk-scanline-vflow{0%,71%{opacity:0;transform:translateY(0)}72%{opacity:1}81%{opacity:1;transform:translateY(64px)}82%,to{opacity:0;transform:translateY(64px)}}@keyframes ph-qr-kiosk-gate-open-vflow{0%,82%{opacity:0;transform:translateY(8px)}83%{opacity:0;transform:translateY(8px)}87%{opacity:1;transform:translateY(0)}91%{opacity:1;transform:translateY(0)}93%,to{opacity:0;transform:translateY(0)}}@keyframes ph-qr-kiosk-frame{0%,16%{opacity:0;transform:scale(.96)}20%,38%{opacity:1;transform:scale(1)}42%,to{opacity:0;transform:scale(1.02)}}@keyframes ph-qr-kiosk-frame-vflow{0%,71%{opacity:0;transform:scale(.96)}73%,81%{opacity:1;transform:scale(1)}82%,to{opacity:0;transform:scale(1.02)}}@keyframes ph-qr-camera-line{0%,14%{opacity:0;transform:translateY(0)}18%{opacity:1}36%{opacity:1;transform:translateY(52px)}40%,to{opacity:0;transform:translateY(52px)}}@keyframes ph-qr-state-scan{0%,8%{opacity:0}12%,40%{opacity:1}46%,to{opacity:0}}@keyframes ph-qr-state-processing{0%,40%{opacity:0}46%,68%{opacity:1}74%,to{opacity:0}}@keyframes ph-qr-state-granted{0%,68%{opacity:0}74%,92%{opacity:1}98%,to{opacity:0}}@keyframes ph-qr-granted-pop{0%,72%{transform:scale(.7)}78%,90%{transform:scale(1)}98%,to{transform:scale(.85)}}@keyframes ph-qr-spin{to{transform:rotate(360deg)}}@keyframes ph-qr-progress{0%,to{background:#ffffff24}50%{background:var(--selection-highlight, #f3ff2f)}}@media(max-width:960px){.ph-qr-scan__scene{width:min(100%,280px)}}@media(prefers-reduced-motion:reduce){.ph-qr-scan--anim .ph-qr-scan__phone,.ph-qr-scan--anim .ph-qr-scan__scanline,.ph-qr-scan--anim .ph-qr-scan__qr-frame,.ph-qr-scan--anim .ph-qr-scan__camera-line,.ph-qr-scan--anim .ph-qr-scan__state--scan,.ph-qr-scan--anim .ph-qr-scan__state--processing,.ph-qr-scan--anim .ph-qr-scan__state--granted,.ph-qr-scan--anim .ph-qr-scan__granted-icon,.ph-qr-scan--anim .ph-qr-scan__gate-open-status{animation:none}.ph-qr-scan--kiosk-only .ph-qr-scan__gate-open-status{opacity:1;transform:none}.ph-qr-scan__phone{transform:rotate(4deg)}.ph-qr-scan__state--granted{opacity:1}.ph-qr-scan__granted-icon{transform:scale(1)}.ph-qr-scan__spinner{animation:none;border-top-color:#ffffff59}.ph-qr-scan__progress li{animation:none}}
