:root{
  --bg:#0a0e14;--card:#151d2b;--border:#243247;--text:#e8edf4;--muted:#8fa0b8;
  --accent:#ff6b35;--green:#3ddc84;--red:#ff5555;
}
*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--bg);color:var(--text);
  font-family:-apple-system,Segoe UI,Roboto,sans-serif;padding:20px;line-height:1.5}
a{color:var(--accent);text-decoration:none}
.brand{font-weight:700}.brand span{color:var(--accent)}
.topbar{display:flex;align-items:center;justify-content:space-between;
  border:1px solid var(--border);background:#0d1117;border-radius:10px;
  padding:10px 14px;margin-bottom:16px;font-size:.9rem}
.wrap{max-width:1100px;margin:0 auto}
.center{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;min-height:60vh;text-align:center}
.panel{background:var(--card);border:1px solid var(--border);border-radius:10px;
  padding:14px;margin-bottom:12px}
.panel h2{font-size:.8rem;color:var(--muted);text-transform:uppercase;
  letter-spacing:.6px;margin-bottom:10px}
.input{width:320px;max-width:100%;background:#0d1117;border:1px solid var(--border);
  border-radius:8px;padding:10px 12px;color:var(--text);font-size:.9rem}
button,.btn{border:none;border-radius:8px;padding:9px 14px;font-weight:600;
  cursor:pointer;font-size:.85rem;color:var(--text);background:var(--border)}
.btn.p,button.p{background:var(--accent);color:#fff}
.btn.d,button.d{background:#3a1620;color:var(--red);border:1px solid #5a2230}
button:disabled{opacity:.45;cursor:not-allowed}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;
  background:var(--muted);margin-right:6px;vertical-align:middle}
.dot.on{background:var(--green)}.dot.fault{background:var(--red)}
.dot.recovering{background:var(--accent)}
.pill{background:var(--border);border-radius:20px;padding:3px 10px;font-size:.78rem}
.note{color:var(--muted);font-size:.78rem}
.err{color:var(--red)}.okl{color:var(--green)}
.banner{background:#3a1620;border:1px solid #5a2230;color:#ffd9d0;
  border-radius:8px;padding:8px 12px;margin-bottom:12px;font-size:.85rem;display:none}
.banner.show{display:block}

/* session page */
.cols{display:grid;grid-template-columns:1fr 340px;gap:16px}
.feeds{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.feeds figure{background:var(--card);border:1px solid var(--border);
  border-radius:10px;overflow:hidden}
.feeds img{width:100%;display:block;aspect-ratio:16/9;object-fit:cover;background:#0b1220}
.feeds figcaption{padding:6px 10px;font-size:.78rem;color:var(--muted)}
.joint{display:grid;grid-template-columns:86px 1fr 46px;gap:8px;align-items:center;
  font-size:.8rem;margin-bottom:8px}
.joint input{width:100%}
.btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
#log{background:#0d1117;border:1px solid var(--border);border-radius:10px;padding:10px;
  height:200px;overflow-y:auto;font-family:ui-monospace,monospace;font-size:.72rem;
  line-height:1.7}

/* owner console */
.cells{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  gap:12px;margin-bottom:14px}
.cellc{background:#0d1117;border:1px solid var(--border);border-radius:10px;
  padding:12px;font-size:.82rem}
.cellc h3{font-size:.95rem;margin-bottom:4px}
.cellc .m{color:var(--muted);font-size:.76rem;margin-bottom:10px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.row{display:flex;align-items:center;justify-content:space-between;gap:8px;
  font-size:.82rem;padding:8px 0;border-bottom:1px solid var(--border)}
.row:last-child{border-bottom:none}
.tag{font-size:.68rem;color:var(--accent);border:1px solid var(--accent);
  border-radius:6px;padding:1px 7px}
@media(max-width:800px){.cols,.two{grid-template-columns:1fr}}
