body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.App{background-color:#28342c;min-height:100vh;overflow:hidden;position:relative;text-align:center}.bubbles{inset:0;pointer-events:none;z-index:2}.bubble,.bubbles{position:absolute}.bubble{animation:float linear infinite,wobble ease-in-out infinite,shimmer ease-in-out infinite;animation-fill-mode:backwards,none,none;backdrop-filter:blur(16px) saturate(1.5);-webkit-backdrop-filter:blur(16px) saturate(1.5);background:radial-gradient(circle at 25% 25%,#fff6 0,#fff0 50%),radial-gradient(circle at 75% 75%,#ffffff26 0,#fff0 40%),radial-gradient(ellipse at 50% 50%,#ffffff05 0,#ffffff0d 100%);border:1px solid #ffffff2e;border-radius:50%;bottom:0;box-shadow:inset 0 -4px 8px #ffffff14,inset 0 4px 12px #ffffff1a,0 0 6px #ffffff0f}.bubble:first-child{animation-delay:0s;animation-duration:12s,3s,2.2s;height:80px;left:5%;width:80px}.bubble:nth-child(2){animation-delay:1s;animation-duration:10s,2.5s,1.8s;height:50px;left:15%;width:50px}.bubble:nth-child(3){animation-delay:2s;animation-duration:14s,4s,2.6s;height:120px;left:25%;width:120px}.bubble:nth-child(4){animation-delay:.5s;animation-duration:9s,2.2s,1.5s;height:40px;left:35%;width:40px}.bubble:nth-child(5){animation-delay:3s;animation-duration:13s,3.5s,2.4s;height:90px;left:45%;width:90px}.bubble:nth-child(6){animation-delay:1.5s;animation-duration:11s,2.8s,2s;height:60px;left:55%;width:60px}.bubble:nth-child(7){animation-delay:0s;animation-duration:15s,3.8s,2.8s;height:100px;left:65%;width:100px}.bubble:nth-child(8){animation-delay:2.5s;animation-duration:8s,2s,1.6s;height:45px;left:75%;width:45px}.bubble:nth-child(9){animation-delay:1s;animation-duration:12s,3.2s,2.1s;height:70px;left:85%;width:70px}.bubble:nth-child(10){animation-delay:3.5s;animation-duration:10s,2.6s,1.9s;height:55px;left:92%;width:55px}@keyframes wobble{0%,to{margin-left:0}25%{margin-left:-15px}75%{margin-left:15px}}@keyframes shimmer{0%,to{border-color:#96c8ff66;box-shadow:inset 0 -6px 12px #64b4ff4d,inset 0 6px 16px #ff96ff40,0 0 10px #96c8ff26}25%{border-color:#ffb4ff73;box-shadow:inset 0 -6px 14px #ff96dc59,inset 0 6px 16px #64ffc84d,0 0 14px #ffb4ff33}50%{border-color:#96ffc873;box-shadow:inset 0 -6px 14px #64ffb459,inset 0 6px 16px #ffc86440,0 0 14px #96ffc833}75%{border-color:#ffdc9666;box-shadow:inset 0 -6px 14px #ffc8644d,inset 0 6px 16px #64b4ff4d,0 0 14px #ffdc9633}}@keyframes float{0%{opacity:0;transform:translateY(0) scale(.8)}10%{opacity:.6}90%{opacity:.6}to{opacity:0;transform:translateY(-120vh) scale(1.1)}}.App-header{align-items:center;color:#fff;display:flex;flex-direction:column;justify-content:center;position:relative;z-index:1}.App-header h1{font-size:4rem;margin:0}.App-subheader{color:#aaa;font-size:1.2rem;margin-top:.5rem}.App-buttons{display:flex;gap:1rem;justify-content:center;padding:2rem}.App-button{background-color:#4a7c59;border-radius:6px;color:#fff;display:inline-block;font-size:1rem;padding:.75rem 1.5rem;text-decoration:none;transition:background-color .2s}.App-button:hover{background-color:#5a9c6a}.QrScannerCard{background:#ffffff1a;border:1px solid #fff3;border-radius:12px;margin-top:1rem;padding:.85rem;width:min(92vw,360px)}.QrReader{border-radius:10px;min-height:280px;overflow:hidden;width:100%}.QrReaderWrap{position:relative}.QrTarget{border:1px solid #ffffff42;border-radius:12px;box-shadow:0 0 0 9999px #0000001f;height:min(72vw,280px);left:50%;overflow:hidden;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);width:min(72vw,280px)}.QrCorner{border:0 solid #95ffc5;height:24px;position:absolute;width:24px}.QrCornerTL{border-left-width:4px;border-top-left-radius:8px;border-top-width:4px;left:0;top:0}.QrCornerTR{border-right-width:4px;border-top-right-radius:8px;border-top-width:4px;right:0;top:0}.QrCornerBL{border-bottom-left-radius:8px;border-bottom-width:4px;border-left-width:4px;bottom:0;left:0}.QrCornerBR{border-bottom-right-radius:8px;border-bottom-width:4px;border-right-width:4px;bottom:0;right:0}.QrSweepLine{animation:qr-sweep 2.2s ease-in-out infinite;background:linear-gradient(90deg,#95ffc51a,#95ffc5,#95ffc51a);border-radius:999px;height:2px;left:8%;position:absolute;width:84%}@keyframes qr-sweep{0%{opacity:.35;top:10%}50%{opacity:1;top:50%}to{opacity:.35;top:90%}}.QrStatus{color:#d5e8d8;font-size:.92rem;margin:.8rem 0 0}.QrHint{color:#c6d8c9;font-size:.85rem;margin:.35rem 0 0}.QrDetected{color:#95ffc5;font-size:.85rem;font-weight:600;margin:.5rem 0 0}.TorchButton{background:#95ffc526;border:1px solid #95ffc58c;border-radius:10px;color:#eafff2;cursor:pointer;font-size:.88rem;margin-top:.55rem;padding:.45rem .8rem}.TorchButton:disabled{cursor:not-allowed;opacity:.65}.TorchNote{color:#d6dfd8;font-size:.8rem;margin:.5rem 0 0}.QrResult{background:#0003;border:1px solid #ffffff26;border-radius:12px;margin-top:1rem;padding:.95rem 1rem;text-align:left;width:min(92vw,360px)}.QrResult h2{font-size:1rem;margin:0}.QrResult p{color:#f4fff4;font-size:.95rem;line-height:1.35;margin:.6rem 0 0;word-break:break-word}.AssignPage .App-header{min-height:100vh;padding:1rem}.AssignPage .QrScannerCardFull{background:#000;border:1px solid #ffffff2e;border-radius:14px;display:flex;flex-direction:column;height:min(90vh,780px);margin:0;overflow:hidden;padding:0;position:relative;width:min(96vw,560px)}.AssignPage .QrReaderWrapFull{flex:0 0 50%;overflow:hidden;width:100%}.AssignPage .QrReader{height:100%;min-height:100%}.AssignPage #qr-reader__scan_region,.AssignPage .QrReader canvas,.AssignPage .QrReader video{height:100%!important;width:100%!important}.AssignPage .QrReader canvas,.AssignPage .QrReader video{object-fit:cover}.AssignPage .QrOverlayBottom{align-items:stretch;background:#000000d9;display:flex;flex:1 1;position:static}.ScannerBottomBar{align-items:center;display:flex;flex-direction:column;gap:.5rem;justify-content:center;padding:1rem;width:100%}.ScannerTitle{color:#fff;font-size:clamp(1.4rem,5vw,2rem);margin:0}.ScannerError{color:#f88;font-size:.82rem;margin:0;text-align:center}.ScannerRead{color:#95ffc5;font-size:.78rem;margin:0;text-align:center;word-break:break-all}.ManualUrlRow{align-items:center;display:flex;gap:.4rem;max-width:340px;width:100%}.ManualUrlInput{background:#ffffff1a;border:1px solid #ffffff40;border-radius:6px;color:#fff;flex:1 1;font-size:.82rem;min-width:0;padding:.4rem .6rem}.ManualUrlInput::placeholder{color:#fff6}.ManualUrlGo{background:#4a7c59;border:none;border-radius:6px;color:#fff;cursor:pointer;flex:0 0 auto;font-size:.82rem;padding:.4rem .7rem}.ManualUrlGo:disabled{cursor:not-allowed;opacity:.5}.ManualUrlGo:hover:not(:disabled){background:#5a9c6a}@media (max-width:768px){.AssignPage{overflow:hidden}.AssignPage .App-header{min-height:100dvh;padding:0;width:100%}.AssignPage .QrScannerCardFull{border:0;border-radius:0;height:100dvh;width:100vw}.AssignPage .QrReaderWrapFull{flex:0 0 50%}}.PairPage .App-header{min-height:100vh;padding:1.5rem 1rem;position:relative}.PairPage .App-header>h1{left:0;margin:0;position:absolute;right:0;text-align:center;top:1.5rem}.PairLockIdHint{color:#ffffff59;font-size:.78rem;letter-spacing:.04em;margin:0}.PairCancelRow{display:flex;justify-content:center;margin-top:auto;padding:.75rem 0 .25rem}.PairCancelRow .App-button{background:#0000;border:1.5px solid #3a4a3a;box-shadow:none;color:#b7c7b7;font-size:.98rem;opacity:.7;padding:.5rem 1.2rem;transition:background .2s,color .2s,border .2s,opacity .2s}.PairCancelRow .App-button:hover{background:#50785014;border-color:#5a9c6a;color:#fff;opacity:1}.PairCard{display:flex;flex-direction:column;min-height:340px}.PairCardHeader{padding:1rem 1rem .25rem;text-align:center}.PairCardVisualId{color:#fff;font-size:4rem;font-weight:700;margin:0}.PairCardTenant{color:#aaa;font-size:.95rem;margin:.2rem 0 .75rem}.PairCardDesc{color:#c6d8c9;font-size:.95rem;margin:0 1rem .75rem;text-align:center}.PairActionBox{background:#0000008c;border-radius:10px;flex-direction:column;gap:.5rem;height:220px;justify-content:center;margin:0 .5rem .75rem;overflow:hidden;padding:.85rem 1rem}.PairActionBox,.PairWaiting{align-items:center;display:flex}.PairWaiting{gap:.6rem}.PairWaitingText{color:#95ffc5;font-size:.95rem}.PairSpinner{animation:pair-spin .75s linear infinite;border:2px solid #fff3;border-radius:50%;border-top-color:#95ffc5;display:inline-block;flex-shrink:0;height:18px;width:18px}@keyframes pair-spin{to{transform:rotate(1turn)}}
/*# sourceMappingURL=main.7918cb60.css.map*/