:root{--pink:#ec0a8c;--pink-ink:#fff;--pink-soft:#fdeaf5;--pink-deep:#c00873;--ink:#1a1c1e;--ink-2:#474c54;--muted:#8b9099;--bg:#f1f2f4;--panel:#ffffff;--border:#e3e5e8;--line:#edeef1;--good:#0c8f4d;--good-bg:#e7f6ee;--warn:#b45309;--warn-bg:#fdf1d6;--crit:#d02a2a;--crit-bg:#fbe7e7;--shadow:0 1px 0 rgba(23,24,26,.02),0 1px 2px rgba(23,24,26,.06);--radius:12px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13.5px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.boot{display:grid;place-items:center;height:100vh;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:12px}.center{text-align:center}.r{text-align:right}.mt{margin-top:12px}.login-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:radial-gradient(900px 420px at 50% -8%,var(--pink-soft),transparent),var(--bg)}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:16px;box-shadow:0 8px 30px #17181a12;padding:32px 30px;width:376px;max-width:92vw}.brand-lg{display:flex;align-items:center;gap:10px;font-size:19px;font-weight:800;letter-spacing:-.4px}.logo{width:34px;height:34px;border-radius:9px;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:800;font-size:14px}.sso-buttons{display:flex;flex-direction:column;gap:10px;margin-top:20px}.sso-btn{display:flex;align-items:center;gap:11px;justify-content:center;border:1px solid var(--border);border-radius:9px;padding:11px 14px;font-weight:600;background:#fff;transition:.12s;cursor:pointer}.sso-btn:hover{border-color:var(--pink);box-shadow:0 2px 8px #ec0a8c1f}.ms-tile{width:16px;height:16px;background:conic-gradient(#f25022 0,#f25022 25%,#7fba00 0,#7fba00 50%,#00a4ef 0,#00a4ef 75%,#ffb900 0);border-radius:2px}.g-mark{width:18px;height:18px;border-radius:50%;background:#fff;border:1px solid var(--border);display:grid;place-items:center;font-weight:800;color:#4285f4;font-size:12px}.divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px;margin:18px 0 13px}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line)}.dev-login{display:flex;flex-direction:column;gap:9px}.dev-login input{border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:14px;font-family:inherit}.dev-login input:focus{outline:none;border-color:var(--pink)}.btn-primary{background:var(--pink);color:#fff;border:none;border-radius:8px;padding:10px 14px;font-weight:700;cursor:pointer;font-family:inherit}.btn-primary:hover{background:var(--pink-deep)}.err{background:var(--crit-bg);color:var(--crit);border-radius:8px;padding:9px 12px;font-size:13px;margin-top:12px}.login-foot{opacity:.7;font-size:12px;color:var(--muted)}.topbar{height:56px;background:var(--panel);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px;padding:0 18px;position:sticky;top:0;z-index:10}.topbar .brand{display:flex;align-items:center;gap:9px;font-weight:800;letter-spacing:-.3px}.topbar .ent-sm{font-size:10px;color:var(--pink);font-weight:700;text-transform:uppercase;letter-spacing:.6px}.topsearch{flex:1;max-width:520px;margin:0 auto}.topsearch input{width:100%;border:1px solid var(--border);background:#f7f8fa;border-radius:9px;padding:8px 13px;font-size:13px;font-family:inherit}.topsearch input:focus{outline:none;border-color:var(--pink);background:#fff}.topuser{display:flex;align-items:center;gap:9px}.avatar{width:30px;height:30px;border-radius:50%;background:var(--pink);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px}.frame{display:grid;grid-template-columns:224px 1fr;min-height:calc(100vh - 56px)}.sidebar{background:var(--panel);border-right:1px solid var(--border);padding:14px 12px;display:flex;flex-direction:column;position:sticky;top:56px;height:calc(100vh - 56px)}.sidebar nav{display:flex;flex-direction:column;gap:2px;flex:1;overflow:auto}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 11px;border-radius:8px;color:var(--ink-2);font-weight:600;font-size:13px;cursor:pointer}.nav-item:hover{background:#f5f6f8;color:var(--ink)}.nav-item.active{background:var(--pink-soft);color:var(--pink-deep)}.nav-item .ico{width:18px;text-align:center;opacity:.9}.nav-sec{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700;padding:14px 11px 6px}.side-foot{border-top:1px solid var(--line);padding-top:10px;display:flex;flex-direction:column;gap:9px}.who{display:flex;align-items:center;gap:9px}.who-name{font-weight:600;font-size:13px}.who-role{font-size:11px;color:var(--muted);text-transform:capitalize}.btn-ghost{background:none;border:1px solid var(--border);border-radius:8px;padding:7px 10px;color:var(--ink-2);font-weight:600;cursor:pointer;font-family:inherit}.btn-ghost:hover{border-color:var(--pink);color:var(--pink)}.content{padding:24px 30px;overflow:auto}.page{max-width:1080px;margin:0 auto}.page-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:18px}.crumb{font-size:12px;color:var(--muted);margin-bottom:2px}h1{font-size:21px;font-weight:800;letter-spacing:-.5px;margin:0 0 2px}h3{font-size:14.5px;font-weight:700;margin:0 0 8px}.search{border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:13px;width:240px;font-family:inherit}.search:focus{outline:none;border-color:var(--pink)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:13px;margin-bottom:16px}.stat{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:15px 17px;box-shadow:var(--shadow)}.stat.warn{border-color:#f0d9a8}.stat-top{display:flex;align-items:center;justify-content:space-between}.stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700}.stat-value{font-size:26px;font-weight:800;letter-spacing:-1px;margin:6px 0 2px}.stat-sub{font-size:11.5px;color:var(--muted)}.pill-up{font-size:11px;font-weight:700;color:var(--good)}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:17px 19px;box-shadow:var(--shadow);margin-bottom:14px}.card.no-pad{padding:0;overflow:hidden}.card-h{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line)}.card-h h3{margin:0}.card p{line-height:1.55;margin:.3em 0;color:var(--ink-2)}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700;padding:11px 18px;border-bottom:1px solid var(--line);background:#fafbfc}.tbl th.r{text-align:right}.tbl td{padding:11px 18px;border-bottom:1px solid var(--line);vertical-align:middle}.tbl tr:last-child td{border-bottom:none}.tbl tr:hover td{background:#fcfcfd}.thumb{width:36px;height:36px;border-radius:8px;object-fit:cover;display:grid;place-items:center;font-weight:800;color:#fff;font-size:12px;background:#eef0f3}.thumb.ph{color:#c3c8d1}.bar{height:8px;border-radius:5px;background:#eef0f3;overflow:hidden}.bar>i{display:block;height:100%;background:var(--pink);border-radius:5px}.chip{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:700}.chip.ok{background:var(--good-bg);color:var(--good)}.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.crit{background:var(--crit-bg);color:var(--crit)}.chip.mut{background:#eef0f3;color:var(--ink-2)}.chip.brand{background:var(--pink-soft);color:var(--pink-deep)}.role-select{border:1px solid var(--border);border-radius:8px;padding:6px 9px;font-size:13px;font-family:inherit;background:#fff}.notice{background:var(--warn-bg);border:1px solid #f0d9a8;color:#7c5406;border-radius:10px;padding:12px 14px;font-size:13px;margin-bottom:14px;line-height:1.5}.link{color:var(--pink-deep);font-weight:600;cursor:pointer}code{background:#eef0f3;border-radius:4px;padding:1px 5px;font-size:12px}@media (max-width:820px){.frame{grid-template-columns:1fr}.sidebar{display:none}}
