/* ========== 基础重置 ========== */
* { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif; background: #f5f6f8; color: #1a1a1a; font-size: 15px; line-height: 1.6; -webkit-font-smoothing: antialiased; }
input, select, textarea, button { font-family: inherit; font-size: inherit; border: none; outline: none; }
img { max-width: 100%; display: block; }
.hidden { display: none !important; }

/* ========== 通用按钮 ========== */
.btn-primary { width: 100%; height: 48px; background: linear-gradient(135deg, #07C160, #06ad56); color: #fff; border-radius: 12px; font-size: 16px; font-weight: 600; cursor: pointer; transition: all .2s; box-shadow: 0 2px 8px rgba(7,193,96,.25); }
.btn-primary:active { transform: scale(.98); opacity: .9; }
.btn-primary:disabled { background: #ccc; box-shadow: none; }
.btn-text { background: none; color: #07C160; font-size: 14px; padding: 6px 12px; cursor: pointer; }
.btn-back { background: none; color: #333; font-size: 16px; padding: 4px 8px; cursor: pointer; }

/* ========== 登录页 ========== */
.login-page { min-height: 100vh; display: flex; flex-direction: column; align-items: center; padding: 48px 28px 40px; background: linear-gradient(180deg, #e8f7ee 0%, #f5f6f8 35%); }
.login-header { text-align: center; margin-bottom: 32px; }
.login-logo { font-size: 48px; margin-bottom: 8px; width: 80px; height: 80px; background: linear-gradient(135deg, #07C160, #10d170); border-radius: 24px; display: flex; align-items: center; justify-content: center; margin: 0 auto 16px; box-shadow: 0 8px 24px rgba(7,193,96,.2); }
.login-header h1 { font-size: 24px; font-weight: 700; color: #1a1a1a; letter-spacing: 1px; }
.login-subtitle { font-size: 13px; color: #999; margin-top: 6px; line-height: 1.5; }
.login-tabs { display: flex; gap: 0; background: #fff; border-radius: 12px; padding: 4px; margin-bottom: 24px; width: 100%; max-width: 340px; box-shadow: 0 2px 8px rgba(0,0,0,.04); }
.login-tabs .tab { flex: 1; height: 40px; background: none; border-radius: 8px; font-size: 14px; color: #888; cursor: pointer; transition: all .2s; }
.login-tabs .tab.active { background: linear-gradient(135deg, #07C160, #10d170); color: #fff; font-weight: 600; }
.login-form { width: 100%; max-width: 340px; background: #fff; border-radius: 16px; padding: 28px 24px; box-shadow: 0 4px 20px rgba(0,0,0,.06); }
.form-group { margin-bottom: 18px; }
.form-group label { display: block; font-size: 13px; color: #555; margin-bottom: 6px; font-weight: 600; }
.form-group input, .form-group select { width: 100%; height: 46px; background: #f8f9fa; border: 1.5px solid #e8e8e8; border-radius: 10px; padding: 0 14px; font-size: 15px; transition: all .2s; }
.form-group input:focus, .form-group select:focus { border-color: #07C160; background: #fff; box-shadow: 0 0 0 3px rgba(7,193,96,.1); }
.login-tip { text-align: center; font-size: 12px; color: #aaa; margin-top: 18px; }
/* 登录方式切换 */
.login-method-tabs { display: flex; gap: 0; margin-bottom: 18px; border-radius: 10px; overflow: hidden; border: 1.5px solid #e8e8e8; }
.lm-tab { flex: 1; padding: 10px 0; text-align: center; font-size: 14px; font-weight: 500; color: #999; background: #f8f9fa; border: none; cursor: pointer; transition: all .2s; }
.lm-tab.active { color: #fff; background: #07C160; }
/* 分公司/门店信息卡片 */
.branch-store-card { background: #fff; border-radius: 12px; padding: 14px 16px; margin-bottom: 14px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.bsc-row { display: flex; align-items: center; gap: 12px; }
.bsc-item { flex: 1; min-width: 0; }
.bsc-label { font-size: 11px; color: #999; display: block; margin-bottom: 2px; }
.bsc-value { font-size: 15px; color: #333; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.btn-edit-bs { white-space: nowrap; color: #07C160; font-size: 13px; padding: 4px 10px; }
.bsc-edit-hint { font-size: 11px; color: #bbb; margin-top: 6px; }
.bs-divider { display: flex; align-items: center; margin: 20px 0 16px; gap: 12px; }
.bs-divider::before, .bs-divider::after { content: ''; flex: 1; height: 1px; background: #e8e8e8; }
.bs-divider span { font-size: 12px; color: #999; white-space: nowrap; }

/* ========== 产品阵列主题栏 ========== */
.product-showcase { width: 100%; max-width: 380px; margin-bottom: 16px; background: linear-gradient(135deg, #111827 0%, #1f2937 50%, #111827 100%); border-radius: 12px; padding: 8px 10px; box-shadow: 0 4px 16px rgba(0,0,0,.15); }
.showcase-header { display: flex; align-items: center; justify-content: center; gap: 8px; margin-bottom: 6px; }
.showcase-title { font-size: 11px; font-weight: 700; color: #07C160; letter-spacing: 1px; }
.showcase-subtitle { font-size: 11px; font-weight: 600; color: #e5e7eb; }
.showcase-badge { font-size: 9px; font-weight: 600; color: #fff; background: linear-gradient(135deg, #07C160, #06ad56); padding: 1px 6px; border-radius: 6px; }
.product-grid { display: flex; gap: 6px; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.product-grid::-webkit-scrollbar { display: none; }
.product-card { flex: 0 0 auto; min-width: 56px; text-align: center; background: linear-gradient(145deg, #1f2937, #374151); border-radius: 8px; padding: 6px 8px; border: 1px solid rgba(255,255,255,.06); transition: all .2s; position: relative; overflow: hidden; }
.product-card:hover { transform: translateY(-1px); border-color: rgba(7,193,96,.3); box-shadow: 0 2px 8px rgba(7,193,96,.1); }
.product-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1.5px; background: linear-gradient(90deg, transparent, #07C160, transparent); opacity: .5; }
.product-card.premium::after { content: '新'; position: absolute; top: 3px; right: 4px; font-size: 7px; font-weight: 700; color: #fff; background: #ef4444; padding: 0 4px; border-radius: 3px; }
.product-screen { font-size: 18px; line-height: 1; }
.product-info { }
.product-name { font-size: 12px; font-weight: 700; color: #f3f4f6; letter-spacing: .5px; margin-top: 2px; }
.product-size { font-size: 8px; color: #9ca3af; margin-top: 1px; font-weight: 500; white-space: nowrap; }
.product-spec { display: none; }
.product-tag { font-size: 7px; font-weight: 700; color: #07C160; background: rgba(7,193,96,.1); display: inline-block; padding: 1px 5px; border-radius: 4px; margin-top: 3px; }
.showcase-footnote { text-align: center; font-size: 9px; color: #4b5563; margin-top: 6px; font-weight: 500; }

/* ========== 顶部栏 ========== */
.top-bar { display: flex; align-items: center; justify-content: space-between; height: 52px; padding: 0 16px; background: #fff; position: sticky; top: 0; z-index: 100; box-shadow: 0 1px 3px rgba(0,0,0,.05); }
.top-title { font-size: 17px; font-weight: 600; }
.user-info { display: flex; align-items: center; gap: 8px; }
.user-name { font-size: 16px; font-weight: 600; }
.user-branch { font-size: 12px; color: #fff; background: #07C160; padding: 2px 8px; border-radius: 4px; }

/* ========== 积分卡片 ========== */
.points-card { margin: 16px; padding: 28px 20px; background: linear-gradient(135deg, #07C160 0%, #06ad56 100%); border-radius: 16px; text-align: center; color: #fff; box-shadow: 0 4px 16px rgba(7,193,96,.25); }
.points-value { font-size: 48px; font-weight: 800; line-height: 1.1; }
.points-label { font-size: 14px; opacity: .9; margin-top: 4px; }
.points-rank { font-size: 12px; opacity: .8; margin-top: 8px; }

/* ========== 区块标题 ========== */
.section-title { display: flex; align-items: center; gap: 8px; padding: 0 16px; margin: 20px 0 12px; font-size: 16px; font-weight: 600; }
.section-title::before { content: ''; width: 4px; height: 16px; background: #07C160; border-radius: 2px; }

/* ========== 任务卡片 ========== */
.task-card { margin: 0 16px 12px; background: #fff; border-radius: 14px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.task-card-header { padding: 16px; }
.task-card-title { font-size: 16px; font-weight: 600; margin-bottom: 6px; }
.task-card-date { font-size: 12px; color: #999; }
.task-card-desc { font-size: 14px; color: #666; margin-top: 8px; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.task-card-footer { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-top: 1px solid #f0f0f0; }
.task-status { font-size: 13px; }
.task-status.done { color: #07C160; }
.task-status.pending { color: #ff9800; }
.task-btn { height: 36px; padding: 0 20px; border-radius: 18px; font-size: 14px; font-weight: 600; cursor: pointer; }
.task-btn.green { background: #07C160; color: #fff; }
.task-btn.gray { background: #f0f0f0; color: #999; }

/* ========== 空状态 ========== */
.empty-state { text-align: center; padding: 40px 20px; color: #999; font-size: 14px; }
.empty-state-icon { font-size: 40px; margin-bottom: 12px; }

/* ========== 历史记录 ========== */
.history-list { padding: 0 16px; }
.history-item { display: flex; align-items: center; justify-content: space-between; background: #fff; border-radius: 10px; padding: 14px 16px; margin-bottom: 8px; box-shadow: 0 1px 3px rgba(0,0,0,.04); }
.history-item-left { flex: 1; }
.history-item-title { font-size: 14px; font-weight: 500; }
.history-item-date { font-size: 12px; color: #999; margin-top: 2px; }
.history-item-points { font-size: 13px; color: #07C160; font-weight: 600; }

/* ========== 底部导航 ========== */
.bottom-nav { position: fixed; bottom: 0; left: 0; right: 0; height: 56px; background: #fff; display: flex; border-top: 1px solid #eee; z-index: 200; max-width: 600px; margin: 0 auto; }
.nav-item { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; cursor: pointer; }
.nav-icon { font-size: 22px; }
.nav-label { font-size: 11px; color: #999; }
.nav-item.active .nav-label { color: #07C160; font-weight: 600; }

/* ========== 任务详情页 ========== */
.task-page { min-height: 100vh; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.task-content { padding: 16px; }
.task-detail-title { font-size: 20px; font-weight: 700; margin-bottom: 8px; }
.task-detail-date { font-size: 13px; color: #999; margin-bottom: 16px; }
.task-detail-desc { font-size: 15px; color: #444; line-height: 1.7; margin-bottom: 20px; padding: 16px; background: #fff; border-radius: 12px; max-height: 40vh; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.task-media { margin-bottom: 20px; max-height: 45vh; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.task-media img { width: 100%; border-radius: 12px; margin-bottom: 8px; }
.task-media video { width: 100%; border-radius: 12px; margin-bottom: 8px; }

/* ========== 答题区域 ========== */
.quiz-section { background: #fff; border-radius: 14px; padding: 20px 16px; margin-bottom: 16px; }
.quiz-intro { font-size: 15px; font-weight: 600; color: #333; margin-bottom: 16px; display: flex; align-items: center; gap: 8px; }
.quiz-intro::before { content: '📝'; font-size: 18px; }
.question-block { margin-bottom: 24px; }
.question-index { font-size: 13px; color: #07C160; font-weight: 600; margin-bottom: 6px; }
.question-text { font-size: 15px; font-weight: 500; margin-bottom: 12px; line-height: 1.6; }
.option-list { display: flex; flex-direction: column; gap: 8px; }
.option-item { display: flex; align-items: center; gap: 10px; padding: 14px 16px; background: #f7f8fa; border-radius: 10px; cursor: pointer; transition: all .15s; border: 2px solid transparent; }
.option-item:active { background: #eef0f3; }
.option-item.selected { background: #e8f7ee; border-color: #07C160; }
.option-item.correct { background: #e8f7ee; border-color: #07C160; }
.option-item.wrong { background: #fdeaea; border-color: #f5222d; }
.option-letter { width: 28px; height: 28px; border-radius: 50%; background: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; color: #666; flex-shrink: 0; border: 1px solid #e0e0e0; }
.option-item.selected .option-letter { background: #07C160; color: #fff; border-color: #07C160; }
.option-item.correct .option-letter { background: #07C160; color: #fff; border-color: #07C160; }
.option-item.wrong .option-letter { background: #f5222d; color: #fff; border-color: #f5222d; }
.option-text { flex: 1; font-size: 14px; }
.quiz-submit { margin-top: 8px; }
.quiz-result { text-align: center; padding: 24px; }
.quiz-result-icon { font-size: 56px; margin-bottom: 12px; }
.quiz-result-title { font-size: 18px; font-weight: 700; margin-bottom: 8px; }
.quiz-result-desc { font-size: 14px; color: #666; margin-bottom: 20px; }
.result-success { color: #07C160; }
.result-fail { color: #ff9800; }

/* ========== 排行榜 ========== */
.leaderboard-list { padding: 16px; }
.lb-item { display: flex; align-items: center; gap: 12px; background: #fff; border-radius: 12px; padding: 14px 16px; margin-bottom: 8px; box-shadow: 0 1px 3px rgba(0,0,0,.04); }
.lb-rank { width: 32px; text-align: center; font-size: 16px; font-weight: 700; flex-shrink: 0; }
.lb-rank.gold { color: #faad14; }
.lb-rank.silver { color: #bfbfbf; }
.lb-rank.bronze { color: #d48806; }
.lb-info { flex: 1; }
.lb-name { font-size: 15px; font-weight: 500; }
.lb-branch { font-size: 12px; color: #999; }
.lb-points { font-size: 16px; font-weight: 700; color: #07C160; }
.lb-points-label { font-size: 11px; color: #999; text-align: right; }

/* ========== 我的页面 ========== */
.mine-card { display: flex; align-items: center; gap: 16px; margin: 16px; padding: 20px; background: #fff; border-radius: 14px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.mine-avatar-wrapper { position: relative; width: 60px; height: 60px; flex-shrink: 0; cursor: pointer; }
.mine-avatar { width: 60px; height: 60px; border-radius: 50%; background: #e8f7ee; display: flex; align-items: center; justify-content: center; font-size: 28px; overflow: hidden; }
.mine-avatar-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: 50%; background: rgba(0,0,0,0.5); color: #fff; font-size: 11px; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity 0.2s; pointer-events: none; }
.mine-avatar-wrapper:hover .mine-avatar-overlay { opacity: 1; }
.mine-avatar-wrapper:active .mine-avatar-overlay { opacity: 1; }

/* 头像选择弹窗 */
.avatar-picker-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 9999; display: flex; align-items: flex-end; justify-content: center; }
.avatar-picker-overlay.hidden { display: none; }
.avatar-picker-modal { background: #fff; width: 100%; max-width: 500px; border-radius: 16px 16px 0 0; max-height: 85vh; overflow-y: auto; padding: 16px; animation: slideUp 0.25s ease; }
@keyframes slideUp { from { transform: translateY(100%); } to { transform: translateY(0); } }
.avatar-picker-header { display: flex; justify-content: space-between; align-items: center; font-size: 17px; font-weight: 700; margin-bottom: 12px; }
.avatar-picker-close { background: none; border: none; font-size: 24px; color: #999; cursor: pointer; padding: 0 4px; line-height: 1; }
.avatar-picker-actions { display: flex; gap: 8px; margin-bottom: 12px; }
.avatar-picker-divider { text-align: center; color: #ccc; font-size: 12px; margin: 8px 0; position: relative; }
.avatar-picker-divider::before, .avatar-picker-divider::after { content: ''; position: absolute; top: 50%; width: 35%; height: 1px; background: #eee; }
.avatar-picker-divider::before { left: 0; }
.avatar-picker-divider::after { right: 0; }
.avatar-picker-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; padding: 4px 0 8px; }
.avatar-picker-item { width: 100%; aspect-ratio: 1; border-radius: 50%; overflow: hidden; cursor: pointer; border: 3px solid transparent; transition: border-color 0.2s, transform 0.15s; background: #f5f5f5; }
.avatar-picker-item:hover { border-color: #07C160; transform: scale(1.08); }
.avatar-picker-item.selected { border-color: #07C160; }
.avatar-picker-item img { width: 100%; height: 100%; object-fit: cover; display: block; }
.avatar-picker-gender-label { font-size: 12px; color: #999; margin: 8px 0 4px; }

.mine-name { font-size: 18px; font-weight: 700; }
.mine-branch { font-size: 13px; color: #999; margin-top: 2px; }
.mine-stats { display: flex; margin: 0 16px; background: #fff; border-radius: 14px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.stat-item { flex: 1; text-align: center; padding: 20px 0; border-right: 1px solid #f0f0f0; }
.stat-item:last-child { border-right: none; }
.stat-value { font-size: 24px; font-weight: 700; color: #07C160; }
.stat-label { font-size: 12px; color: #999; margin-top: 4px; }

/* ========== 管理员后台 ========== */
.admin-page { min-height: 100vh; background: #f0f2f5; }
.admin-header { display: flex; align-items: center; justify-content: space-between; height: 56px; padding: 0 24px; background: #001529; color: #fff; }
.admin-header h2 { font-size: 18px; font-weight: 600; }
.admin-header .btn-text { color: #ff6b6b; }
.admin-tabs { display: flex; background: #fff; border-bottom: 1px solid #e8e8e8; overflow-x: auto; padding: 0 12px; }
.admin-tab { padding: 14px 20px; font-size: 14px; color: #666; cursor: pointer; white-space: nowrap; border-bottom: 2px solid transparent; transition: all .2s; }
.admin-tab.active { color: #07C160; border-bottom-color: #07C160; font-weight: 600; }
.admin-content { padding: 20px; max-width: 1200px; margin: 0 auto; }

/* 管理员-总览 */
.overview-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; margin-bottom: 24px; }
.overview-card { background: #fff; border-radius: 12px; padding: 24px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.overview-card-label { font-size: 13px; color: #999; margin-bottom: 8px; }
.overview-card-value { font-size: 32px; font-weight: 700; color: #1a1a1a; }
.overview-card-value.green { color: #07C160; }
.overview-card-value.orange { color: #ff9800; }
.overview-card-sub { font-size: 12px; color: #999; margin-top: 4px; }
.today-task-info { background: #fff; border-radius: 12px; padding: 20px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.today-task-info h3 { font-size: 16px; margin-bottom: 12px; }

/* 管理员-发布任务 */
.publish-form { background: #fff; border-radius: 12px; padding: 24px; max-width: 700px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.pub-group { margin-bottom: 20px; }
.pub-label { font-size: 14px; font-weight: 600; color: #333; margin-bottom: 8px; display: block; }
.pub-label .required { color: #f5222d; }
.pub-input { width: 100%; height: 44px; border: 1px solid #e0e0e0; border-radius: 8px; padding: 0 14px; font-size: 14px; }
.pub-input:focus { border-color: #07C160; }
.pub-textarea { width: 100%; min-height: 80px; border: 1px solid #e0e0e0; border-radius: 8px; padding: 12px 14px; font-size: 14px; resize: vertical; font-family: inherit; }
.upload-area { border: 2px dashed #d9d9d9; border-radius: 8px; padding: 20px; text-align: center; cursor: pointer; transition: border-color .2s; }
.upload-area:hover { border-color: #07C160; }
.upload-area input { display: none; }
.upload-tip { font-size: 13px; color: #999; margin-top: 6px; }
.upload-preview { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.upload-preview img { width: 80px; height: 80px; object-fit: cover; border-radius: 8px; }
.upload-preview .video-name { display: flex; align-items: center; gap: 6px; background: #f0f0f0; padding: 8px 12px; border-radius: 8px; font-size: 13px; }
.upload-preview .remove-btn { color: #f5222d; cursor: pointer; font-size: 13px; margin-left: 4px; }
.question-editor { border: 1px solid #e0e0e0; border-radius: 10px; padding: 16px; margin-bottom: 12px; position: relative; }
.question-editor .q-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.question-editor .q-num { font-size: 14px; font-weight: 600; color: #07C160; }
.q-delete { color: #f5222d; font-size: 13px; cursor: pointer; background: none; }
.q-option-row { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.q-option-input { flex: 1; height: 38px; border: 1px solid #e0e0e0; border-radius: 6px; padding: 0 10px; font-size: 14px; }
.q-correct-radio { width: 18px; height: 18px; cursor: pointer; }
.q-correct-label { font-size: 12px; color: #666; white-space: nowrap; }
.q-add-option { font-size: 13px; color: #07C160; cursor: pointer; background: none; padding: 4px 0; }
.pub-actions { display: flex; gap: 12px; margin-top: 24px; }
.pub-actions .btn-primary { flex: 1; }
.btn-secondary { flex: 1; height: 48px; background: #f0f0f0; color: #666; border-radius: 12px; font-size: 16px; font-weight: 600; cursor: pointer; }

/* 管理员-进度 */
.progress-toolbar { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; flex-wrap: wrap; }
.progress-select { height: 40px; border: 1px solid #e0e0e0; border-radius: 8px; padding: 0 12px; font-size: 14px; background: #fff; min-width: 200px; }
.progress-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin-bottom: 20px; }
.progress-stat { background: #fff; border-radius: 10px; padding: 18px; text-align: center; box-shadow: 0 1px 3px rgba(0,0,0,.04); }
.progress-stat-value { font-size: 28px; font-weight: 700; }
.progress-stat-label { font-size: 12px; color: #999; margin-top: 4px; }
.progress-bar-container { height: 8px; background: #f0f0f0; border-radius: 4px; margin: 12px 0; overflow: hidden; }
.progress-bar { height: 100%; background: #07C160; border-radius: 4px; transition: width .3s; }
.copy-list-btn { height: 40px; padding: 0 20px; background: #07C160; color: #fff; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; }
.not-completed-list { background: #fff; border-radius: 12px; padding: 16px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.not-completed-list h3 { font-size: 16px; margin-bottom: 12px; }
.branch-group { margin-bottom: 16px; }
.branch-title { font-size: 14px; font-weight: 600; color: #333; margin-bottom: 8px; padding-bottom: 6px; border-bottom: 1px solid #f0f0f0; }
.branch-people { display: flex; flex-wrap: wrap; gap: 8px; }
.person-tag { display: inline-flex; align-items: center; gap: 4px; background: #fff7e6; color: #d48806; padding: 4px 12px; border-radius: 16px; font-size: 13px; }
.completed-list { background: #fff; border-radius: 12px; padding: 16px; box-shadow: 0 1px 4px rgba(0,0,0,.06); margin-top: 16px; }
.completed-list h3 { font-size: 16px; margin-bottom: 12px; }
.completed-table { width: 100%; font-size: 13px; border-collapse: collapse; }
.completed-table th { text-align: left; padding: 8px 10px; background: #fafafa; color: #666; font-weight: 600; border-bottom: 1px solid #f0f0f0; }
.completed-table td { padding: 8px 10px; border-bottom: 1px solid #f5f5f5; }

/* 管理员-排行榜 */
.admin-lb-table { width: 100%; background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.06); table-layout: fixed; }
.admin-lb-table th { text-align: center; padding: 10px 4px; background: #fafafa; color: #666; font-size: 12px; font-weight: 600; white-space: nowrap; }
.admin-lb-table td { padding: 10px 4px; border-top: 1px solid #f5f5f5; font-size: 13px; text-align: center; vertical-align: middle; }
.admin-lb-table td:nth-child(1) { width: 40px; }
.admin-lb-table td:nth-child(2) { width: 60px; }
.admin-lb-table td:nth-child(3) { width: 70px; }
.admin-lb-table td:nth-child(4) { width: 60px; }
.admin-lb-table td:nth-child(5) { width: 50px; }
.admin-lb-table td:nth-child(6) { width: 60px; }
.admin-lb-table .rank-cell { font-weight: 700; }
.admin-lb-table .rank-cell.gold { color: #faad14; }
.admin-lb-table .rank-cell.silver { color: #bfbfbf; }
.admin-lb-table .rank-cell.bronze { color: #d48806; }

/* 管理员-用户列表 */
.admin-user-table { width: 100%; background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.admin-user-table th { text-align: left; padding: 12px 16px; background: #fafafa; color: #666; font-size: 13px; font-weight: 600; }
.admin-user-table td { padding: 12px 16px; border-top: 1px solid #f5f5f5; font-size: 14px; }

/* 管理员-任务列表 */
.task-list-admin { background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.task-row { display: flex; align-items: center; justify-content: space-between; padding: 16px; border-top: 1px solid #f5f5f5; }
.task-row:first-child { border-top: none; }
.task-row-info { flex: 1; }
.task-row-title { font-size: 15px; font-weight: 500; }
.task-row-meta { font-size: 12px; color: #999; margin-top: 4px; }
.task-row-actions { display: flex; gap: 8px; }
.btn-small { padding: 6px 14px; border-radius: 6px; font-size: 13px; cursor: pointer; }
.btn-small.view { background: #e8f7ee; color: #07C160; }
.btn-small.delete { background: #fdeaea; color: #f5222d; }

/* ========== Toast ========== */
.toast { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgba(0,0,0,.8); color: #fff; padding: 12px 24px; border-radius: 8px; font-size: 14px; z-index: 9999; animation: toast-fade .3s; max-width: 280px; text-align: center; }
@keyframes toast-fade { from { opacity: 0; } to { opacity: 1; } }

/* ========== 弹窗 ========== */
.modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,.5); z-index: 500; display: flex; align-items: center; justify-content: center; padding: 20px; }
.modal { background: #fff; border-radius: 14px; max-width: 400px; width: 100%; max-height: 80vh; overflow-y: auto; }
.modal-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid #f0f0f0; }
.modal-title { font-size: 16px; font-weight: 600; }
.modal-close { font-size: 22px; color: #999; cursor: pointer; background: none; line-height: 1; }
.modal-body { padding: 20px; }
.modal-body pre { white-space: pre-wrap; word-break: break-all; font-size: 14px; line-height: 1.8; font-family: inherit; }
.modal-footer { display: flex; gap: 12px; padding: 16px 20px; border-top: 1px solid #f0f0f0; }
.modal-footer .btn-primary { flex: 1; }

/* ========== 加载动画 ========== */
.loading { text-align: center; padding: 40px; color: #999; }
.spinner { width: 32px; height: 32px; border: 3px solid #f0f0f0; border-top-color: #07C160; border-radius: 50%; animation: spin .6s linear infinite; margin: 0 auto 12px; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ========== 产品系列网格 ========== */
.pk-series-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; padding: 16px; }
.pk-series-card { background: #fff; border-radius: 14px; padding: 20px 14px; text-align: center; cursor: pointer; transition: transform .15s, box-shadow .15s; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.pk-series-card:active { transform: scale(.97); box-shadow: 0 2px 8px rgba(0,0,0,.1); }
.pk-series-card.has-content { border: 2px solid #b7eb8f; }
.pk-series-icon { font-size: 36px; margin-bottom: 8px; }
.pk-series-name { font-size: 16px; font-weight: 700; color: #333; margin-bottom: 4px; }
.pk-series-arrow { font-size: 12px; color: #07C160; font-weight: 500; }
.pk-tabs { display: flex; overflow-x: auto; padding: 12px 16px; gap: 8px; background: #fff; border-bottom: 1px solid #f0f0f0; position: sticky; top: 52px; z-index: 50; }
.pk-tab { padding: 8px 16px; border-radius: 20px; font-size: 13px; color: #666; background: #f5f5f5; cursor: pointer; white-space: nowrap; border: none; }
.pk-tab.active { background: #07C160; color: #fff; font-weight: 600; }
.pk-content { padding: 16px; }
.pk-title { font-size: 18px; font-weight: 700; margin-bottom: 12px; }
.pk-desc { font-size: 14px; color: #444; line-height: 1.7; margin-bottom: 16px; padding: 12px; background: #fff; border-radius: 10px; }
.pk-media { margin-bottom: 16px; }
.pk-media img { width: 100%; border-radius: 10px; margin-bottom: 8px; }
.pk-media video { width: 100%; border-radius: 10px; }

/* ========== 样机及形象上传 ========== */
.sd-sections { padding: 16px; }
.sd-card { background: #fff; border-radius: 14px; padding: 16px; margin-bottom: 16px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.sd-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.sd-card-title { font-size: 15px; font-weight: 600; }
.sd-image { margin-bottom: 12px; }
.sd-image img { width: 100%; max-height: 300px; object-fit: cover; border-radius: 10px; }
.sd-models { margin-bottom: 12px; }
.sd-models-label { font-size: 13px; color: #666; margin-bottom: 8px; font-weight: 500; }
.sd-model-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.sd-model-input { width: 100%; height: 38px; border: 1px solid #e0e0e0; border-radius: 8px; padding: 0 10px; font-size: 13px; }
.sd-model-input:focus { border-color: #07C160; }
.sd-upload-area { border: 2px dashed #d9d9d9; border-radius: 10px; padding: 16px; text-align: center; cursor: pointer; transition: border-color .2s; margin-bottom: 0; }
.sd-upload-area:hover { border-color: #07C160; }
.sd-upload-area input { display: none; }
.sd-save-btn { height: 42px; }

/* ========== 管理员-样机形象查看 ========== */
.sd-section-filter { display: flex; overflow-x: auto; gap: 8px; margin-bottom: 16px; padding-bottom: 8px; }
.sd-filter-btn { padding: 6px 14px; border-radius: 16px; font-size: 13px; color: #666; background: #f5f5f5; cursor: pointer; border: none; white-space: nowrap; }
.sd-filter-btn.active { background: #07C160; color: #fff; font-weight: 600; }
.sd-branch-group { margin-bottom: 20px; }
.sd-branch-title { font-size: 15px; font-weight: 600; color: #333; margin-bottom: 12px; padding-bottom: 6px; border-bottom: 1px solid #f0f0f0; }
.sd-user-card { background: #fff; border-radius: 12px; padding: 14px; margin-bottom: 10px; box-shadow: 0 1px 3px rgba(0,0,0,.04); }
.sd-user-name { font-size: 14px; font-weight: 600; margin-bottom: 10px; }
.sd-user-sections { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.sd-admin-section { background: #f9f9f9; border-radius: 8px; padding: 10px; }
.sd-admin-sec-name { font-size: 12px; color: #666; margin-bottom: 4px; }
.sd-admin-models { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.sd-admin-model-tag { font-size: 11px; background: #e8f7ee; color: #07C160; padding: 2px 8px; border-radius: 4px; }

/* 管理员-样机按门店排列 */
.sd-store-group { background: #fff; border-radius: 14px; margin-bottom: 16px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.sd-store-header { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px; background: #fafafa; border-bottom: 1px solid #f0f0f0; }
.sd-store-name { font-size: 15px; font-weight: 600; display: block; }
.sd-store-branch { font-size: 12px; color: #999; margin-top: 2px; display: block; }
.sd-update-badge { font-size: 12px; padding: 3px 10px; border-radius: 10px; font-weight: 500; white-space: nowrap; }
.sd-update-badge.yes { background: #e8f7ee; color: #07C160; }
.sd-update-badge.no { background: #fff2f0; color: #f5222d; }
.sd-user-row { display: flex; align-items: flex-start; padding: 10px 16px; border-bottom: 1px solid #f8f8f8; cursor: pointer; transition: background .15s; gap: 12px; }
.sd-user-row:last-child { border-bottom: none; }
.sd-user-row:hover, .sd-user-row:active { background: #f5faf7; }
.sd-user-row-name { font-size: 14px; font-weight: 500; min-width: 60px; flex-shrink: 0; padding-top: 4px; }
.sd-user-row-sections { display: flex; gap: 8px; overflow-x: auto; flex: 1; }
.sd-admin-sec-mini { min-width: 100px; border-radius: 8px; padding: 8px; background: #f9f9f9; text-align: center; flex-shrink: 0; }
.sd-admin-sec-mini.has { background: #f0faf4; }
.sd-admin-sec-label { font-size: 11px; color: #999; margin-bottom: 4px; }
.sd-admin-thumb { width: 60px; height: 60px; object-fit: cover; border-radius: 6px; margin-bottom: 4px; }
.sd-admin-models-tiny { font-size: 10px; color: #07C160; display: flex; flex-wrap: wrap; gap: 2px; justify-content: center; }
.sd-admin-models-tiny span { background: #e8f7ee; padding: 1px 5px; border-radius: 3px; white-space: nowrap; }

/* 登录页-门店选择 */
#store-group { animation: fadeIn .2s; }
#custom-store-group { animation: fadeIn .2s; }

/* 用户首页-问候语 */
.user-greeting { font-size: 15px; font-weight: 600; color: #333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 70vw; }

@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

/* ========== 晨读任务 ========== */
.morning-reading-section { background: #fff; border-radius: 14px; padding: 20px 16px; margin-bottom: 16px; }
.mr-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; flex-wrap: wrap; gap: 8px; }
.mr-badge { display: inline-flex; align-items: center; gap: 4px; background: linear-gradient(135deg, #ff9800, #f57c00); color: #fff; padding: 4px 14px; border-radius: 16px; font-size: 13px; font-weight: 600; }
.mr-requirement { font-size: 12px; color: #999; }
.mr-text-card { background: #fffbf0; border: 1px solid #ffe58f; border-radius: 12px; padding: 12px 14px; margin-bottom: 12px; max-height: 45vh; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.mr-text-label { font-size: 13px; color: #fa8c16; font-weight: 600; margin-bottom: 8px; }
.mr-text-content { font-size: 16px; line-height: 2; color: #333; white-space: pre-wrap; word-break: break-all; }
.mr-controls { text-align: center; padding: 20px 0; }
.mr-timer { font-size: 40px; font-weight: 700; color: #333; font-variant-numeric: tabular-nums; margin-bottom: 8px; letter-spacing: 2px; }
.mr-status { font-size: 14px; color: #666; margin-bottom: 16px; min-height: 20px; }
.mr-recognizing-badge { display: inline-flex; align-items: center; gap: 6px; background: #fff3e0; color: #ff9800; padding: 4px 12px; border-radius: 16px; font-size: 12px; font-weight: 600; margin-bottom: 10px; }
.mr-recognizing-badge.mr-recognized { background: #e8f7ee; color: #07C160; }
.mr-recognizing-dot { width: 8px; height: 8px; background: #ff9800; border-radius: 50%; animation: mr-dot-pulse 1.2s infinite; }
.mr-recognized .mr-recognizing-dot { background: #07C160; animation: none; }
@keyframes mr-dot-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }

/* 方言选择 */
.mr-dialect-wrap { display: flex; align-items: center; justify-content: center; gap: 8px; margin-bottom: 12px; }
.mr-dialect-label { font-size: 13px; color: #666; }
.mr-dialect-select { padding: 4px 10px; border-radius: 8px; border: 1px solid #ddd; font-size: 13px; color: #333; background: #fafafa; outline: none; }
.mr-dialect-select:focus { border-color: #07C160; }
.mr-record-btn { width: 80px; height: 80px; border-radius: 50%; background: linear-gradient(135deg, #ff6b6b, #ee5a24); color: #fff; font-size: 15px; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 4px 16px rgba(238, 90, 36, .3); transition: transform .15s, box-shadow .15s; }
.mr-record-btn:active { transform: scale(.95); box-shadow: 0 2px 8px rgba(238, 90, 36, .2); }
.mr-stop-btn { width: 80px; height: 80px; border-radius: 50%; background: #333; color: #fff; font-size: 15px; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 4px 16px rgba(0, 0, 0, .2); transition: transform .15s; }
.mr-stop-btn:active { transform: scale(.95); }
.mr-result { background: #f9f9f9; border-radius: 12px; padding: 16px; margin-bottom: 16px; }
.mr-result-item { margin-bottom: 14px; }
.mr-result-item:last-child { margin-bottom: 0; }
.mr-result-label { font-size: 12px; color: #999; margin-bottom: 4px; }
.mr-result-text { font-size: 14px; color: #333; line-height: 1.7; max-height: 120px; overflow-y: auto; background: #fff; padding: 10px; border-radius: 8px; border: 1px solid #eee; }
.mr-result-value { font-size: 18px; font-weight: 600; }
.mr-submit { margin-top: 0; }
.mr-retry { width: 100%; }
/* 录音中脉冲动画 */
@keyframes mr-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(238, 90, 36, .4); }
  50% { box-shadow: 0 0 0 16px rgba(238, 90, 36, 0); }
}
.mr-recording .mr-record-btn { animation: mr-pulse 1.5s infinite; }

/* ========== 响应式 ========== */
@media (max-width: 600px) {
  .admin-content { padding: 12px; }
  .overview-grid { grid-template-columns: repeat(2, 1fr); }
  .completed-table { font-size: 12px; }
  .completed-table th, .completed-table td { padding: 6px 8px; }
  .task-content { padding: 12px; }
  .mr-header { margin-bottom: 10px; }
  .morning-reading-section { padding: 14px 12px; margin-bottom: 10px; }
  .mr-text-card { padding: 10px 12px; max-height: 42vh; }
  .mr-text-content { font-size: 15px; line-height: 1.8; }
  .mr-controls { padding: 12px 0; }
  .mr-timer { font-size: 32px; }
  .mr-record-btn { width: 72px; height: 72px; font-size: 14px; }
  .mr-stop-btn { width: 72px; height: 72px; font-size: 14px; }
  .mr-result { padding: 12px; }
  .task-detail-desc { padding: 12px; font-size: 14px; line-height: 1.6; }
  .task-detail-title { font-size: 18px; }
}

/* ========== 任务管理列表 ========== */
.task-list { display: flex; flex-direction: column; gap: 8px; }
.manage-task-item { display: flex; justify-content: space-between; align-items: center; background: #fff; border-radius: 12px; padding: 14px 16px; gap: 12px; }
.manage-task-item:active { background: #f9f9f9; }
.manage-task-info { flex: 1; min-width: 0; }
.manage-task-date { font-size: 12px; color: #07C160; margin-bottom: 2px; }
.manage-task-title { font-size: 15px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.manage-task-meta { font-size: 12px; color: #999; margin-top: 2px; }
.manage-task-actions { display: flex; gap: 8px; flex-shrink: 0; }

/* ========== 成长班卡片 ========== */
.class-card { background: #fff; border-radius: 12px; padding: 16px; margin-bottom: 12px; }
.class-card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 12px; }
.class-card-name { font-size: 16px; font-weight: 600; margin-bottom: 4px; }
.class-card-desc { font-size: 13px; color: #666; margin-bottom: 4px; }
.class-card-count { font-size: 12px; color: #07C160; background: #e8f7ee; display: inline-block; padding: 2px 10px; border-radius: 10px; }
.class-card-body { display: flex; gap: 8px; padding-top: 12px; border-top: 1px solid #f5f5f5; }

/* ========== 小按钮 ========== */
.btn-small { height: 32px; border-radius: 8px; font-size: 13px; padding: 0 14px; cursor: pointer; border: none; display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.btn-small.view { background: #e8f7ee; color: #07C160; }
.btn-small.view:active { opacity: 0.8; }
.btn-small.danger { background: #fff2f0; color: #f5222d; }
.btn-small.danger:active { opacity: 0.8; }

/* 管理员用户表格优化 */
.admin-user-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 12px; overflow: hidden; font-size: 13px; }
.admin-user-table th { background: #fafafa; padding: 10px 8px; text-align: left; font-weight: 600; color: #666; border-bottom: 1px solid #f0f0f0; }
.admin-user-table td { padding: 10px 8px; border-bottom: 1px solid #f5f5f5; white-space: nowrap; }
.admin-user-table tr:last-child td { border-bottom: none; }

/* 成长班进度表格 */
@media (max-width: 600px) {
  .admin-user-table { font-size: 11px; }
  .admin-user-table th, .admin-user-table td { padding: 6px 4px; }
  .manage-task-item { flex-direction: column; align-items: flex-start; }
  .manage-task-actions { width: 100%; justify-content: flex-end; }
}

/* ========== 排行榜Tab切换 ========== */
.lb-tabs { display: flex; gap: 0; border-bottom: 2px solid #eee; margin: 0 16px; }
.lb-tab { flex: 1; padding: 12px 0; background: none; border: none; font-size: 15px; font-weight: 500; color: #999; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all .2s; }
.lb-tab.active { color: #07C160; border-bottom-color: #07C160; font-weight: 700; }

/* ========== 月度任务日历 ========== */
.calendar-section { background: #fff; border-radius: 12px; padding: 16px; margin: 0 16px 16px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.calendar-header { margin-bottom: 12px; }
.calendar-title { font-size: 16px; font-weight: 700; color: #1a1a1a; margin-bottom: 4px; }
.calendar-summary { font-size: 13px; color: #999; }
.calendar-grid { display: flex; flex-direction: column; }
.calendar-row { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.calendar-row-header { margin-bottom: 4px; }
.calendar-cell { text-align: center; padding: 6px 2px; border-radius: 6px; min-height: 42px; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 13px; transition: all .15s; }
.calendar-cell-header { font-size: 12px; color: #999; font-weight: 600; padding: 4px 2px; min-height: auto; }
.calendar-cell-empty { background: transparent; }
.calendar-cell-today { background: #e8f7ee; font-weight: 700; }
.calendar-cell-future { color: #ccc; }
.calendar-cell-done { background: #e8f7ee; }
.calendar-cell-half { background: #fff7e6; }
.calendar-cell-miss { background: #fff1f0; }
.calendar-day-num { font-size: 13px; font-weight: 600; line-height: 1.2; }
.calendar-day-status { font-size: 11px; line-height: 1.2; margin-top: 1px; }
.calendar-cell-done .calendar-day-status { color: #07C160; }
.calendar-cell-miss .calendar-day-status { color: #f5222d; }
.calendar-cell-half .calendar-day-status { color: #faad14; }

.calendar-legend { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 10px; padding-top: 10px; border-top: 1px solid #f0f0f0; }
.legend-item { display: flex; align-items: center; gap: 4px; font-size: 12px; color: #999; }
.legend-dot { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.legend-dot.done { background: #e8f7ee; border: 1px solid #b7eb8f; }
.legend-dot.half { background: #fff7e6; border: 1px solid #ffd591; }
.legend-dot.miss { background: #fff1f0; border: 1px solid #ffa39e; }
.legend-dot.empty { background: #f5f5f5; border: 1px solid #d9d9d9; }
.legend-dot.future { background: #fafafa; border: 1px solid #e8e8e8; }

/* ========== 分公司完成率排行 ========== */
.br-item { display: flex; align-items: center; gap: 10px; padding: 12px 16px; background: #fff; border-bottom: 1px solid #f5f5f5; }
.br-item:last-child { border-bottom: none; }
.br-rank { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 700; color: #666; background: #f5f5f5; flex-shrink: 0; }
.br-rank-gold { background: linear-gradient(135deg, #ffd700, #ffb800); color: #fff; }
.br-rank-silver { background: linear-gradient(135deg, #c0c0c0, #a0a0a0); color: #fff; }
.br-rank-bronze { background: linear-gradient(135deg, #cd7f32, #b8731a); color: #fff; }
.br-info { flex: 1; min-width: 0; }
.br-branch { font-size: 15px; font-weight: 600; color: #1a1a1a; margin-bottom: 4px; }
.br-bar-wrap { height: 6px; background: #f0f0f0; border-radius: 3px; overflow: hidden; }
.br-bar { height: 100%; border-radius: 3px; transition: width .4s ease; min-width: 2px; }
.br-right { text-align: right; flex-shrink: 0; }
.br-rate { font-size: 18px; font-weight: 700; color: #07C160; }
.br-count { font-size: 12px; color: #999; }

.admin-branch-rate-container { background: #fff; border-radius: 12px; overflow: hidden; margin: 0 16px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }

/* ========== 排行榜Tab内容容器 ========== */
#lb-content { padding-bottom: 8px; }
#lb-content .lb-item { margin: 0 16px 8px; border-radius: 12px; }

/* ========== 月度排期日历 ========== */
.cal-wrapper { background: #fff; border-radius: 12px; padding: 16px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.cal-weekdays { display: grid; grid-template-columns: repeat(7, 1fr); text-align: center; font-size: 12px; color: #999; margin-bottom: 8px; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.cal-cell { aspect-ratio: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 8px; background: #fafafa; cursor: pointer; position: relative; transition: all .15s; font-size: 14px; color: #333; user-select: none; }
.cal-cell.empty { background: transparent; cursor: default; }
.cal-cell:hover:not(.empty) { background: #e8f7ee; }
.cal-cell.today { font-weight: 700; }
.cal-cell.today .cal-day { color: #07C160; }
.cal-cell.past { color: #bbb; cursor: default; pointer-events: none; }
.cal-cell.selected { background: #07C160; color: #fff; }
.cal-cell.selected .cal-day { color: #fff; }
.cal-cell.has-task { background: #e8f7ee; border: 2px solid #07C160; }
.cal-cell.has-task.selected { background: #07C160; border-color: #07C160; }
.cal-day { font-size: 15px; line-height: 1; }
.cal-badge { font-size: 10px; margin-top: 1px; }
.cal-legend { display: flex; gap: 16px; margin-top: 12px; font-size: 12px; color: #999; justify-content: center; }
.cal-legend-dot { display: inline-block; width: 12px; height: 12px; border-radius: 3px; vertical-align: middle; margin-right: 4px; background: #f0f0f0; }

.plan-form { background: #fff; border-radius: 12px; padding: 16px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.plan-type-label { transition: border-color .2s; }

/* ========== 补签专区 ========== */
#makeup-section { margin: 0 16px 16px; }
.makeup-quota { font-size: 12px; color: #07C160; font-weight: 400; margin-left: 8px; }
.makeup-item { display: flex; align-items: center; justify-content: space-between; background: #fff; border-radius: 10px; padding: 12px 14px; margin-bottom: 8px; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.makeup-item-info { flex: 1; min-width: 0; }
.makeup-item-date { font-size: 12px; color: #999; margin-bottom: 2px; }
.makeup-item-title { font-size: 14px; color: #333; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.makeup-btn { flex-shrink: 0; margin-left: 12px; padding: 6px 16px; border: none; border-radius: 16px; font-size: 13px; cursor: pointer; transition: all .15s; }
.makeup-btn.active { background: linear-gradient(135deg, #07C160, #06ad56); color: #fff; }
.makeup-btn.active:hover { opacity: .85; }
.makeup-btn.disabled { background: #f0f0f0; color: #bbb; cursor: not-allowed; }
.makeup-badge { display: inline-block; background: #fff3e0; color: #fa8c16; font-size: 10px; padding: 1px 6px; border-radius: 8px; margin-left: 6px; vertical-align: middle; }
.makeup-mode-badge { color: #fa8c16; font-weight: 500; }

/* ========== 赚钱主线 Slogan ========== */
.slogan-strip { margin: 0 16px 12px; padding: 10px 16px; background: linear-gradient(135deg, #e8f7ee, #f0faf4); border-left: 4px solid #07C160; border-radius: 8px; display: flex; align-items: center; gap: 8px; }
.slogan-icon { font-size: 18px; flex-shrink: 0; }
.slogan-text { font-size: 13px; color: #06ad56; font-weight: 600; line-height: 1.5; letter-spacing: .5px; }

/* ========== 每日名言 ========== */
.quote-banner { margin: 0 16px 12px; padding: 10px 14px; background: linear-gradient(135deg, rgba(7,193,96,.06), rgba(16,209,112,.04)); border-radius: 10px; display: flex; align-items: flex-start; gap: 8px; }
.quote-icon { font-size: 18px; flex-shrink: 0; line-height: 1.4; opacity: .7; }
.quote-content { flex: 1; min-width: 0; }
.quote-text { font-size: 13px; color: #555; line-height: 1.6; }

/* ========== 用户列表 - 停用行样式 ========== */
.user-inactive td { opacity: .45; }
.user-inactive .btn-small { opacity: 1 !important; }
.quote-author { font-size: 11px; color: #aaa; margin-top: 2px; }

/* ========== 验证码 ========== */
.phone-row { display: flex; gap: 8px; align-items: center; }
.phone-row input { flex: 1; }
.btn-sms { flex-shrink: 0; height: 46px; padding: 0 14px; background: #fff; border: 1px solid #07C160; border-radius: 10px; color: #07C160; font-size: 13px; font-weight: 500; cursor: pointer; white-space: nowrap; transition: all .15s; }
.btn-sms:active { background: #e8f7ee; }
.btn-sms:disabled { color: #bbb; border-color: #d9d9d9; background: #f5f5f5; cursor: not-allowed; }

/* 在册员工信息卡片 */
.user-card { display: flex; align-items: center; gap: 12px; padding: 12px 14px; background: linear-gradient(135deg, #e8f7ee, #f0fdf4); border: 1.5px solid #07C160; border-radius: 12px; margin: 12px 0; }
.user-card-icon { font-size: 28px; flex-shrink: 0; }
.user-card-body { flex: 1; min-width: 0; }
.user-card-name { font-size: 16px; font-weight: 700; color: #1a1a1a; }
.user-card-meta { font-size: 13px; color: #666; margin-top: 2px; }

/* 注册按钮 */
.btn-register { display: block; width: 100%; height: 48px; background: #fff; color: #fa8c16; border: 1.5px solid #fa8c16; border-radius: 12px; font-size: 16px; font-weight: 600; cursor: pointer; transition: all .2s; margin-top: 12px; }
.btn-register:active { background: #fff7e6; }

/* 登录提示 */
.login-hint { text-align: center; font-size: 13px; margin-top: 12px; line-height: 1.5; }

/* ========== 待审批注册（管理员） ========== */
.pending-section { background: #fff; border-radius: 12px; padding: 16px; margin-bottom: 16px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.pending-header { font-size: 15px; font-weight: 600; margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }
.pending-badge { background: #fa8c16; color: #fff; font-size: 11px; padding: 2px 8px; border-radius: 10px; }
.pending-list { display: flex; flex-direction: column; gap: 8px; }
.pending-item { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: #fffbe6; border: 1px solid #ffe58f; border-radius: 8px; flex-wrap: wrap; gap: 8px; }
.pending-item.pending-done { background: #f5f5f5; border-color: #e0e0e0; }
.pending-info { flex: 1; min-width: 0; font-size: 13px; color: #333; line-height: 1.6; }
.pending-status { display: inline-block; font-size: 11px; padding: 1px 6px; border-radius: 6px; margin-left: 6px; }
.pending-actions { display: flex; gap: 6px; flex-shrink: 0; }
.pending-actions .btn-small { padding: 4px 12px; border-radius: 6px; font-size: 12px; border: none; cursor: pointer; }
.pending-actions .btn-small.view { background: #07C160; color: #fff; }
.pending-actions .btn-small.danger { background: #ff4d4f; color: #fff; }

/* ========== 我的-门店编辑 ========== */
.mine-store-row { display: flex; align-items: center; gap: 6px; margin-top: 4px; font-size: 13px; }
.mine-store-label { color: #999; }
.mine-store-value { color: #333; font-weight: 500; }
.btn-edit-store { font-size: 12px !important; color: #07C160 !important; padding: 2px 8px !important; }

.store-edit-panel { background: #fff; border-radius: 12px; padding: 16px; margin: 12px 0; box-shadow: 0 2px 12px rgba(0,0,0,.08); }
.store-edit-title { font-size: 14px; font-weight: 600; margin-bottom: 12px; color: #333; }
.store-edit-panel select, .store-edit-panel input { width: 100%; height: 44px; border: 1px solid #e0e0e0; border-radius: 10px; padding: 0 12px; font-size: 14px; margin-bottom: 8px; }
.store-edit-panel select:focus, .store-edit-panel input:focus { border-color: #07C160; }
