*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,sans-serif;background:linear-gradient(135deg,#667eea,#764ba2);min-height:100vh;color:#333}.app{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;background:url(/alley.jpg) center/cover no-repeat;transition:background .5s ease-in-out}.app.in-room{background:url(/club.jpg) center/cover no-repeat;animation:throb .46875s ease-in-out infinite}@keyframes throb{0%{background-size:100%}50%{background-size:102%}to{background-size:100%}}.app-header{text-align:center;margin-bottom:40px;color:#fff;background:#0009;padding:20px 30px;border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.app-header h1{font-size:3rem;margin-bottom:10px;text-shadow:2px 2px 4px rgba(0,0,0,.5)}.app-header p{font-size:1.2rem;opacity:.95}.app-main{background:#fff;border-radius:16px;padding:40px;box-shadow:0 20px 40px #0000001a;min-width:400px;max-width:600px;width:100%}.camera-container{display:flex;justify-content:center;margin-bottom:24px}.camera-wrapper{position:relative;width:100%;border-radius:12px;overflow:hidden;border:3px solid #22c55e;box-shadow:0 4px 16px #0003}.camera-feed{display:block;width:100%;border-radius:9px;transform:scaleX(-1)}.disco-overlay{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:9px;pointer-events:none;background:repeating-conic-gradient(from 0deg,rgba(255,255,255,.08) 0deg 10deg,transparent 10deg 20deg),repeating-linear-gradient(45deg,transparent,transparent 8px,rgba(255,255,255,.04) 8px,rgba(255,255,255,.04) 9px),repeating-linear-gradient(-45deg,transparent,transparent 8px,rgba(255,255,255,.04) 8px,rgba(255,255,255,.04) 9px);animation:disco-spin 1875ms linear infinite,disco-flash .46875s ease-out infinite}.disco-overlay:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:9px;background:conic-gradient(from 0deg at 30% 40%,transparent 0deg,rgba(255,80,200,.25) 20deg,rgba(80,200,255,.25) 40deg,rgba(255,220,80,.2) 60deg,transparent 80deg,transparent 360deg);animation:disco-sweep 1875ms linear infinite}.disco-overlay:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:9px;background:radial-gradient(ellipse at 50% 50%,rgba(255,255,255,.25) 0%,transparent 70%);animation:disco-pulse .46875s ease-out infinite}@keyframes disco-spin{0%{background-position:0 0,0 0,0 0}to{background-position:200px 200px,0 0,0 0}}@keyframes disco-flash{0%{opacity:1}20%{opacity:.6}to{opacity:1}}@keyframes disco-sweep{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes disco-pulse{0%{opacity:1}15%{opacity:0}to{opacity:0}}.camera-error{color:#991b1b;font-size:.9rem;text-align:center}.room-status{text-align:center;margin-bottom:30px;padding:20px;border-radius:12px;border:2px solid}.room-status.available{background:#f0fdf4;border-color:#22c55e;color:#166534}.room-status.occupied{background:#fef2f2;border-color:#ef4444;color:#991b1b}.room-status.connecting,.room-status.loading{background:#fef3c7;border-color:#f59e0b;color:#92400e}.room-status h2{font-size:1.5rem;margin-bottom:10px}.room-status p{margin:5px 0}.timestamp{font-size:.9rem;opacity:.7}.join-section{margin-bottom:30px}.join-form{display:flex;gap:10px;margin-bottom:15px}.user-input{flex:1;padding:12px 16px;border:2px solid #e5e7eb;border-radius:8px;font-size:1rem;transition:border-color .2s}.user-input:focus{outline:none;border-color:#3b82f6}.join-button{padding:12px 24px;background:#3b82f6;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;min-width:140px}.join-button:hover:not(:disabled){background:#2563eb;transform:translateY(-1px)}.join-button:disabled{background:#9ca3af;cursor:not-allowed;transform:none}.join-button.joining{background:#f59e0b}.success-message{text-align:center;padding:20px;background:#f0fdf4;border:2px solid #22c55e;border-radius:12px;color:#166534}.success-message h3{margin-bottom:10px;font-size:1.3rem}.heartbeat-info{font-size:.9rem;opacity:.8;margin-top:10px;margin-bottom:15px}.disconnect-button{padding:10px 20px;background:#ef4444;color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s}.disconnect-button:hover{background:#dc2626;transform:translateY(-1px)}.room-occupied-message{text-align:center;padding:20px;background:#fef2f2;border:2px solid #ef4444;border-radius:12px;color:#991b1b}.error-message{text-align:center;padding:15px;background:#fef2f2;border:1px solid #ef4444;border-radius:8px;color:#991b1b}.connection-status{text-align:center;padding:10px}.status-indicator{font-size:.9rem;font-weight:600;padding:6px 12px;border-radius:20px;display:inline-block}.status-indicator.connecting{background:#fef3c7;color:#92400e}.status-indicator.connected{background:#dcfce7;color:#166534}.status-indicator.disconnected{background:#fee2e2;color:#991b1b}.status-indicator.error{background:#fef2f2;color:#991b1b}.leaderboard{margin-top:30px;padding-top:30px;border-top:2px solid #e5e7eb}.leaderboard h2{font-size:1.5rem;margin-bottom:20px;text-align:center;color:#333}.leaderboard table{width:100%;border-collapse:collapse}.leaderboard thead{background:#f9fafb}.leaderboard th{padding:12px;text-align:left;font-weight:600;color:#6b7280;font-size:.875rem;text-transform:uppercase;border-bottom:2px solid #e5e7eb}.leaderboard td{padding:12px;border-bottom:1px solid #f3f4f6;color:#374151}.leaderboard tbody tr:hover{background:#f9fafb}.leaderboard tbody tr:last-child td{border-bottom:none}.leaderboard th:first-child,.leaderboard td:first-child{text-align:center;width:60px;font-weight:600}.leaderboard p{text-align:center;color:#9ca3af;padding:20px}@media (max-width: 480px){.app-main{min-width:unset;margin:0 10px;padding:30px 20px}.join-form{flex-direction:column}.app-header h1{font-size:2rem}}
