*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#1a1a2e;color:#eee;min-height:100vh}#app{max-width:1200px;margin:0 auto;padding:2rem}h1{margin-bottom:.5rem;color:#e94560;font-size:1.8rem}h2{margin:1.5rem 0 .5rem;color:#ccc;font-size:1.1rem}p{color:#999;margin-bottom:1rem}input{padding:.6rem 1rem;border:1px solid #333;border-radius:6px;background:#16213e;color:#eee;font-size:1rem;outline:none;transition:border-color .2s}input:focus{border-color:#e94560}input::placeholder{color:#555}button{padding:.6rem 1.5rem;border:none;border-radius:6px;background:#e94560;color:#fff;font-size:1rem;cursor:pointer;transition:background .2s,transform .1s}button:hover{background:#c81e45}button:active{transform:scale(.97)}button:disabled{opacity:.5;cursor:not-allowed}form{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}form input{flex:1;min-width:200px}.error-banner{background:#e9456026;border:1px solid #e94560;border-radius:8px;padding:.75rem 1rem;margin-bottom:1rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem;color:#e94560}.error-banner button{background:transparent;border:1px solid #e94560;color:#e94560;padding:.3rem .8rem;font-size:.85rem}.room-card{padding:1rem;margin:.5rem 0;background:#16213e;border-radius:8px;cursor:pointer;transition:background .2s,transform .1s;display:flex;align-items:center;gap:1rem}.room-card:hover{background:#1a1a3e;transform:translate(4px)}.spinner{display:inline-block;width:24px;height:24px;border:3px solid #333;border-top-color:#e94560;border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle;margin-right:.5rem}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{display:flex;align-items:center;color:#999;margin:1rem 0}#liveness-phase{text-align:center;padding:2rem 0}#liveness-phase h1{margin-bottom:1rem}#liveness-container{margin:1.5rem auto;max-width:480px}#liveness-status{margin-top:1rem;font-size:.95rem;color:#999;min-height:1.5rem;display:flex;align-items:center;justify-content:center;gap:.5rem}#video-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:.75rem;padding-bottom:5rem;min-height:50vh}.video-wrapper{position:relative;border-radius:12px;overflow:hidden;background:#000;aspect-ratio:16 / 9}.video-wrapper video{width:100%;height:100%;object-fit:cover;display:block}.video-wrapper.local video{transform:scaleX(-1)}.video-label{position:absolute;bottom:8px;left:8px;background:#0009;color:#fff;padding:2px 8px;border-radius:4px;font-size:.8rem;pointer-events:none}#video-grid.has-screen-share{grid-template-columns:1fr;grid-template-rows:1fr auto}#video-grid.has-screen-share .video-wrapper{aspect-ratio:auto;max-height:70vh}#video-grid.has-screen-share .video-wrapper video.screen-share{object-fit:contain}#video-grid.has-screen-share .video-wrapper.local{max-width:200px;max-height:150px;position:fixed;bottom:6rem;right:1rem;z-index:20;border:2px solid #333;border-radius:8px;aspect-ratio:16 / 9}.video-wrapper.speaking{box-shadow:0 0 0 3px #e94560}#controls{position:fixed;bottom:0;left:0;right:0;display:flex;gap:.75rem;justify-content:center;align-items:center;padding:1rem 1.5rem;background:#16213ed9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid rgba(255,255,255,.08);z-index:100}#controls button{min-width:110px;padding:.6rem 1rem;border-radius:8px;font-size:.9rem;font-weight:500;background:#ffffff1a;border:1px solid rgba(255,255,255,.12);color:#eee;transition:background .2s,color .2s,border-color .2s}#controls button:hover{background:#ffffff2e}#controls button.active{background:#e9456040;border-color:#e94560;color:#e94560}#controls #btn-leave{background:#e94560;border-color:#e94560;color:#fff}#controls #btn-leave:hover{background:#c81e45}@media (max-width: 640px){#app{padding:1rem}h1{font-size:1.4rem}form{flex-direction:column}form input{min-width:auto}#video-grid{grid-template-columns:1fr;gap:.5rem;padding-bottom:6rem}.video-wrapper{border-radius:8px}#controls{flex-wrap:wrap;gap:.5rem;padding:.75rem}#controls button{min-width:0;flex:1 1 calc(50% - .5rem);font-size:.85rem;padding:.5rem}#video-grid.has-screen-share .video-wrapper.local{max-width:120px;max-height:90px;bottom:7rem}}@media (max-width: 380px){#controls button{flex:1 1 100%}}
