:root{--bg:#f2f3f5;--card:#fff;--ink:#1f2329;--muted:#646a73;--line:#d9dde3;--blue:#0064c8;--blue-hover:#0052a5;--blue-soft:#e8f3ff;--nav:#182331;--nav-active:#0b67c2;--danger:#c9353f;--success:#16845b;--shadow:0 1px 3px rgba(31,35,41,.12)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg)}button,input,select{font:inherit}.hidden{display:none!important}code{font-family:"SFMono-Regular",Consolas,monospace;color:#334155}.login-shell{min-height:100vh;display:grid;place-items:center;background:#eef1f5;border-top:4px solid var(--blue)}.login-brand{position:absolute;top:28px;left:36px;display:flex;align-items:center;gap:12px}.login-brand h1{margin:0;font-size:19px}.login-brand p{margin:0;color:var(--muted)}.mark{width:36px;height:36px;display:grid;place-items:center;border-radius:2px;background:var(--blue);color:#fff;font:bold 20px Arial}.card{background:var(--card);border:1px solid var(--line);border-radius:2px;box-shadow:var(--shadow)}.login-card{width:min(400px,calc(100vw - 32px));padding:32px 36px}.eyebrow{color:var(--blue);font-size:12px;font-weight:600}.login-card h2{font-size:24px;margin:6px 0 24px}.login-card label,.form-grid label{display:flex;flex-direction:column;gap:6px;color:#30343b;font-weight:500}.login-card label+label{margin-top:16px}input,select{height:38px;border:1px solid #c7ccd4;background:#fff;border-radius:2px;padding:8px 10px;color:var(--ink);outline:none;transition:border-color .15s}input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 2px rgba(0,100,200,.12)}input[type=checkbox]{width:16px;height:16px;accent-color:var(--blue)}input[type=file]{height:auto;padding:6px}button{min-height:34px;border:1px solid transparent;cursor:pointer;border-radius:2px;padding:7px 14px;font-weight:500;background:#fff;transition:.15s}.primary{background:var(--blue);border-color:var(--blue);color:#fff}.primary:hover{background:var(--blue-hover);border-color:var(--blue-hover)}.secondary{background:#fff;border-color:#aeb5bf;color:#30343b}.secondary:hover{border-color:var(--blue);color:var(--blue)}.ghost{background:transparent;color:var(--muted)}.login-card .primary{width:100%;margin-top:22px;height:40px}.hint{color:var(--muted);font-size:12px;margin:14px 0 0;text-align:center}.app-shell{min-height:100vh;display:grid;grid-template-columns:216px 1fr}aside{position:fixed;inset:0 auto 0 0;width:216px;background:var(--nav);color:#d7dee8;display:flex;flex-direction:column}.brand{height:64px;display:flex;align-items:center;gap:10px;padding:0 20px;border-bottom:1px solid #2b3949}.brand strong,.brand small{display:block}.brand strong{font-size:16px;color:#fff}.brand small{font-size:11px;color:#8795a8}.brand .mark{width:30px;height:30px;font-size:17px}nav{display:flex;flex-direction:column;padding:10px 0}nav button{height:38px;background:transparent;border:0;border-left:3px solid transparent;border-radius:0;color:#bdc7d4;text-align:left;padding:8px 22px;font-weight:400}nav button:hover{background:#223244;color:#fff}nav button.active{background:#203d5d;border-left-color:#2f9bff;color:#fff}.nav-section{padding:17px 22px 6px;color:#6f7f92;font-size:11px}.side-bottom{margin-top:auto;padding:0 14px 14px}.health{font-size:12px;color:#aab5c2;padding:13px 8px;border-top:1px solid #2b3949}.health i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#27c27d;margin-right:8px}.side-bottom .ghost{color:#aab5c2;width:100%;text-align:left}.side-bottom .ghost:hover{color:#fff}main{grid-column:2;padding:0 28px 36px;min-width:0}header{height:78px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);margin-bottom:20px}header h1{font-size:21px;margin:0;font-weight:600}header p{margin:2px 0;color:var(--muted);font-size:13px}.admin-pill{display:flex;align-items:center;gap:9px;color:var(--muted)}.admin-pill b{width:30px;height:30px;border-radius:2px;display:grid;place-items:center;background:var(--blue);color:#fff}.page{display:none}.page.active{display:block}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.stat{padding:17px 18px;border-top:3px solid var(--blue);box-shadow:none}.stat span{color:var(--muted)}.stat strong{display:block;font-size:27px;margin-top:5px;font-weight:600}.stat small{color:#8a9099}.grid-2{display:grid;grid-template-columns:1.2fr .8fr;gap:14px}.grid-2 .card,.backup-card{padding:20px}.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.card h3{margin:0 0 3px;font-size:16px;font-weight:600}.card p{margin:0;color:var(--muted);font-size:13px}.tag{display:inline-block;font-size:12px;padding:3px 8px;border:1px solid #b9c0c9;border-radius:2px;color:#4b525c;white-space:nowrap}.tag.green{background:#edf9f4;border-color:#a9dcc7;color:var(--success)}.tag.red{background:#fff0f1;border-color:#efb9be;color:var(--danger)}.endpoint{margin-top:18px;padding:14px;border:1px solid #dfe3e8;background:#f7f8fa;font-family:"SFMono-Regular",Consolas,monospace}.endpoint div+div{margin-top:7px}.endpoint span{display:inline-block;width:86px;color:var(--muted);font-family:inherit}.check-list{margin-top:13px}.check-list div{padding:9px 0;border-bottom:1px solid #eceef1}.check-list b{color:var(--success);margin-right:8px}.backup-card{margin-top:14px;display:flex;justify-content:space-between;align-items:center}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.section-note{color:var(--muted);font-size:13px}.search{width:280px;background:#fff}.table-card{overflow:hidden;box-shadow:none}table{border-collapse:collapse;width:100%}th,td{padding:11px 13px;text-align:left;border-bottom:1px solid #e5e8ec;vertical-align:middle}th{height:40px;font-size:12px;font-weight:600;color:#4e5560;background:#f5f6f8}td{color:#303640}tbody tr:hover{background:#f7fbff}.identity{display:flex;gap:9px;align-items:center}.avatar{width:30px;height:30px;border-radius:2px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-weight:600}.identity strong,.identity small{display:block}.identity small,td small{color:var(--muted)}.status{font-size:12px;padding:2px 7px;border:1px solid #a9dcc7;border-radius:2px;background:#edf9f4;color:var(--success)}.status.off{background:#f2f3f5;border-color:#d7dbe0;color:#737984}.actions{display:flex;justify-content:flex-end;gap:3px}.actions button{min-height:28px;padding:4px 7px;background:transparent;color:var(--blue)}.actions button:hover{background:var(--blue-soft)}.actions .danger,.danger{color:var(--danger)}.actions .danger:hover{background:#fff0f1}.empty{text-align:center;padding:38px;color:var(--muted)}dialog{width:min(720px,calc(100vw - 28px));border:1px solid #cfd4db;border-radius:2px;padding:0;box-shadow:0 12px 38px rgba(15,23,42,.26)}dialog::backdrop{background:rgba(15,23,42,.48)}dialog>form,dialog>.dialog-head,dialog>.totp-box{padding-left:24px;padding-right:24px}dialog>form{padding-top:22px;padding-bottom:22px}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.dialog-head h2{margin:3px 0 0;font-size:19px}.icon{font-size:24px;background:transparent;color:#737984;padding:0 5px;min-height:auto}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.wide{grid-column:1/-1}.toggle-line{flex-direction:row!important;align-items:center}.toggle-line input{width:16px;height:16px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px;padding-top:16px;border-top:1px solid #e5e8ec}.grant-list{max-height:330px;overflow:auto;border:1px solid var(--line);border-radius:2px;margin-top:7px}.grant-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-bottom:1px solid #e8eaee;font-weight:400}.grant-item:last-child{border:0}.grant-item input{width:16px;height:16px}.grant-item strong,.grant-item small{display:block}.grant-item small{color:var(--muted)}.field-title{display:block;font-size:13px;font-weight:600}.compact-list{max-height:210px}.totp-box{text-align:center;padding-bottom:24px}.totp-box img{width:220px;height:220px;border:1px solid var(--line);border-radius:0}.totp-box p{max-width:470px;margin:12px auto 18px;color:var(--muted)}.toast{position:fixed;right:22px;top:18px;z-index:99;background:#253245;color:#fff;padding:11px 16px;border-radius:2px;box-shadow:0 5px 16px rgba(15,23,42,.22);opacity:0;transform:translateY(-8px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.toast.error{background:#a82d38}
