.viewer-container{width:100vw;height:100vh;display:flex;flex-direction:column;background:#0a0a0a}.viewer-header{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:#ffffff0d;backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.1)}.status-indicator{display:flex;align-items:center;gap:10px}.status-dot{width:10px;height:10px;border-radius:50%;animation:pulse 2s infinite}.status-dot.connected{background:#4caf50}.status-dot.disconnected{background:#f44336}.controls{display:flex;gap:10px;align-items:center}.fps-indicator{font-size:12px;color:#ffffffb3;letter-spacing:.02em}.control-btn{padding:8px 16px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:#fff;cursor:pointer;font-size:14px;transition:all .2s ease}.control-btn:hover{background:#ffffff26;border-color:#ffffff4d}.control-btn.disconnect{background:#f4433633;border-color:#f4433666}.control-btn.disconnect:hover{background:#f443364d;border-color:#f4433680}.canvas-container{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#000}.remote-canvas{max-width:100%;max-height:100%;object-fit:contain;cursor:crosshair}.host-list-container{width:100%;max-width:800px;margin:0 auto}.host-list-header{display:flex;align-items:center;justify-content:space-between;margin:0 0 20px}.host-list-title{margin:0;font-size:1.4rem;font-weight:600;color:#333}.host-list-updated{font-size:.85rem;color:#777}.host-list-loading,.host-list-error,.host-list-empty{text-align:center;padding:40px 20px;color:#666;font-size:1.1rem}.host-list-error{color:#e74c3c}.host-list-empty p{margin:10px 0}.host-list-hint{font-size:.9rem;color:#999}.host-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:15px;padding:10px}.host-item{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;padding:20px;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 6px #0000001a;color:#fff}.host-item:hover{transform:translateY(-5px);box-shadow:0 8px 15px #0003}.host-item-locked{opacity:.6;cursor:not-allowed;filter:grayscale(.2)}.host-item-locked:hover{transform:none;box-shadow:0 4px 6px #0000001a}.host-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.host-item-id{font-size:1.2rem;font-weight:600;word-break:break-all}.host-item-status{font-size:.8rem;color:#4ade80;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.host-item-footer{display:flex;justify-content:space-between;align-items:center;font-size:.9rem;opacity:.9}.host-item-viewers{font-weight:500}@media (max-width: 768px){.host-list{grid-template-columns:1fr}.host-list-title{font-size:1.2rem}.host-item{padding:15px}}.connect-screen{width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2)}.connect-card{background:#ffffff1a;backdrop-filter:blur(10px);border-radius:20px;padding:40px;min-width:400px;max-width:900px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #1f26875e;border:1px solid rgba(255,255,255,.18)}.connect-card h1{font-size:32px;margin-bottom:8px;text-align:center;color:#fff}.subtitle{text-align:center;color:#fffc;margin-bottom:32px;font-size:14px}.auth-panel{background:#0003;border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:16px;margin-bottom:20px}.auth-status{display:flex;flex-direction:column;gap:10px;color:#ffffffe6;font-size:14px}.auth-buttons{display:flex;gap:10px;flex-wrap:wrap}.auth-button{padding:8px 12px;border-radius:8px;border:1px solid rgba(255,255,255,.3);background:#ffffff26;color:#fff;font-size:13px;cursor:pointer;transition:background .2s ease,transform .2s ease}.auth-button:hover{background:#ffffff40;transform:translateY(-1px)}.auth-error{margin-top:8px;color:#ffd1d1;font-size:12px}.host-list-blocked{padding:16px;border-radius:10px;background:#0003;color:#fffc;text-align:center;margin-bottom:16px}.input-group{margin-bottom:20px}.input-group label{display:block;margin-bottom:8px;color:#ffffffe6;font-size:14px;font-weight:500}.input-group input{width:100%;padding:12px 16px;background:#fff3;border:1px solid rgba(255,255,255,.3);border-radius:8px;color:#fff;font-size:14px;outline:none;transition:all .3s ease}.input-group input:focus{background:#ffffff40;border-color:#ffffff80}.input-group input::placeholder{color:#ffffff80}.connect-button{width:100%;padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;font-size:16px;font-weight:600;cursor:pointer;margin-top:24px;transition:transform .2s ease,box-shadow .2s ease}.connect-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea66}.connect-button:active{transform:translateY(0)}.connect-button:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.admin-link{width:100%;padding:12px;background:#ffffff26;border:1px solid rgba(255,255,255,.3);border-radius:8px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;margin-top:12px;transition:all .3s ease}.admin-link:hover{background:#ffffff40}.manual-input-toggle{width:100%;padding:12px;background:#ffffff26;border:1px solid rgba(255,255,255,.3);border-radius:8px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;margin-top:20px;transition:all .3s ease}.manual-input-toggle:hover{background:#ffffff40}.back-button{position:fixed;top:20px;left:20px;padding:10px 20px;background:#ffffffe6;border:none;border-radius:6px;color:#333;font-size:14px;font-weight:500;cursor:pointer;box-shadow:0 2px 10px #0000001a;transition:all .3s ease;z-index:1000}.back-button:hover{background:#fff;box-shadow:0 4px 15px #00000026}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#1a1a1a;color:#fff}#root{width:100vw;height:100vh;overflow:hidden}
