:root{--nav:#161c2d;--blue:#586cf5;--bg:#f6f7fb;--ink:#172033;--muted:#8993a4;--line:#e8ebf1}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 Inter,"Microsoft YaHei",sans-serif}button,input,select,textarea{font:inherit}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#161c2d,#34437e)}.login-card{width:min(390px,calc(100% - 32px));background:#fff;padding:38px;border-radius:16px;box-shadow:0 30px 70px #0005}.logo,.brand b{display:grid;place-items:center;background:linear-gradient(135deg,#7180ff,#5363e5);color:#fff;font-weight:900}.logo{width:48px;height:48px;border-radius:13px}.login h1{margin:18px 0 4px}.login p{color:var(--muted);margin:0 0 24px}.login label,.form label{display:block;font-size:12px;font-weight:700;color:#667085;margin:13px 0}.login input,.form input,.form select,.form textarea,.toolbar input,.toolbar select{width:100%;padding:10px 11px;border:1px solid #d8dde7;border-radius:7px;background:#fff}.login button,.primary{width:100%;border:0;border-radius:8px;background:var(--blue);color:#fff;padding:11px;font-weight:800;cursor:pointer}.error{color:#d92d20;margin-top:12px}.shell{min-height:100vh;display:flex}.shell aside{width:244px;background:var(--nav);color:#bbc4d5;padding:22px 14px;position:fixed;inset:0 auto 0 0}.brand{height:48px;display:flex;align-items:center;gap:11px;padding:0 9px;margin-bottom:24px}.brand b{width:34px;height:34px;border-radius:10px}.brand span{font-weight:800;color:#fff}.brand small{display:block;color:#7e899e;font-size:9px;letter-spacing:1px}.shell nav small{display:block;margin:18px 12px 7px;color:#69758c;font-size:10px;font-weight:800}.shell nav button{width:100%;height:43px;border:0;border-radius:8px;background:transparent;color:#bbc4d5;text-align:left;padding:0 12px;margin:2px 0;cursor:pointer}.shell nav button.active{background:linear-gradient(90deg,#5b6ffa,#5363df);color:#fff}.shell main{margin-left:244px;min-width:0;flex:1}.shell header{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px}.shell header h2{display:inline;font-size:18px}.shell header span{color:#a1a9b6;margin-left:10px}.user{display:flex;align-items:center;gap:10px}.user i{width:34px;height:34px;border-radius:50%;background:#ffe6d1;display:grid;place-items:center;font-style:normal}.user button,.secondary,.danger{border:1px solid var(--line);background:#fff;border-radius:7px;padding:7px 10px;cursor:pointer}.danger{color:#d92d20}.page{padding:30px 38px}.page-head,.card-head,.actions{display:flex;justify-content:space-between;align-items:center;gap:12px}.page-head{margin-bottom:22px}.page-head h1{margin:0;font-size:24px}.page-head p{margin:5px 0;color:var(--muted)}.page-head .primary{width:auto;padding:10px 15px}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}.stat,.card{background:#fff;border:1px solid #eef0f4;border-radius:13px;padding:20px;box-shadow:0 4px 16px #1f2a4a08}.stat span{color:#758096}.stat b{display:block;font-size:27px;margin-top:10px}.card{margin-top:18px}.toolbar{display:flex;gap:10px;margin-bottom:15px}.toolbar input{max-width:320px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:800px}th{text-align:left;color:#929cad;font-weight:600;font-size:12px;padding:11px;border-bottom:1px solid var(--line)}td{padding:13px 11px;border-bottom:1px solid #f0f2f5;font-size:12px}.badge{padding:4px 8px;border-radius:14px;background:#fff4e5;color:#b06e00}.badge.connected{background:#eaf8f2;color:#16805b}.badge.timed_out{background:#fff0f0;color:#c43d3d}.row-actions{display:flex;gap:6px}.row-actions button{padding:5px 7px}.empty{text-align:center;padding:50px;color:var(--muted)}.modal-wrap{position:fixed;inset:0;background:#101828b8;display:grid;place-items:center;padding:20px;z-index:20}.modal-wrap[hidden]{display:none}.modal{background:#fff;width:min(900px,100%);max-height:92vh;overflow:auto;border-radius:14px;padding:25px}.modal h2{margin-top:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.form .wide{grid-column:1/-1}.goods-row{display:grid;grid-template-columns:2fr .7fr .7fr 1fr auto;gap:8px;align-items:end;padding:10px;background:#f8f9fb;margin:8px 0}.goods-row button{height:39px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.modal-actions .primary{width:auto}.toast{position:fixed;right:24px;bottom:24px;background:#202941;color:#fff;padding:12px 16px;border-radius:8px;opacity:0;transform:translateY(10px);transition:.2s}.toast.show{opacity:1;transform:none}.rate-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.rate{border:1px solid var(--line);border-radius:10px;padding:14px}.rate input{width:100%;padding:7px;border:1px solid var(--line);margin:8px 0}@media(max-width:900px){.shell aside{width:72px}.brand span,.shell nav small,.shell nav button{font-size:0}.shell nav button{font-size:18px;text-align:center}.shell main{margin-left:72px}.stats{grid-template-columns:repeat(2,1fr)}.rate-grid{grid-template-columns:1fr 1fr}}@media(max-width:600px){.page,.shell header{padding:20px 15px}.form-grid{grid-template-columns:1fr}.goods-row{grid-template-columns:1fr 1fr}.stats,.rate-grid{grid-template-columns:1fr}}
