*{box-sizing:border-box}body{margin:0;font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f4f5f7;color:#1d2330}
header.top{display:flex;gap:24px;align-items:center;padding:10px 20px;background:#1d2330;color:#fff;flex-wrap:wrap}
header.top a{color:#cfe1ff;text-decoration:none;margin-right:14px}header.top .brand{font-weight:700}
header.top .who{margin-left:auto}header.top .muted{color:#aab}.warn{color:#b35c00}
main{max-width:1100px;margin:20px auto;padding:0 12px}.card{background:#fff;border-radius:8px;padding:16px 20px;margin-bottom:16px;box-shadow:0 1px 2px #0001}
.narrow{max-width:420px;margin:60px auto}h1{font-size:22px;margin:0 0 12px}h2{font-size:18px}
.muted{color:#778}.small{font-size:13px}.err{color:#b00020;font-weight:600}.ok{color:#11804a;font-weight:600}
.note{background:#fff8e1;padding:8px 12px;border-radius:6px}.danger-box{background:#fdecea;padding:10px 14px;border-radius:6px}
table.list{width:100%;border-collapse:collapse;margin-top:10px}table.list th,table.list td{text-align:left;padding:6px 8px;border-bottom:1px solid #e6e8ee;vertical-align:top}
.tag{display:inline-block;font-size:12px;padding:1px 6px;border-radius:10px;background:#e8ecf3}.tag-sg{background:#e3f1ff}.tag-g{background:#f3eee3}.tag-warn{background:#ffe2c2}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0}form.inline{display:inline}
input[type=text],input[type=password],input[type=search],input[type=tel],select{padding:7px 9px;border:1px solid #c8ccd6;border-radius:6px;font:inherit}
input.wide{width:100%}label{display:block;margin:10px 0}
button,.button{padding:7px 14px;border:0;border-radius:6px;background:#2d6cdf;color:#fff;font:inherit;cursor:pointer;text-decoration:none;display:inline-block}
button.secondary{background:#e8ecf3;color:#1d2330}button.danger,.button.danger{background:#c62828}button.link{background:none;color:#cfe1ff;padding:0;text-decoration:underline}
button:disabled{opacity:.45;cursor:not-allowed}img.qr{background:#fff;padding:8px;border:1px solid #ddd}
.groups-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:2px 16px}.groups-grid label{margin:2px 0}
.st-error td{background:#fff0f0}.st-partial td{background:#fffbe8}.st-done td{background:#f1fbf5}.st-waiting td{background:#eef4ff}
