*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0a0a0f;--surface: #14141f;--border: #2a2a3a;--text: #e4e4ef;--text-dim: #8888a0;--accent: #6c5ce7;--accent-hover: #7f70f0;--danger: #e74c3c;--success: #27ae60}html,body,#root{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}button{cursor:pointer;border:none;border-radius:8px;padding:10px 20px;font-size:14px;font-weight:600;transition:background .15s}button.primary{background:var(--accent);color:#fff}button.primary:hover{background:var(--accent-hover)}button.danger{background:var(--danger);color:#fff}input{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 14px;color:var(--text);font-size:14px;outline:none;width:100%}input:focus{border-color:var(--accent)}.page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%;padding:24px}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:32px;width:100%;max-width:480px}.card h1{font-size:24px;margin-bottom:8px}.card p{color:var(--text-dim);margin-bottom:20px;font-size:14px}.field{margin-bottom:16px}.field label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:6px}.room-container{display:flex;height:100%;width:100%;position:relative;background:#000}.video-wrapper{position:relative;flex:1;display:flex;align-items:center;justify-content:center}.video-wrapper video{width:100%;height:100%;object-fit:cover}.video-local{position:absolute;bottom:16px;right:16px;width:200px;height:150px;border-radius:12px;overflow:hidden;border:2px solid var(--border);z-index:10}.video-local video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.controls{position:absolute;bottom:24px;left:50%;transform:translate(-50%);display:flex;gap:12px;z-index:20}.controls button{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#ffffff26;color:#fff;font-size:18px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.controls button.active{background:var(--danger)}.overlay{position:absolute;top:0;left:0;right:0;padding:16px 24px;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(to bottom,rgba(0,0,0,.6),transparent);z-index:15;color:#fff;font-size:14px}.waiting{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;width:100%;gap:16px;color:var(--text-dim)}.waiting .invite-link{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 16px;font-family:monospace;font-size:13px;color:var(--accent);max-width:500px;word-break:break-all;cursor:pointer;-webkit-user-select:all;user-select:all}button.secondary{background:transparent;border:1px solid var(--border);color:var(--text)}button.secondary:hover{background:var(--surface)}button:disabled{opacity:.55;cursor:not-allowed}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px;width:100%;max-width:420px;margin:16px}.tx-banner{position:absolute;top:64px;right:16px;background:#000000bf;border:1px solid;border-radius:10px;padding:10px 14px;font-size:13px;max-width:320px;z-index:30;display:flex;flex-direction:column;gap:4px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.banner-warning{position:absolute;top:0;left:0;right:0;padding:8px 16px;background:#e74c3ce6;color:#fff;text-align:center;font-size:13px;font-weight:500;z-index:40}.media-error{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;max-width:420px;padding:24px}.media-error h2{font-size:20px;color:var(--text)}.media-error .hint{color:var(--text-dim);font-size:14px}@media(max-width:640px){.video-local{width:110px;height:80px;bottom:96px;right:12px}.controls{bottom:16px;gap:16px}.controls button{width:56px;height:56px}.overlay{padding:12px 16px;font-size:12px;flex-wrap:wrap;gap:8px}.tx-banner{top:80px;right:8px;left:8px;max-width:none}.card{padding:24px}}
