:root{--bg:#0d1117;--panel:#161b22;--border:#30363d;--text:#e6edf3;--muted:#8b949e;--accent:#2f81f7;--live:#3fb950;--danger:#f85149}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif}a{color:var(--accent)}header{justify-content:space-between;gap:1rem;padding:1rem 1.5rem;border-bottom:1px solid var(--border)}header,header nav{display:flex;align-items:center}header nav{gap:1.25rem}main{padding:1.5rem;max-width:1400px;margin:0 auto}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));grid-gap:1.25rem;gap:1.25rem}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem}.badge{font-size:.75rem;padding:.15rem .55rem;border-radius:999px;border:1px solid var(--border);color:var(--muted)}.badge.live{color:var(--live);border-color:var(--live)}video{width:100%;background:#000;display:block}.offline,video{aspect-ratio:16/9}.offline{display:grid;place-items:center;background:#000;color:var(--muted);font-size:.9rem}button,input{font:inherit;border-radius:6px;border:1px solid var(--border);padding:.5rem .75rem}input{background:var(--bg);color:var(--text)}button{background:var(--accent);color:#fff;border-color:transparent;cursor:pointer}button.secondary{background:transparent;color:var(--text);border-color:var(--border)}button.danger{background:transparent;color:var(--danger);border-color:var(--danger)}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:.7rem .6rem;border-bottom:1px solid var(--border);vertical-align:middle}th{color:var(--muted);font-weight:500}code,th{font-size:.85rem}code{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:.15rem .4rem;word-break:break-all}.login{max-width:340px;margin:12vh auto;display:flex;flex-direction:column;gap:.75rem}.error{color:var(--danger);font-size:.9rem}.muted{color:var(--muted)}.actions{display:flex;gap:.4rem;flex-wrap:wrap}