*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:100vw;height:100vh;margin:0;padding:0;font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;overflow:hidden}#root{width:100vw;height:100vh;margin:0;padding:0;overflow:hidden}.popup-overlay{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:1000;background:#000c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.popup-modal{background:#fff;border-radius:20px;width:100%;max-width:450px;max-height:90vh;animation:.3s ease-out popupSlideIn;overflow-y:auto;box-shadow:0 20px 40px #0000004d}@keyframes popupSlideIn{0%{opacity:0;transform:translateY(-30px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}.popup-header{color:#fff;text-align:center;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:20px 20px 0 0;padding:20px}.popup-header h3{margin:0;font-size:20px;font-weight:600}.popup-content{color:#333;padding:25px;line-height:1.6}.popup-content p{margin:0 0 20px;font-size:16px}.permission-section{margin-bottom:20px}.permission-section h4{color:#555;margin:0 0 10px;font-size:16px}.permission-section ul{margin:0;padding-left:20px}.permission-section li{margin-bottom:8px;font-size:14px}.popup-buttons{flex-wrap:wrap;justify-content:center;gap:10px;padding:0 25px 25px;display:flex}.popup-btn{cursor:pointer;border:none;border-radius:25px;flex:1;min-width:120px;padding:12px 20px;font-size:14px;font-weight:600;transition:all .3s}.popup-btn.primary{color:#fff;background:linear-gradient(135deg,#4caf50 0%,#45a049 100%)}.popup-btn.secondary{color:#fff;background:linear-gradient(135deg,#2196f3 0%,#1976d2 100%)}.popup-btn.close{color:#666;background:#f5f5f5;border:1px solid #ddd}.popup-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0003}.mobile-app{color:#fff;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);flex-direction:column;align-items:center;min-height:100vh;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;display:flex}.header{text-align:center;width:100%;margin-bottom:20px}.header h1{margin:0 0 10px;font-size:28px;font-weight:700}.options{flex-direction:column;gap:10px;width:100%;max-width:350px;display:flex}.camera-section,.upload-section,.name-section{text-align:center}.name-input{text-align:center;color:#333;background:#fff;border:2px solid #ddd;border-radius:8px;width:100%;max-width:300px;margin-bottom:8px;padding:12px 16px;font-size:16px}.name-input:focus{border-color:#007bff;outline:none;box-shadow:0 0 0 3px #007bff1a}.name-description{color:#666;margin:0;font-size:14px}.submit-btn{color:#fff;cursor:pointer;background:#007bff;border:none;border-radius:6px;margin-top:8px;padding:10px 20px;font-size:14px;transition:background .2s}.submit-btn:hover:not(:disabled){background:#0056b3}.submit-btn:disabled{cursor:not-allowed;background:#ccc}.name-display{justify-content:center;align-items:center;gap:10px;margin-bottom:8px;display:flex}.name-value{color:#007bff;font-size:18px;font-weight:700}.edit-btn{cursor:pointer;background:#f8f9fa;border:1px solid #ddd;border-radius:4px;padding:4px 8px;font-size:12px}.delete-btn{color:#fff;cursor:pointer;background:#dc3545;border:none;border-radius:4px;margin-left:5px;padding:4px 8px;font-size:12px}.delete-btn:hover:not(:disabled){background:#c82333}.delete-btn:disabled{cursor:not-allowed;background:#ccc}.camera-description,.upload-description{color:#fffc;margin:10px 0 0;font-size:14px;line-height:1.4}.divider{text-align:center;margin:10px 0;position:relative}.divider:before{content:"";background:#ffffff4d;height:1px;position:absolute;top:50%;left:0;right:0}.divider span{color:#ffffffe6;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);padding:0 20px;font-size:14px;font-weight:600}.start-btn,.upload-btn{cursor:pointer;border:none;border-radius:25px;width:100%;padding:18px 24px;font-size:18px;font-weight:600;transition:all .3s;box-shadow:0 4px 15px #0003}.start-btn{color:#fff;background:linear-gradient(135deg,#4caf50 0%,#45a049 100%)}.upload-btn{color:#fff;background:linear-gradient(135deg,#2196f3 0%,#1976d2 100%)}.start-btn:hover,.upload-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0000004d}.start-btn:active,.upload-btn:active{transform:translateY(0)}.upload-btn:disabled{cursor:not-allowed;background:#666;transform:none}.error{color:#fff;text-align:left;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);white-space:pre-line;background:#dc3545f2;border:2px solid #dc35454d;border-radius:15px;max-width:400px;margin:15px 0;padding:20px;font-size:14px;line-height:1.6;box-shadow:0 8px 25px #0000004d}.success{color:#fff;text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#28a745e6;border:1px solid #28a7454d;border-radius:12px;margin:15px 0;padding:15px;animation:.5s ease-in fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.camera-container{flex-direction:column;align-items:center;width:100%;max-width:400px;display:flex}.controls{flex-wrap:wrap;justify-content:center;gap:15px;margin-top:20px;display:flex}.capture-btn,.stop-btn{cursor:pointer;border:none;border-radius:25px;padding:15px 25px;font-size:16px;font-weight:600;transition:all .3s;box-shadow:0 4px 15px #0003}.capture-btn{color:#fff;background:linear-gradient(135deg,#ff9800 0%,#f57c00 100%)}.stop-btn{color:#fff;background:linear-gradient(135deg,#f44336 0%,#d32f2f 100%)}.capture-btn:hover,.stop-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0000004d}.capture-btn:disabled{cursor:not-allowed;background:#666;transform:none}video{object-fit:cover;background:#000;border:3px solid #ffffff4d;border-radius:15px;width:100%;max-width:400px;min-height:300px;margin-bottom:20px;box-shadow:0 8px 25px #0000004d}.kiosk-container{color:#fff;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%) 50%/contain no-repeat fixed;width:100vw;height:100vh;transition:background .5s;position:relative;overflow:hidden}.pm-overlay{pointer-events:none;z-index:10;object-fit:contain;background-position:50%;background-repeat:no-repeat;background-size:contain;width:100%;height:100%;transition:opacity .5s;position:absolute;top:0;left:0}.popup-animation{animation:.3s ease-out forwards popupShow;border:none!important}.full-screen-name{color:#fff;text-align:center;z-index:1000;box-sizing:border-box;word-break:break-word;text-shadow:3px 3px 6px #000000e6;pointer-events:none;justify-content:center;align-items:center;width:100vw;height:100vh;padding:2rem;font-size:clamp(2rem,15vw,20rem);font-weight:700;line-height:1.2;animation:.5s ease-out nameShow;display:flex;position:fixed;top:0;left:0}@keyframes nameShow{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes nameGridShow{0%{opacity:0;transform:scale(.5)rotate(180deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes pixelShow{0%{opacity:0;backgroundColor:transparent;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes shine{0%{transform:translate(-100%)translateY(-100%)rotate(45deg)}to{transform:translate(100%)translateY(100%)rotate(45deg)}}.pixel-cell:after{content:"";pointer-events:none;background:linear-gradient(45deg,#0000 30%,#fff6 50%,#0000 70%);width:200%;height:200%;animation:2s infinite shine;position:absolute;top:-50%;left:-50%}@keyframes popupShow{0%{opacity:0;transform:translate(-50%,-50%)scale(.3)}20%{opacity:1;transform:translate(-50%,-50%)scale(1.1)}80%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.kiosk-container.disconnected:before,.kiosk-container.connectionerror:before{display:none}@keyframes backgroundShift{0%,to{opacity:1}50%{opacity:.6}}.watermark{color:#ffffff1a;text-shadow:0 1px #ffffff1a,0 2px #ffffff14,0 3px #ffffff0f,0 4px #ffffff0a,0 5px #ffffff05;pointer-events:none;z-index:0;-webkit-user-select:none;user-select:none;white-space:nowrap;font-size:clamp(2rem,8vw,100px);font-weight:700;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.kiosk-container.disconnected .watermark,.kiosk-container.connectionerror .watermark,.status{display:none}.photo-wall{z-index:1;width:100%;height:100%;position:relative}.mosaic-photo{object-fit:fill;object-position:center;border:1px solid #ffffffe6;border-radius:5px;transition:transform .3s;display:block;position:absolute;box-shadow:0 8px 32px #0000004d,0 0 0 1px #ffffff1a}.mosaic-photo:hover{z-index:10;transform:scale(1.05)}.fade{animation:.8s ease-out fade}.slideFromLeft{animation:.6s ease-out slideFromLeft}.slideFromRight{animation:.6s ease-out slideFromRight}.slideFromTop{animation:.6s ease-out slideFromTop}.slideFromBottom{animation:.6s ease-out slideFromBottom}.zoom{animation:.6s ease-out zoom}.swipe{animation:.7s ease-out swipe}.flip{animation:.8s ease-out flip}.rotate{animation:.9s ease-out rotate}.cubeRotate{animation:1s ease-out cubeRotate}.coverflow{animation:.8s ease-out coverflow}.cornerSwap{animation:.7s ease-out cornerSwap}.pump{animation:.8s ease-out pump}.bounce{animation:.8s ease-out bounce}.fold{animation:.6s ease-out fold}.unfold{animation:.7s ease-out unfold}.scaleIn{animation:.6s ease-out scaleIn}.scaleOut{animation:.5s ease-out scaleOut}.push{animation:.8s ease-out push}.pull{animation:.7s ease-out pull}.reveal{animation:.9s ease-out reveal}.overlay{animation:.8s ease-out overlay}.stack{animation:.6s ease-out stack}.skew{animation:.7s ease-out skew}.parallaxSlide{animation:.8s ease-out parallaxSlide}.curtain{animation:.6s ease-out curtain}.roll{animation:1s ease-out roll}.morph{animation:.8s ease-out morph}.wipe{animation:.7s ease-out wipe}.shutter{animation:.6s ease-out shutter}.blinds{animation:.8s ease-out blinds}.glitch{animation:.5s ease-out glitch}.crossfade{animation:1s ease-out crossfade}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes swipe{0%{transform:translate(-50%)scale(.8)}to{transform:translate(0)scale(1)}}@keyframes rotate{0%{transform:rotate(180deg)scale(0)}to{transform:rotate(0)scale(1)}}@keyframes cubeRotate{0%{transform:rotateX(90deg)rotateY(90deg)}to{transform:rotateX(0)rotateY(0)}}@keyframes coverflow{0%{transform:rotateY(45deg)translateZ(-100px)}to{transform:rotateY(0)translateZ(0)}}@keyframes cornerSwap{0%{transform:rotate(45deg)translate(-50%,-50%)}to{transform:rotate(0)translate(0)}}@keyframes fold{0%{transform:rotateX(-90deg)}to{transform:rotateX(0)}}@keyframes unfold{0%{transform:scaleY(0)rotateX(90deg)}to{transform:scaleY(1)rotateX(0)}}@keyframes scaleIn{0%{transform:scale(0)rotate(180deg)}to{transform:scale(1)rotate(0)}}@keyframes scaleOut{0%{transform:scale(1.5)}to{transform:scale(1)}}@keyframes push{0%{transform:translateZ(-200px)scale(.8)}to{transform:translateZ(0)scale(1)}}@keyframes pull{0%{transform:translateZ(200px)scale(1.2)}to{transform:translateZ(0)scale(1)}}@keyframes reveal{0%{clip-path:circle(0%)}to{clip-path:circle(100%)}}@keyframes overlay{0%{transform:translateY(-100%)rotateX(90deg)}to{transform:translateY(0)rotateX(0)}}@keyframes stack{0%{transform:translateY(100px)rotate(10deg)}to{transform:translateY(0)rotate(0)}}@keyframes skew{0%{transform:skew(45deg)skewY(10deg)}to{transform:skew(0)skewY(0)}}@keyframes parallaxSlide{0%{transform:translate(-100%)translateY(-50px)}to{transform:translate(0)translateY(0)}}@keyframes curtain{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes roll{0%{transform:rotate(360deg)translate(-100%)}to{transform:rotate(0)translate(0)}}@keyframes morph{0%{border-radius:50%;transform:scale(0)}to{border-radius:15px;transform:scale(1)}}@keyframes wipe{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes shutter{0%{clip-path:inset(50% 0)}to{clip-path:inset(0)}}@keyframes blinds{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0)}}@keyframes glitch{0%{transform:translate(0)}20%{transform:translate(-2px,2px)}40%{transform:translate(-2px,-2px)}60%{transform:translate(2px,2px)}80%{transform:translate(2px,-2px)}to{transform:translate(0)}}@keyframes crossfade{0%{opacity:0;filter:blur(5px)}to{opacity:1;filter:blur()}}@keyframes slideFromLeft{0%{opacity:0;transform:translate(-100vw)rotate(-180deg)}to{opacity:1;transform:translate(0)rotate(0)}}@keyframes slideFromRight{0%{opacity:0;transform:translate(100vw)rotate(180deg)}to{opacity:1;transform:translate(0)rotate(0)}}@keyframes slideFromTop{0%{opacity:0;transform:translateY(-100vh)rotate(-90deg)}to{opacity:1;transform:translateY(0)rotate(0)}}@keyframes slideFromBottom{0%{opacity:0;transform:translateY(100vh)rotate(90deg)}to{opacity:1;transform:translateY(0)rotate(0)}}@keyframes pump{0%{opacity:0;transform:scale(0)rotate(0)}50%{opacity:.8;transform:scale(1.3)rotate(180deg)}to{opacity:1;transform:scale(1)rotate(360deg)}}@keyframes bounce{0%{opacity:0;transform:translateY(-100vh)scale(.3)}60%{opacity:1;transform:translateY(0)scale(1.1)}80%{transform:translateY(-20px)scale(.95)}to{transform:translateY(0)scale(1)}}@keyframes flip{0%{opacity:0;transform:perspective(400px)rotateY(-180deg)scale(.5)}50%{opacity:.5;transform:perspective(400px)rotateY(-90deg)scale(.8)}to{opacity:1;transform:perspective(400px)rotateY(0)scale(1)}}@keyframes zoom{0%{opacity:0;filter:blur(10px);transform:scale(0)rotate(-360deg)}50%{opacity:.7;filter:blur(2px);transform:scale(1.2)rotate(-180deg)}to{opacity:1;filter:blur();transform:scale(1)rotate(0)}}.grid-overlay{z-index:0;pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.grid-cell{color:#000000b3;background:0 0;border:1px solid #00000080;justify-content:center;align-items:center;font-size:28px;font-weight:700;display:flex;position:absolute}
