:root{--bg:#0a0a0f;--bg2:#0f0f18;--border:rgba(0,212,255,.12);--cyan:#00d4ff;--green:#00ff88;--red:#ff5555;--yellow:#ffd700;--text:#e2e8f0;--muted:#64748b;--mono:'JetBrains Mono',monospace;--sans:'Inter',system-ui,sans-serif}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:var(--sans);min-height:100vh}
a{color:inherit;text-decoration:none}
/* Nav */
.nav{display:flex;align-items:center;gap:1rem;padding:.75rem 1.5rem;background:rgba(10,10,15,.98);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50;flex-wrap:wrap}
.nav-brand{font-family:var(--mono);font-weight:700;font-size:.95rem}
.nav-brand span{color:var(--cyan)}
.nav-sub{color:var(--muted);font-size:.78rem}
.nav-tabs{display:flex;gap:.25rem;flex:1}
.tab-btn{background:none;border:none;color:var(--muted);padding:.4rem .9rem;border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .2s;font-family:var(--sans)}
.tab-btn.active,.tab-btn:hover{background:rgba(0,212,255,.1);color:var(--cyan)}
.nav-right{display:flex;align-items:center;gap:.75rem}
.sse-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);transition:background .3s}
.sse-dot.connected{background:var(--green);box-shadow:0 0 6px var(--green)}
.btn-logout{background:none;border:1px solid var(--border);color:var(--muted);padding:.3rem .75rem;border-radius:6px;font-size:.8rem;cursor:pointer;transition:all .2s}
.btn-logout:hover{border-color:var(--red);color:var(--red)}
/* Tabs */
.tab-content{display:none;padding:1.5rem}
.tab-content.active{display:block}
/* Section */
.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem;flex-wrap:wrap;gap:.75rem}
.section-header h2{font-size:1.25rem;font-weight:600}
.filter-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.filter-row select{background:rgba(255,255,255,.05);border:1px solid var(--border);color:var(--text);padding:.35rem .75rem;border-radius:6px;font-size:.82rem;outline:none}
/* Buttons */
.btn-sm{background:rgba(255,255,255,.06);border:1px solid var(--border);color:var(--text);padding:.35rem .85rem;border-radius:6px;font-size:.8rem;cursor:pointer;transition:all .2s}
.btn-sm:hover{border-color:var(--cyan);color:var(--cyan)}
.btn-danger{background:rgba(255,85,85,.1);border-color:rgba(255,85,85,.3);color:var(--red)}
.btn-danger:hover{background:rgba(255,85,85,.2)}
.btn-primary{width:100%;background:var(--cyan);color:#000;border:none;padding:.65rem 1rem;border-radius:8px;font-weight:600;font-size:.9rem;cursor:pointer;font-family:var(--sans);margin-top:.5rem}
/* Container grid */
.container-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem}
.c-card{background:rgba(255,255,255,.02);border:1px solid var(--border);border-radius:10px;padding:1.25rem;transition:border-color .2s}
.c-card:hover{border-color:rgba(0,212,255,.25)}
.c-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}
.c-name{font-family:var(--mono);font-weight:600;font-size:.95rem}
.c-image{font-size:.75rem;margin-bottom:.85rem}
.status-badge{font-size:.75rem;font-weight:600;padding:.2rem .6rem;border-radius:100px;font-family:var(--mono)}
.running{color:var(--green);background:rgba(0,255,136,.12);border:1px solid rgba(0,255,136,.25)}
.stopped{color:var(--red);background:rgba(255,85,85,.12);border:1px solid rgba(255,85,85,.25)}
.restarting{color:var(--yellow);background:rgba(255,215,0,.12);border:1px solid rgba(255,215,0,.25)}
.c-metrics{display:flex;gap:1rem;margin-bottom:.85rem}
.metric{text-align:center}
.mval{font-family:var(--mono);font-size:.9rem;color:var(--cyan)}
.mlbl{font-size:.7rem;color:var(--muted)}
.c-actions{display:flex;gap:.5rem}
/* Stats */
.stat-row{display:flex;gap:1rem;flex-wrap:wrap}
.stat-card{background:rgba(255,255,255,.03);border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem;min-width:120px}
.snum{font-family:var(--mono);font-size:1.5rem;font-weight:700;color:var(--cyan)}
.slbl{font-size:.75rem;color:var(--muted);margin-top:.2rem}
/* Topic bars */
.topic-bar{display:flex;justify-content:space-between;align-items:center;padding:.4rem .75rem;border-bottom:1px solid var(--border);font-size:.82rem}
.topic-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topic-count{font-family:var(--mono);color:var(--cyan);min-width:40px;text-align:right}
/* Table */
table{width:100%;border-collapse:collapse;font-size:.85rem}
th{text-align:left;padding:.6rem 1rem;border-bottom:1px solid var(--border);color:var(--muted);font-size:.78rem;font-weight:500}
td{padding:.7rem 1rem;border-bottom:1px solid rgba(255,255,255,.04)}
tr:hover td{background:rgba(255,255,255,.02)}
.mono{font-family:var(--mono)}
.muted{color:var(--muted)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
/* Badges */
.badge{display:inline-block;padding:.15rem .55rem;border-radius:100px;font-size:.7rem;font-weight:600;font-family:var(--mono)}
.badge-red{background:rgba(255,85,85,.12);color:var(--red);border:1px solid rgba(255,85,85,.25)}
.badge-warn{background:rgba(255,215,0,.12);color:var(--yellow);border:1px solid rgba(255,215,0,.25)}
/* Modal */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:200;display:flex;align-items:center;justify-content:center}
.modal-box{background:var(--bg2);border:1px solid var(--border);border-radius:10px;width:min(800px,95vw);max-height:80vh;display:flex;flex-direction:column}
.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--border);font-weight:600}
.modal-header button{background:none;border:none;color:var(--muted);font-size:1.1rem;cursor:pointer}
.log-lines{font-family:var(--mono);font-size:.78rem;padding:1rem 1.25rem;overflow-y:auto;white-space:pre-wrap;line-height:1.6;color:var(--text);flex:1}
/* Login */
.login-wrap{max-width:380px;margin:5rem auto;padding:2rem}
.login-wrap .brand{font-family:var(--mono);font-size:1rem;font-weight:700;margin-bottom:1.5rem;color:var(--cyan)}
.login-wrap h1{font-size:1.4rem;margin-bottom:1.5rem}
.fg{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}
.fg label{font-size:.85rem;color:var(--muted)}
.fg input{background:rgba(255,255,255,.05);border:1px solid var(--border);border-radius:8px;padding:.65rem 1rem;color:var(--text);outline:none;font-family:var(--sans)}
.fg input:focus{border-color:var(--cyan)}
.alert-error{background:rgba(255,85,85,.1);border:1px solid rgba(255,85,85,.3);color:var(--red);padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem;font-size:.875rem}
.loading{color:var(--muted);padding:2rem;text-align:center}
@media(max-width:640px){.grid-2{grid-template-columns:1fr}}
