:root{--green:#28616e;--green-dark:#1c4751;--green-soft:#e3eef0;--yellow:#f8bc40;--yellow-soft:#fff4d6;--red:#b2232e;--red-soft:#fbeaeb;--egg:#f4eedb;--bg:#f7f3e8;--line:#eae4d3;--line2:#f1ecdf;--border:#e3dcc9;--ink:#1f2f33;--muted:#7a8a8f;--ok:#1e6b3a;--ok-soft:#e0f2e6;--warn:#7a5300}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);margin:0;font-family:Jost,Century Gothic,system-ui,sans-serif;font-size:14px}a{color:var(--green);text-decoration:none}button,input,select,textarea{color:var(--ink);font-family:inherit;font-size:14px}input,select,textarea{border:1px solid var(--border);background:#fff;border-radius:12px;outline:none;width:100%;padding:10px 14px}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft)}input[type=checkbox]{width:18px;height:18px;accent-color:var(--green);cursor:pointer;padding:0}label{color:var(--muted);flex-direction:column;gap:6px;font-size:13px;font-weight:500;display:flex}label>span{color:var(--ink)}.btn{background:var(--green);color:var(--egg);cursor:pointer;white-space:nowrap;border:0;border-radius:12px;align-items:center;gap:8px;padding:10px 16px;font-weight:600;display:inline-flex}.btn:hover{background:var(--green-dark)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.ghost{color:var(--ink);border:1px solid var(--border);background:#fff}.btn.ghost:hover{background:var(--egg)}.btn.yellow{background:var(--yellow);color:var(--ink)}.btn.danger{background:var(--red-soft);color:var(--red)}.btn.sm{border-radius:10px;padding:6px 12px;font-size:13px}.app{min-height:100vh;display:flex}.nav{background:var(--green);width:236px;color:var(--egg);flex-direction:column;flex:0 0 236px;height:100vh;display:flex;position:sticky;top:0}.nav .brand{align-items:center;gap:12px;padding:22px 20px 14px;display:flex}.nav .brand .logo{background:var(--red);color:#fff;border-radius:12px;justify-content:center;align-items:center;width:40px;height:40px;font-size:16px;font-weight:700;display:flex}.nav .brand b{font-size:16px;display:block}.nav .brand small{opacity:.75;font-size:12px}.nav .group{letter-spacing:1px;text-transform:uppercase;opacity:.6;padding:14px 20px 4px;font-size:11px}.nav a{color:var(--egg);opacity:.85;align-items:center;gap:10px;padding:10px 20px;font-weight:500;display:flex}.nav a:hover{opacity:1;background:#ffffff0f}.nav a.active{opacity:1;border-left:3px solid var(--yellow);background:#ffffff24;padding-left:17px}.nav .foot{border-top:1px solid #ffffff1f;margin-top:auto;padding:16px 20px;font-size:13px}.nav .foot select{color:var(--egg);background:#ffffff1a;border-color:#0000;border-radius:10px;margin-top:8px;padding:8px 10px}.nav .foot select option{color:var(--ink)}.nav .foot button{color:var(--egg);opacity:.7;cursor:pointer;background:0 0;border:0;padding:8px 0 0}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--line);background:#fff;flex-wrap:wrap;align-items:center;gap:14px;padding:16px 28px;display:flex}.topbar h1{margin:0;font-size:22px;font-weight:700}.topbar .sub{color:var(--muted);font-size:13px}.topbar .actions{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.content{flex-direction:column;gap:18px;padding:22px 28px;display:flex}.card{border:1px solid var(--line);background:#fff;border-radius:16px}.card .head{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:14px 18px;font-weight:700;display:flex}.card .body{padding:18px}.stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;display:grid}.stat{border:1px solid var(--line);background:#fff;border-radius:16px;flex-direction:column;gap:2px;padding:16px 18px;display:flex}.stat .l{color:var(--muted);font-size:13px}.stat .v{font-size:26px;font-weight:700}.stat .s{color:var(--muted);font-size:12px}.stat.green{background:var(--green);color:var(--egg)}.stat.green .l,.stat.green .s{color:#cfe0e4}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--line);white-space:nowrap;padding:12px 16px;font-size:12px;font-weight:600}td{border-bottom:1px solid var(--line2);vertical-align:middle;padding:11px 16px}tr:hover td{background:#fcfaf4}td.r,th.r{text-align:right}td.mono{font-family:ui-monospace,Menlo,monospace;font-size:13px}.tag{background:var(--egg);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-block}.tag.ok{background:var(--ok-soft);color:var(--ok)}.tag.warn{background:var(--yellow-soft);color:var(--warn)}.tag.bad{background:var(--red-soft);color:var(--red)}.tag.blue{background:var(--green-soft);color:var(--green)}.muted{color:var(--muted)}.small{font-size:12px}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.grid2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.grid3{grid-template-columns:1fr 1fr 1fr;gap:14px;display:grid}@media (width<=760px){.grid2,.grid3{grid-template-columns:1fr}.nav{display:none}.content,.topbar{padding:14px 16px}}.modal-bg{z-index:50;background:#1f2f3373;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:18px;flex-direction:column;width:100%;max-width:640px;max-height:92vh;display:flex;overflow:auto}.modal .head{border-bottom:1px solid var(--line);align-items:center;padding:18px 22px;display:flex}.modal .head h2{margin:0;font-size:18px}.modal .head button{cursor:pointer;color:var(--muted);background:0 0;border:0;margin-left:auto;font-size:22px}.modal .body{flex-direction:column;gap:14px;padding:22px;display:flex}.modal .foot{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;padding:14px 22px;display:flex}.err{background:var(--red-soft);color:var(--red);border-radius:12px;padding:10px 14px;font-size:13px}.info{background:var(--green-soft);color:var(--green-dark);border-radius:12px;padding:10px 14px;font-size:13px}.progress{background:var(--line2);border-radius:999px;height:10px;overflow:hidden}.progress>div{background:var(--yellow);height:100%;transition:width .2s}.empty{text-align:center;color:var(--muted);padding:40px}.login{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login .box{border:1px solid var(--line);background:#fff;border-radius:20px;flex-direction:column;gap:16px;width:100%;max-width:400px;padding:34px;display:flex}.priv-grid td,.priv-grid th{text-align:center;padding:8px 10px}.priv-grid td:first-child,.priv-grid th:first-child{text-align:left}
