:root{--bg:#0f172a;--side:#111827;--line:#e5e7eb;--text:#111;--muted:#6b7280;--brand:#2563eb;--card:#fff}*{box-sizing:border-box}body,html{margin:0;padding:0;font-family:Microsoft YaHei,PingFang SC,sans-serif;color:var(--text);background:#f3f4f6}a{color:inherit;text-decoration:none}.shop{max-width:1100px;margin:0 auto;padding:24px}.shop-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.shop-top a{color:var(--brand);margin-left:16px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:16px;gap:16px}.card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:16px}.card input{width:100%;padding:8px;margin:8px 0;border:1px solid #d1d5db;border-radius:6px}.admin-login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-box{width:360px;background:#fff;padding:28px;border-radius:10px}.login-box h1{margin:0 0 16px;font-size:20px}.login-box input{width:100%;padding:10px;margin:8px 0;border:1px solid #d1d5db;border-radius:6px}.btn,.login-box button{background:var(--brand);color:#fff;border:0;padding:8px 14px;border-radius:6px;cursor:pointer}.btn.ghost{background:#fff;color:#111;border:1px solid #d1d5db}.btn.danger{background:#dc2626}.shell{display:flex;min-height:100vh}.side{width:232px;background:var(--side);color:#e5e7eb;overflow:auto}.side h2{font-size:15px;padding:16px;margin:0;color:#fff}.side .nav-btn,.side a{display:block;padding:8px 16px;color:#cbd5e1;font-size:13px;background:none;border:0;width:100%;text-align:left;cursor:pointer}.side .nav-btn:hover,.side a.on,.side a:hover{background:#1f2937;color:#fff}.side .lv2{padding-left:28px}.side .lv3{padding-left:40px;font-size:12px}.main{flex:1 1;flex-direction:column;min-width:0}.main,.top{display:flex}.top{background:#fff;border-bottom:1px solid var(--line);padding:12px 20px;justify-content:space-between}.page{padding:16px 20px}.tabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin-bottom:12px}.tabs button{border:0;background:none;padding:10px 16px;cursor:pointer;border-bottom:2px solid transparent}.tabs button.on{border-bottom-color:var(--brand);color:var(--brand);font-weight:600}table{width:100%;border-collapse:collapse;background:#fff;font-size:13px}td,th{border:1px solid var(--line);padding:6px 8px;text-align:left;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}th{background:#f9fafb}.toolbar{display:flex;gap:8px;margin-bottom:10px;align-items:center}.toolbar input{padding:6px 8px;border:1px solid #d1d5db;border-radius:6px}.modal{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center}.modal .box{background:#fff;width:min(720px,94vw);max-height:86vh;overflow:auto;padding:16px;border-radius:8px}.modal label{display:block;font-size:12px;color:var(--muted);margin-top:8px}.modal input,.modal textarea{width:100%;padding:6px 8px;border:1px solid #d1d5db;border-radius:4px}.pager{margin-top:10px;display:flex;gap:8px;align-items:center}.err{color:#dc2626;font-size:13px}