*{box-sizing:border-box}
:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#e5e7eb;background:#0f172a}
body{margin:0;background:#0f172a;color:#e5e7eb}
a{color:#93c5fd;text-decoration:none}
a:hover{text-decoration:underline}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px max(20px,calc((100vw - 1180px)/2));background:#111827;border-bottom:1px solid #334155;flex-wrap:wrap}
.topbar h1{margin:0}
.topbar nav{display:flex;gap:16px;flex-wrap:wrap}
.container{max-width:1180px;margin:auto;padding:22px}
.card{background:#1e293b;border:1px solid #334155;border-radius:16px;padding:20px;margin-bottom:20px;box-shadow:0 10px 30px rgba(0,0,0,.15)}
h2{margin-top:0}
.muted{color:#94a3b8}
.small{font-size:.85rem}
.alert{padding:13px 15px;border-radius:10px;margin-bottom:16px}
.alert.success{background:#14532d}.alert.error{background:#7f1d1d}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
.stat{background:#1e293b;border:1px solid #334155;border-radius:14px;padding:18px}
.stat span{display:block;color:#94a3b8}.stat strong{font-size:2rem}
.stat.online strong{color:#4ade80}.stat.offline strong{color:#f87171}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.stack{display:grid;gap:10px}
input,select{width:100%;padding:12px;border-radius:10px;border:1px solid #475569;background:#0f172a;color:#fff}
button{border:0;border-radius:10px;padding:11px 14px;color:#fff;font-weight:700;cursor:pointer}
button.primary{background:#2563eb}button.secondary{background:#475569}button.warning{background:#b45309}button.danger{background:#b91c1c}
button.full{width:100%;margin-top:14px}
button.compact{padding:9px 12px}
.section-head{display:flex;justify-content:space-between;align-items:center;gap:15px}.section-head.wrap{flex-wrap:wrap}
.filters{display:grid;grid-template-columns:minmax(180px,1fr) 150px auto;gap:8px}
.portal-list{display:grid;gap:12px}
.portal-row{display:grid;grid-template-columns:14px 1fr;gap:12px;background:#111827;border:1px solid #334155;border-radius:12px;padding:14px}
.status-dot{width:12px;height:12px;border-radius:50%;margin-top:14px}.status-dot.green{background:#22c55e}.status-dot.red{background:#ef4444}.status-dot.gray{background:#64748b}
.portal-form{display:grid;grid-template-columns:1fr 2fr;gap:9px}
.actions{grid-column:1/-1;display:flex;gap:7px;flex-wrap:wrap}
.health-text{grid-column:2;color:#94a3b8;font-size:.86rem}
.admin-list{display:grid;gap:10px}
.admin-row{display:flex;justify-content:space-between;align-items:center;background:#111827;padding:12px;border-radius:10px}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(430px,100%)}
label{display:block;margin:12px 0 6px}
@media(max-width:800px){
.stats{grid-template-columns:1fr 1fr}
.two-col{grid-template-columns:1fr}
.portal-form{grid-template-columns:1fr}
.health-text{grid-column:2}
.filters{grid-template-columns:1fr}
}
@media(max-width:520px){
.stats{grid-template-columns:1fr 1fr}
.container{padding:14px}
.topbar{padding:18px 14px}
.actions button{flex:1 1 calc(50% - 8px)}
.portal-row{grid-template-columns:12px 1fr}
}
