:root{color:#182036;--nav:#182036;--primary:#4858c9;--primary-dark:#3645aa;--line:#e1e4eb;--muted:#70788c;--danger:#b93b45;--warning:#ac6714;background:#f4f5f8;font-family:Inter,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:1050px;margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}h1,h2,h3,h4,p{margin-top:0}.full-loading{min-height:100vh;color:var(--muted);place-items:center;display:grid}.login-shell{background:radial-gradient(circle at 30% 10%,#dfe3ff,#0000 35%),#f3f4f9;place-items:center;min-height:100vh;display:grid}.login-card{background:#fff;border-radius:20px;gap:18px;width:420px;padding:40px;display:grid;box-shadow:0 25px 70px #1b234b24}.admin-mark{background:var(--nav);color:#fff;border-radius:13px;place-items:center;width:48px;height:48px;font-size:22px;font-weight:900;display:grid}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--primary);margin:0;font-size:12px;font-weight:800}.muted{color:var(--muted)}label{gap:7px;font-size:14px;font-weight:700;display:grid}label small{color:var(--muted);font-weight:400}input{border:1px solid #cfd3dd;border-radius:9px;outline:none;padding:11px 12px}input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4858c91f}.primary,.secondary,.warning,.danger{border:0;border-radius:9px;padding:10px 14px;font-weight:750}.primary{background:var(--primary);color:#fff}.primary:hover{background:var(--primary-dark)}.secondary{color:#31394e;background:#edf0f5}.warning{color:#8c5510;background:#fff1dc}.danger{color:var(--danger);background:#fff0f1}.small{padding:8px 11px}.alert{color:#354191;background:#eef0fb;border-radius:9px;margin-bottom:14px;padding:12px 14px}.alert.error{color:#9d3038;background:#fff0f1}.admin-shell{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.admin-sidebar{background:var(--nav);color:#fff;flex-direction:column;width:220px;padding:22px 14px;display:flex;position:fixed;inset:0 auto 0 0}.admin-brand{align-items:center;gap:11px;padding:0 8px 24px;display:flex}.admin-brand>span{background:#5263d3;border-radius:10px;place-items:center;width:38px;height:38px;font-weight:900;display:grid}.admin-brand strong,.admin-brand small{display:block}.admin-brand small{color:#aeb5c9;margin-top:2px}.admin-sidebar nav{gap:5px;display:grid}.admin-sidebar nav button,.logout{color:#c8cede;text-align:left;background:0 0;border:0;border-radius:9px;padding:11px 13px}.admin-sidebar nav button.active{color:#fff;background:#2a3552}.logout{margin-top:auto}.admin-main{grid-column:2;min-height:100vh;padding:22px}.users-layout{grid-template-columns:300px minmax(700px,1fr);gap:16px;height:calc(100vh - 44px);display:grid}.user-list,.detail,.role-side,.audit-page{border:1px solid var(--line);background:#fff;border-radius:13px}.user-list{padding:16px;overflow:auto}.list-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.list-head h2{margin:0;font-size:18px}.search{width:100%;margin-bottom:13px}.user-row{text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:11px;width:100%;padding:10px;display:flex}.user-row.active,.user-row:hover{background:#f0f2fa}.user-avatar{color:#4656ba;background:#e5e8f8;border-radius:50%;place-items:center;width:36px;height:36px;font-weight:800;display:grid}.user-row strong,.user-row small{display:block}.user-row small{color:var(--muted);margin-top:3px;font-size:12px}.list-empty,.empty{color:var(--muted);place-items:center;min-height:200px;display:grid}.detail{padding:22px;overflow:auto}.detail-header,.panel-title{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.detail-header{border-bottom:1px solid var(--line);margin-bottom:18px;padding-bottom:18px}.detail-header h2{margin-bottom:4px}.detail-header p,.panel p{color:var(--muted);margin-bottom:0;font-size:13px}.title-line{align-items:center;gap:10px;display:flex}.status{color:#277454;background:#e9f6ef;border-radius:999px;padding:5px 8px;font-size:12px}.status.suspended{color:var(--danger);background:#fff0f1}.status.pending_password_change{color:#8a5b1c;background:#fff5e6}.header-actions,.actions,.inline{gap:9px;display:flex}.panel{border:1px solid var(--line);border-radius:11px;margin-top:14px;padding:18px}.panel h3{margin-bottom:5px;font-size:16px}.quota-row{grid-template-columns:170px 170px auto;align-items:end;gap:12px;margin-top:16px;display:grid}.checks{flex-wrap:wrap;gap:10px;margin-top:15px;display:flex}.check{border:1px solid var(--line);border-radius:9px;grid-template-columns:none;align-items:center;gap:8px;padding:9px 11px;font-weight:500;display:flex}.check input{width:auto}.check strong,.check small{display:block}.check small{color:var(--muted);font-size:12px}.permission-group{margin-top:20px}.permission-group h4{background:#f6f7fa;border-radius:7px;margin-bottom:4px;padding:8px 10px}.permission-row{border-bottom:1px solid #eef0f3;justify-content:space-between;align-items:center;gap:20px;padding:10px 4px;display:flex}.permission-row strong,.permission-row small{display:block}.permission-row small{color:var(--muted);margin-top:3px;font-size:12px}.segmented{background:#eef0f4;border-radius:8px;padding:3px;display:flex}.segmented button{color:#5f6779;background:0 0;border:0;border-radius:6px;padding:7px 9px;font-size:12px}.segmented button.active{color:#30384e;background:#fff;box-shadow:0 1px 4px #0000001a}.segmented button.allow.active{color:#1d7452}.segmented button.deny.active{color:var(--danger)}.device-row{border-top:1px solid var(--line);align-items:center;gap:10px;padding:11px 0;display:flex}.device-row:first-of-type{margin-top:12px}.device-row>div{flex:1}.device-row strong,.device-row small{display:block}.device-row small{color:var(--muted);font-size:12px}.online-dot{background:#aeb3bd;border-radius:50%;width:9px;height:9px}.online-dot.on{background:#2aa36f;box-shadow:0 0 0 4px #e0f4eb}.danger-link{color:var(--danger);background:0 0;border:0;font-weight:700}.backdrop{z-index:50;background:#12182a7a;place-items:center;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:15px;gap:17px;width:620px;max-height:90vh;padding:24px;display:grid;overflow:auto}.modal-head{justify-content:space-between;display:flex}.modal-head h2{margin-bottom:4px}.modal-head p{color:var(--muted);margin:0}.close{background:0 0;border:0;font-size:25px}.two{grid-template-columns:1fr 1fr;gap:13px;display:grid}.inline input{flex:1}.actions{justify-content:flex-end}fieldset{border:1px solid var(--line);border-radius:10px}fieldset .check{margin:5px;display:inline-flex}.roles-page{grid-template-columns:260px 1fr;gap:16px;height:calc(100vh - 44px);display:grid}.role-side{padding:16px;overflow:auto}.role-side>button{text-align:left;background:0 0;border:0;border-radius:8px;width:100%;padding:10px}.role-side>button.active{color:var(--primary);background:#eef0fb;font-weight:700}.new-role{border-top:1px solid var(--line);gap:9px;margin-top:17px;padding-top:17px;display:grid}.new-role h3{font-size:14px}.audit-page{min-height:calc(100vh - 44px);padding:24px}.page-title p{color:var(--muted)}.table-wrap{border:1px solid var(--line);border-radius:10px;overflow:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);padding:12px;font-size:13px}th{color:#596176;background:#f6f7fa}@media (max-width:1200px){.quota-row{grid-template-columns:1fr 1fr}.quota-row button{grid-column:1/-1;justify-self:start}.permission-row{flex-direction:column;align-items:flex-start}.segmented{align-self:stretch}.segmented button{flex:1}}body{min-width:320px}:focus-visible{outline-offset:2px;outline:3px solid #4858c959}.quota-account-list{gap:8px;max-height:360px;display:grid;overflow:auto}.password-modal input[readonly]{letter-spacing:.03em;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:16px}@media (max-width:1050px){.admin-shell{display:block}.admin-sidebar{z-index:20;flex-direction:row;align-items:center;gap:10px;width:auto;min-height:64px;padding:10px 14px;position:sticky;top:0}.admin-brand{padding:0}.admin-sidebar nav{flex:1;display:flex}.admin-sidebar .logout{margin:0}.admin-main{padding:14px}.users-layout,.roles-page{grid-template-columns:260px minmax(0,1fr);height:auto;min-height:calc(100vh - 92px)}}@media (max-width:760px){.admin-brand div,.admin-sidebar .logout{display:none}.admin-sidebar nav button{text-align:center;flex:1;padding:9px 6px}.users-layout,.roles-page{grid-template-columns:1fr}.user-list,.role-side{max-height:320px}.detail-header,.panel-title{flex-direction:column}.header-actions{flex-wrap:wrap}.two,.quota-row{grid-template-columns:1fr}.modal{width:min(94vw,620px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
