:root{--bg:#07090c;--bg2:#0c1116;--card:#10161d;--line:#1d2833;--txt:#e8eef3;--dim:#8ba0b3;--accent:#0eb5c6;--accent2:#4bd6e4;--danger:#e5534b;--radius:14px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--txt);-webkit-font-smoothing:antialiased;font:15px/1.6 -apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,sans-serif}button,input{font:inherit}button{cursor:pointer;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#04181b;border:none;border-radius:10px;padding:10px 18px;font-weight:600}button.ghost{color:var(--txt);border:1px solid var(--line);background:0 0}button.danger{color:var(--danger);border:1px solid var(--danger);background:0 0}button:disabled{opacity:.5;cursor:not-allowed}input{border:1px solid var(--line);background:var(--bg2);width:100%;color:var(--txt);border-radius:10px;padding:10px 14px}input:focus{border-color:var(--accent);outline:none}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:24px}.page{max-width:520px;margin:8vh auto;padding:0 20px}.brand{align-items:center;gap:10px;margin-bottom:22px;display:flex}.brand img{width:30px;height:30px}.brand b{font-size:19px}.brand b span{color:var(--accent2)}.tabs{gap:6px;margin-bottom:18px;display:flex}.tabs button{color:var(--dim);border:1px solid var(--line);background:0 0;flex:1}.tabs button.on{background:var(--bg2);color:var(--txt);border-color:var(--accent)}.stack{flex-direction:column;gap:12px;display:flex}.error{color:var(--danger);font-size:13px}.dim{color:var(--dim);font-size:13px}.row{align-items:center;gap:10px;display:flex}.badge{border:1px solid var(--line);color:var(--dim);border-radius:99px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;display:inline-flex}.badge.e2ee{color:#59d98c;border-color:#2c5c40}.badge b{color:inherit}.room{background:var(--bg);flex-direction:column;height:100vh;display:flex}.room-top{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:14px 20px;display:flex}.room-grid{flex:1;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-content:start;gap:12px;padding:16px;display:grid;overflow:auto}.tile{background:var(--bg2);border:1px solid var(--line);border-radius:var(--radius);aspect-ratio:16/10;position:relative;overflow:hidden}.tile video{object-fit:cover;background:#000;width:100%;height:100%}.tile .label{background:#0000008c;border-radius:8px;padding:2px 10px;font-size:12px;position:absolute;bottom:8px;left:10px}.room-bottom{border-top:1px solid var(--line);justify-content:center;gap:12px;padding:16px;display:flex}.lobby-msg{text-align:center;color:var(--dim);padding:8vh 20px}.lobby-msg h2{color:var(--txt);margin-bottom:8px}.spin{border:3px solid var(--line);border-top-color:var(--accent);vertical-align:middle;border-radius:50%;width:22px;height:22px;animation:.9s linear infinite sp;display:inline-block}@keyframes sp{to{transform:rotate(360deg)}}.admin{min-height:100vh;display:flex}.admin-nav{border-right:1px solid var(--line);background:var(--bg2);flex-direction:column;flex-shrink:0;gap:4px;width:200px;height:100vh;padding:20px 12px;display:flex;position:sticky;top:0}.admin-nav .brand{margin-bottom:0}.nav-item{color:var(--dim);text-align:left;background:0 0;border:none;border-radius:8px;padding:9px 12px;font-size:14px;font-weight:500}.nav-item:hover{color:var(--txt);background:var(--card)}.nav-item.on{color:var(--txt);background:var(--card);border-left:3px solid var(--accent);border-radius:0 8px 8px 0}.admin-main{flex:1;max-width:1200px;padding:28px 32px}.admin-main h1{margin-bottom:18px;font-size:22px;font-weight:600}.grid-stats{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:8px;display:grid}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.stat-title{text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin-bottom:4px;font-size:11px}.stat-value{font-size:24px;font-weight:700}.stat-value.ok{color:#59d98c;font-size:18px}.stat-value.bad{color:var(--danger);font-size:18px}.tbl{border-collapse:collapse;width:100%;font-size:13px}.tbl th{text-align:left;color:var(--dim);border-bottom:1px solid var(--line);text-transform:uppercase;letter-spacing:.05em;padding:8px 10px;font-size:11px;font-weight:500}.tbl td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 10px}.tbl tr:hover td{background:#ffffff05}.tbl code{color:var(--accent2);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
