:root{--bg:#f4f7f5;--panel:#fff;--ink:#16372c;--muted:#6f7f78;--line:#dce7e1;--brand:#087a57;--brand2:#0a5f48;--nav:#0c4536;--ok:#0a7a56;--warn:#9b6a09;--danger:#a72a2a;--shadow:0 16px 48px rgba(15,62,47,.10)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg)}a{color:inherit}.shell{min-height:100vh;display:grid;grid-template-columns:250px minmax(0,1fr)}.sidebar{background:linear-gradient(180deg,#0d4d3b 0%,#0a3d30 100%);color:#eaf6f1;padding:24px 18px;position:sticky;top:0;height:100vh}.brand{display:flex;gap:12px;align-items:center;padding:6px 6px 24px}.brandmark{width:42px;height:42px;border-radius:13px;background:#fff;color:#0d4d3b;display:grid;place-items:center;font-weight:900;box-shadow:0 8px 24px rgba(0,0,0,.18)}.brand small{display:block;color:#a9c9bd;letter-spacing:.08em;font-size:10px}.brand strong{font-size:15px}.nav{display:grid;gap:7px}.nav a{display:flex;gap:10px;align-items:center;text-decoration:none;padding:11px 12px;border-radius:11px;color:#dceee7}.nav a.active,.nav a:hover{background:rgba(255,255,255,.11);color:#fff}.sidefoot{position:absolute;left:18px;right:18px;bottom:20px;color:#9dc2b4;font-size:12px}.main{min-width:0}.topbar{height:72px;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:10;backdrop-filter:blur(10px)}.topbar h1{font-size:20px;margin:0}.topbar .sub{font-size:12px;color:var(--muted);margin-top:3px}.toplinks{display:flex;gap:10px;align-items:center}.pill{display:inline-flex;align-items:center;gap:7px;padding:7px 11px;border:1px solid #cfe1d9;background:#f8fbf9;border-radius:999px;font-size:12px}.dot{width:8px;height:8px;border-radius:50%;background:#16b47e}.wrap{padding:26px 28px 40px;max-width:1500px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.stat{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 8px 28px rgba(15,62,47,.05)}.stat .k{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.stat .v{font-size:28px;font-weight:800;margin-top:8px}.card{background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:0 10px 34px rgba(15,62,47,.06);margin-bottom:18px;overflow:hidden}.cardhead{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.cardhead h2{font-size:16px;margin:0}.cardbody{padding:18px 20px}.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.full{grid-column:1/-1}label{font-size:12px;font-weight:750;color:#36594d}input,select,textarea{width:100%;margin-top:6px;border:1px solid #cbdcd4;border-radius:11px;background:#fff;padding:11px 12px;font:inherit;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:#17a97b;box-shadow:0 0 0 3px rgba(23,169,123,.11)}button,.btn{border:0;border-radius:10px;padding:10px 13px;font-weight:760;cursor:pointer;font:inherit;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px}.primary{background:linear-gradient(135deg,#0b8f66,#087451);color:#fff}.mutedbtn{background:#eef5f2;color:#275648;border:1px solid #d7e6df}.danger{background:#fff0f0;color:#9f2222;border:1px solid #f1cece}.warn{background:#fff7e6;color:#8d620b;border:1px solid #f0dfb8}.actions{display:flex;flex-wrap:wrap;gap:7px}.flash{white-space:pre-wrap;padding:14px 16px;border-radius:13px;margin-bottom:18px;background:#eaf8f1;border:1px solid #bde3d1;color:#075b42}.flash.bad{background:#fff0f0;border-color:#f1cece;color:#912020}.filters{display:flex;gap:10px;flex-wrap:wrap}.filters input,.filters select{width:auto;min-width:180px;margin:0}.tablewrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{position:sticky;top:0;background:#f3f8f5;color:#48665b;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.table th,.table td{padding:12px 13px;border-bottom:1px solid #e7eeeb;text-align:left;vertical-align:top}.table tr:hover td{background:#fbfdfc}.badge{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800}.b-active{background:#e6f7ef;color:#087452}.b-suspended{background:#fff5dc;color:#92620a}.b-revoked{background:#fdeaea;color:#9c2424}.small{font-size:11px;color:var(--muted);line-height:1.45}.device{background:#f7faf8;border:1px solid #e1ebe6;border-radius:11px;padding:9px 10px;margin-top:7px}.code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;background:#f1f5f3;border-radius:7px;padding:3px 6px}.empty{padding:34px;text-align:center;color:var(--muted)}.loginpage{min-height:100vh;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 18% 15%,#dff5eb 0,transparent 32%),linear-gradient(135deg,#eef6f2,#f7faf8)}.loginbox{width:min(460px,100%);background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);overflow:hidden}.loginhero{background:linear-gradient(135deg,#0c4a39,#0b6e50);color:#fff;padding:26px}.loginhero h1{margin:5px 0 0;font-size:22px}.loginhero p{margin:8px 0 0;color:#cfe8df;font-size:13px}.loginbody{padding:24px}.loginbody button{width:100%;margin-top:8px}.err{padding:11px 12px;border-radius:10px;background:#fff0f0;color:#922;border:1px solid #f0cccc;margin-bottom:14px}.setup{max-width:900px;margin:40px auto;padding:0 18px}.notice{padding:13px 15px;border-radius:12px;background:#fff7df;border:1px solid #eedda8;color:#73520a}.okbox{padding:13px 15px;border-radius:12px;background:#eaf8f1;border:1px solid #bde3d1;color:#075b42}.apiurl{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;word-break:break-all;padding:12px;background:#f3f7f5;border:1px dashed #bcd4c9;border-radius:10px}
@media(max-width:1050px){.shell{grid-template-columns:1fr}.sidebar{display:none}.stats{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:repeat(2,1fr)}.topbar{padding:0 18px}.wrap{padding:18px}}
@media(max-width:650px){.stats,.grid{grid-template-columns:1fr}.full{grid-column:auto}.wrap{padding:12px}.topbar{height:auto;padding:14px}.toplinks{display:none}.cardbody,.cardhead{padding:14px}.filters input,.filters select{width:100%}}
