:root{--bg:#f4f7fb;--ink:#182230;--muted:#667085;--blue:#2563eb;--line:#e4e9f0;--nav:#111827}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 system-ui,"Microsoft YaHei",sans-serif}header{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:fixed;inset:0 0 auto 0;z-index:2}.brand{font-size:21px;font-weight:800}.brand small{font-size:12px;color:var(--muted);margin-left:8px}aside{position:fixed;top:64px;bottom:0;width:210px;background:var(--nav);padding:22px 14px}aside a{display:block;color:#cbd5e1;text-decoration:none;padding:12px 16px;border-radius:9px;margin:4px 0}aside a:hover{background:#1f2937;color:#fff}main{margin-left:210px;padding:92px 30px 40px;max-width:1500px}.title{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.title h1{margin:0;font-size:27px}.title p{margin:5px 0;color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.card,.panel,.sitecard{background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:0 2px 8px #1e293b0b}.card{padding:22px}.card b{display:block;font-size:28px}.card span,.card small{color:var(--muted)}.panel{padding:22px;margin-bottom:20px}.panel h2{margin:0 0 16px}.checks{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;color:#176b3a}.inline{display:flex;gap:14px;align-items:end;flex-wrap:wrap}label{display:grid;gap:6px;color:#475467;min-width:220px}input,select{height:42px;border:1px solid #cfd6e1;border-radius:8px;padding:0 12px;background:#fff}input[type=file]{padding:8px}button{height:42px;border:0;border-radius:8px;padding:0 18px;background:var(--blue);color:#fff;font-weight:700;cursor:pointer}.ghost{background:#eef2f7;color:#344054;height:36px}table{width:100%;border-collapse:collapse}th,td{text-align:left;border-bottom:1px solid var(--line);padding:12px;vertical-align:top}th{font-size:12px;color:var(--muted);text-transform:uppercase}td small{display:block;color:var(--muted)}.badge{display:inline-block;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:700}.badge.ok{background:#dcfce7;color:#166534}.badge.bad{background:#fee2e2;color:#991b1b}.badge.warn{background:#fef3c7;color:#92400e}.flash{padding:13px 16px;border-radius:9px;margin-bottom:16px}.flash.success{background:#dcfce7;color:#166534}.flash.danger{background:#fee2e2;color:#991b1b}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.sitecard{display:block;padding:20px;color:inherit;text-decoration:none}.sitecard h3{margin:14px 0 4px}.sitecard p,.sitecard small{color:var(--muted)}.chips{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}.chips span{background:#eef5ff;padding:7px 10px;border-radius:8px}.empty{text-align:center;color:var(--muted);padding:35px}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#0f172a,#1d4ed8)}.loginbox{width:420px;background:#fff;border-radius:16px;padding:36px;box-shadow:0 24px 70px #0005}.loginbox h1{font-size:30px;margin:0}.loginbox p{color:var(--muted);margin-bottom:25px}.loginbox label{margin:14px 0;min-width:0}.loginbox button{width:100%;margin-top:8px}@media(max-width:900px){aside{width:150px}main{margin-left:150px}.cards,.grid,.checks{grid-template-columns:1fr 1fr}}
