/* 商家名片 SaaS 总后台样式 */
* { margin:0; padding:0; box-sizing:border-box; }
:root {
  --primary:#4f8cff; --primary-dark:#2b6cb0;
  --success:#67c23a; --warning:#e6a23c; --danger:#f56c6c;
  --text:#303133; --text-2:#606266; --text-3:#909399;
  --border:#dcdfe6; --bg:#f0f2f5; --bg-2:#f8f9fb;
}
body { font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif; background:var(--bg); color:var(--text); font-size:14px; }
a { color:var(--primary); text-decoration:none; }

/* ========== 登录页 ========== */
.login-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; background:linear-gradient(135deg,#4f8cff,#2b6cb0); }
.login-box { background:#fff; border-radius:12px; padding:40px; width:380px; box-shadow:0 12px 40px rgba(0,0,0,.15); }
.login-box h1 { font-size:20px; color:var(--primary-dark); text-align:center; margin-bottom:6px; }
.login-box .sub { font-size:13px; color:var(--text-3); text-align:center; margin-bottom:28px; }
.login-box .form-item { margin-bottom:16px; }
.login-box input { width:100%; height:42px; border:1px solid var(--border); border-radius:8px; padding:0 14px; font-size:14px; outline:none; }
.login-box input:focus { border-color:var(--primary); }
.login-box .btn { width:100%; height:44px; background:var(--primary); color:#fff; border:none; border-radius:8px; font-size:15px; cursor:pointer; margin-top:8px; }
.login-box .btn:hover { background:var(--primary-dark); }
.login-box .err { color:var(--danger); font-size:13px; text-align:center; margin-bottom:12px; min-height:18px; }

/* ========== 主框架 ========== */
.layout { display:flex; min-height:100vh; }
.sidebar { width:200px; background:#1f2937; color:#cbd5e0; flex-shrink:0; transition:width .2s; }
.sidebar .logo { padding:20px; font-size:16px; font-weight:700; color:#fff; border-bottom:1px solid #374151; }
.sidebar .menu { padding:12px 0; }
.sidebar .menu a { display:flex; align-items:center; gap:10px; padding:12px 20px; color:#cbd5e0; font-size:14px; border-left:3px solid transparent; cursor:pointer; }
.sidebar .menu a:hover { background:#374151; color:#fff; }
.sidebar .menu a.active { background:#374151; color:#fff; border-left-color:var(--primary); }
.sidebar .menu a .ico { width:18px; text-align:center; }
.main { flex:1; display:flex; flex-direction:column; overflow:hidden; }
.topbar { height:56px; background:#fff; display:flex; align-items:center; justify-content:space-between; padding:0 24px; border-bottom:1px solid var(--border); box-shadow:0 1px 4px rgba(0,0,0,.04); }
.topbar .crumb { font-size:15px; font-weight:600; }
.topbar .user { display:flex; align-items:center; gap:12px; font-size:13px; color:var(--text-2); }
.topbar .user .logout { color:var(--danger); cursor:pointer; }
.content { flex:1; padding:24px; overflow-y:auto; }

/* ========== 卡片/面板 ========== */
.card { background:#fff; border-radius:8px; padding:20px; box-shadow:0 1px 4px rgba(0,0,0,.04); margin-bottom:20px; }
.card-title { font-size:16px; font-weight:600; margin-bottom:16px; display:flex; justify-content:space-between; align-items:center; }
.toolbar { display:flex; gap:12px; margin-bottom:16px; align-items:center; flex-wrap:wrap; }
.toolbar .search { flex:1; min-width:200px; height:36px; border:1px solid var(--border); border-radius:6px; padding:0 12px; outline:none; }
.toolbar .search:focus { border-color:var(--primary); }

/* 统计卡片 */
.stat-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:16px; }
.stat-box { background:#fff; border-radius:8px; padding:20px; box-shadow:0 1px 4px rgba(0,0,0,.04); }
.stat-box .label { font-size:13px; color:var(--text-3); margin-bottom:8px; }
.stat-box .value { font-size:28px; font-weight:700; color:var(--primary-dark); }
.stat-box .value.green { color:var(--success); } .stat-box .value.orange { color:var(--warning); } .stat-box .value.red { color:var(--danger); }

/* 表格 */
table { width:100%; border-collapse:collapse; }
table th, table td { padding:12px; text-align:left; border-bottom:1px solid var(--border); font-size:14px; }
table th { background:var(--bg-2); font-weight:600; color:var(--text-2); }
table tr:hover { background:var(--bg-2); }
.avatar-sm { width:36px; height:36px; border-radius:50%; object-fit:cover; vertical-align:middle; }
.tag { display:inline-block; padding:2px 8px; border-radius:4px; font-size:12px; }
.tag.on { background:#e1f3d8; color:var(--success); } .tag.off { background:#fde2e2; color:var(--danger); }

/* 按钮 */
.btn { display:inline-flex; align-items:center; gap:4px; padding:7px 16px; border:1px solid var(--border); border-radius:6px; background:#fff; color:var(--text-2); font-size:13px; cursor:pointer; transition:.2s; }
.btn:hover { color:var(--primary); border-color:var(--primary); }
.btn.primary { background:var(--primary); color:#fff; border-color:var(--primary); }
.btn.primary:hover { background:var(--primary-dark); }
.btn.sm { padding:4px 10px; font-size:12px; }
.btn.danger { color:var(--danger); } .btn.danger:hover { background:#fef0f0; border-color:var(--danger); }

/* 表单 */
.form-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.form-grid .full { grid-column:1/-1; }
.form-item label { display:block; font-size:13px; color:var(--text-2); margin-bottom:6px; font-weight:600; }
.form-item label .req { color:var(--danger); }
.form-item input, .form-item textarea, .form-item select { width:100%; border:1px solid var(--border); border-radius:6px; padding:8px 12px; font-size:14px; outline:none; font-family:inherit; }
.form-item input:focus, .form-item textarea:focus, .form-item select:focus { border-color:var(--primary); }
.form-item textarea { resize:vertical; min-height:80px; }
.form-tip { font-size:12px; color:var(--text-3); margin-top:4px; }

/* 技能标签 */
.skill-input-wrap { border:1px solid var(--border); border-radius:6px; padding:6px; display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.skill-input-wrap:focus-within { border-color:var(--primary); }
.skill-tag { display:inline-flex; align-items:center; gap:4px; background:#ecf5ff; color:var(--primary); padding:3px 10px; border-radius:4px; font-size:13px; }
.skill-tag .x { cursor:pointer; font-weight:700; }
.skill-input-wrap input { border:none; outline:none; flex:1; min-width:120px; padding:4px; }

/* 图片上传 */
.img-uploader { display:flex; flex-wrap:wrap; gap:10px; }
.img-uploader .img-box { width:100px; height:100px; border:1px dashed var(--border); border-radius:6px; position:relative; overflow:hidden; }
.img-uploader .img-box img { width:100%; height:100%; object-fit:cover; }
.img-uploader .img-box .del { position:absolute; top:2px; right:2px; background:rgba(0,0,0,.5); color:#fff; width:18px; height:18px; border-radius:50%; display:flex; align-items:center; justify-content:center; cursor:pointer; font-size:12px; }
.img-uploader .pick { width:100px; height:100px; border:1px dashed var(--border); border-radius:6px; display:flex; align-items:center; justify-content:center; color:var(--text-3); cursor:pointer; font-size:24px; }
.img-uploader .pick:hover { border-color:var(--primary); color:var(--primary); }

/* 分页 */
.pager { display:flex; gap:6px; justify-content:center; margin-top:16px; align-items:center; }
.pager .btn { min-width:32px; justify-content:center; }

/* 弹窗 */
.modal-mask { position:fixed; inset:0; background:rgba(0,0,0,.5); display:flex; align-items:flex-start; justify-content:center; z-index:100; padding:40px 16px; overflow-y:auto; }
.modal { background:#fff; border-radius:10px; width:760px; max-width:100%; padding:24px; }
.modal-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; }
.modal-head h3 { font-size:18px; }
.modal-head .close { font-size:22px; cursor:pointer; color:var(--text-3); }
.modal-foot { margin-top:20px; text-align:right; }
.modal-foot .btn { margin-left:8px; }

/* 通用 */
.empty { text-align:center; padding:40px; color:var(--text-3); }
.muted { color:var(--text-3); }
.hide { display:none !important; }
.text-c { text-align:center; }
.mt8{margin-top:8px}.mt16{margin-top:16px}.mb16{margin-bottom:16px}
.row { display:flex; gap:8px; align-items:center; }
