/* QR 系统后台样式 */
*{box-sizing:border-box}
html,body{margin:0;padding:0;font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;background:#f5f6fa;color:#1f2937;font-size:14px}
a{color:#0d6efd;text-decoration:none}
a:hover{text-decoration:underline}
.topbar{background:#1f2937;color:#fff;padding:0 20px;height:56px;display:flex;align-items:center;gap:24px;position:sticky;top:0;z-index:10;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.topbar .brand{font-weight:700;font-size:16px}
.topbar nav{display:flex;gap:8px;flex:1}
.topbar nav a{color:#d1d5db;padding:8px 14px;border-radius:6px;transition:background .2s}
.topbar nav a:hover{background:#374151;color:#fff;text-decoration:none}
.topbar .user{display:flex;align-items:center;gap:14px;color:#d1d5db;font-size:13px}
.topbar .user a{color:#f87171}
.container{max-width:1200px;margin:24px auto;padding:0 20px}
h1,h2{margin:0 0 16px}
h1{font-size:22px}h2{font-size:18px}
.card{background:#fff;border-radius:12px;padding:22px;box-shadow:0 2px 8px rgba(0,0,0,.04);margin-bottom:18px}
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.toolbar form{display:flex;gap:8px;flex:1;flex-wrap:wrap}
.toolbar input[type=text],.toolbar select{padding:7px 10px;border:1px solid #dcdfe6;border-radius:6px;font-size:14px;background:#fff}
.toolbar input[type=text]{min-width:180px}
.btn{display:inline-block;padding:8px 16px;background:#0d6efd;color:#fff;border:0;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600}
.btn:hover{background:#0b5ed7;text-decoration:none;color:#fff}
.btn-sm{padding:4px 10px;font-size:12px}
.btn-danger{background:#dc2626}
.btn-danger:hover{background:#b91c1c}
.btn-gray{background:#6b7280}
.btn-gray:hover{background:#4b5563}
.btn-success{background:#16a34a}
.btn-success:hover{background:#15803d}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid #e5e7eb;font-size:14px}
th{background:#f9fafb;font-weight:600;color:#374151;font-size:13px}
tr:hover td{background:#f9fafb}
.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;font-weight:600}
.badge-on{background:#dcfce7;color:#15803d}
.badge-off{background:#fee2e2;color:#b91c1c}
.form-group{margin:14px 0}
.form-group label{display:block;font-weight:600;margin-bottom:6px;font-size:13px}
.form-group input[type=text],.form-group input[type=password],.form-group input[type=color],.form-group select,.form-group textarea{width:100%;padding:9px 12px;border:1px solid #dcdfe6;border-radius:6px;font-size:14px;font-family:inherit}
.form-group input[type=color]{height:42px;padding:2px;cursor:pointer}
.form-group input[type=text]:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#0d6efd;box-shadow:0 0 0 3px rgba(13,110,253,.15)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.alert{padding:10px 14px;border-radius:6px;margin:14px 0}
.alert-success{background:#f0fdf3;color:#166534;border:1px solid #bbf7d0}
.alert-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}
.alert-info{background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe}
.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}
.kpi .item{background:#fff;border-radius:12px;padding:20px;border-left:4px solid #0d6efd;box-shadow:0 2px 6px rgba(0,0,0,.04)}
.kpi .item .label{color:#6b7280;font-size:13px;margin-bottom:6px}
.kpi .item .value{font-size:28px;font-weight:700;color:#1f2937}
.kpi .item.green{border-color:#16a34a}
.kpi .item.purple{border-color:#9333ea}
.kpi .item.orange{border-color:#ea580c}
.empty{text-align:center;padding:60px 20px;color:#9ca3af}
.preview-qr{width:200px;height:200px;background:#fff;border:1px solid #e5e7eb;border-radius:6px;padding:10px;margin:14px 0}
.editor-wrap{border:1px solid #dcdfe6;border-radius:6px;overflow:hidden}
@media (max-width:768px){.form-row{grid-template-columns:1fr}.topbar{padding:0 12px;gap:8px}.topbar nav{gap:2px}.topbar nav a{padding:6px 8px;font-size:12px}.container{padding:0 12px}}
@media (max-width:480px){.topbar .brand{display:none}}
.muted{color:#6b7280;font-size:12px}