*{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}.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%}.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}}
