@import url('theme.css');

*, *::before, *::after { box-sizing: border-box; }

html, body {
 margin: 0;
 padding: 0;
 min-height: 100%;
 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
 background: #f7f8fa;
 color: #323233;
}

a { color: inherit; text-decoration: none; }

.page { min-height: 100vh; background: #f7f8fa; }
.page.with-tabbar { padding-bottom: calc(50px + env(safe-area-inset-bottom)); }
.page-content { padding: 12px; }

.nav-bar {
 display: flex; align-items: center; justify-content: space-between;
 height: 46px; padding: 0 12px; background: #fff; border-bottom: 1px solid #eee;
 position: sticky; top: 0; z-index: 100;
}
.nav-back { border: none; background: none; color: #2c5af0; font-size: 14px; flex-shrink: 0; min-width: 48px; text-align: left; padding: 0; }
.nav-title { font-weight: 600; font-size: 16px; flex: 1; text-align: center; }
.nav-spacer { width: 48px; flex-shrink: 0; }
.nav-home { color: #2c5af0; font-size: 14px; white-space: nowrap; flex-shrink: 0; }

.tab-bar {
 position: fixed; left: 0; right: 0; bottom: 0; z-index: 100;
 display: flex; background: #fff;
 height: 50px; padding-bottom: env(safe-area-inset-bottom);
 box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);
 visibility: hidden;
}
.tab-bar[data-ready="1"] { visibility: visible; }
.tab-item {
 flex: 1; min-width: 0;
 display: flex; flex-direction: column; align-items: center; justify-content: center;
 padding: 6px 2px 4px; color: #999; text-decoration: none;
 -webkit-tap-highlight-color: transparent;
}
.tab-icon-wrap {
 display: flex; align-items: center; justify-content: center;
 width: 24px; height: 24px; margin-bottom: 2px; flex-shrink: 0;
}
.tab-icon { display: block; width: 24px; height: 24px; object-fit: contain; flex-shrink: 0; }
.tab-label {
 font-size: 10px; line-height: 1; font-weight: 400;
 white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis;
}
.tab-item.active { color: #2c5af0; }
.tab-item.active .tab-label { color: #2c5af0; font-weight: 500; }
.tab-icon-wrap { position: relative; }
.tab-nav-badge {
 position: absolute; top: -4px; right: -8px; min-width: 16px; height: 16px; padding: 0 4px;
 border-radius: 999px; background: #ee0a24; color: #fff; font-size: 10px; line-height: 16px;
 text-align: center; font-weight: 600; pointer-events: none;
}
.svg-icon { display: inline-block; vertical-align: middle; }

.top-navbar { position: sticky; top: 0; z-index: 100; background: #fff; border-bottom: 1px solid #f0f0f0; }
.navbar-content { display: flex; align-items: center; gap: 10px; padding: 8px 15px; height: 52px; }
.user-avatar { flex-shrink: 0; display: flex; align-items: center; }
.user-avatar img {
 width: 36px; height: 36px; border-radius: 18px; object-fit: cover;
 border: 2px solid #fff; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
 background: #f0f0f0;
}
.search-bar { flex: 1; height: 34px; line-height: 34px; padding: 0 12px; background: #f5f6fa; border-radius: 17px; font-size: 13px; color: #999; }
.message-btn { font-size: 13px; color: #333; }

.btn { display: block; width: 100%; padding: 12px; border: none; border-radius: 999px; font-size: 16px; cursor: pointer; }
.btn-primary { background: #2c5af0; color: #fff; }
.btn-plain { background: #fff; color: #2c5af0; border: 1px solid #2c5af0; }
.btn:disabled { opacity: 0.5; }

.input, .textarea, .select {
 width: 100%; padding: 10px 12px; border: 1px solid #eee; border-radius: 8px; font-size: 14px;
}
.form-row { margin-bottom: 12px; }
.form-label { display: block; margin-bottom: 6px; font-size: 14px; color: #646566; }

.loading, .empty { text-align: center; padding: 40px 16px; color: #969799; }
.toast-msg { position: fixed; left: 50%; top: 50%; transform: translate(-50%,-50%); background: rgba(0,0,0,.75); color: #fff; padding: 10px 16px; border-radius: 8px; z-index: 9999; display: none; }

.login-panel { margin-top: 48px; text-align: center; }
.login-panel .logo { font-size: 56px; margin-bottom: 12px; }
.tip { color: #969799; font-size: 14px; margin-bottom: 24px; }

/* 登录页（对齐小程序 login） */
@font-face {
 font-display: auto;
 font-family: vant-icon;
 font-style: normal;
 font-weight: 400;
 src: url('https://storlab.keyforwellness.com/fonts/vant-icon.woff2') format('woff2'),
 url('https://storlab.keyforwellness.com/fonts/vant-icon.woff') format('woff');
}
.page.login-page { background: #f5f6fa; }
.page.login-page .page-content { padding: 0; }
.login-container { min-height: 100vh; display: flex; flex-direction: column; background: #f5f6fa; }
.login-back-btn {
 position: fixed; top: calc(12px + env(safe-area-inset-top)); left: 12px; z-index: 20;
 display: inline-flex; align-items: center; gap: 4px; padding: 8px 14px;
 border: none; border-radius: 20px; background: rgba(255,255,255,.92);
 box-shadow: 0 2px 12px rgba(0,0,0,.08); color: #666; font-size: 14px; cursor: pointer;
}
.login-back-icon { font-size: 16px; line-height: 1; }
.login-header {
 background: linear-gradient(135deg, #2c5af0 0%, #1a4bdb 100%);
 padding: 72px 20px 48px; border-radius: 0 0 20px 20px;
}
.login-header-content { text-align: center; padding-top: 36px; }
.login-logo {
 width: 72px; height: 72px; border-radius: 50%; object-fit: cover;
 border: 3px solid rgba(255,255,255,.25); margin-bottom: 14px;
}
.login-title { font-size: 24px; font-weight: 600; color: #fff; margin-bottom: 6px; }
.login-subtitle { font-size: 14px; color: rgba(255,255,255,.85); }
.login-card {
 flex: 1; background: #fff; margin: -24px 16px 16px; border-radius: 16px;
 padding: 28px 20px 24px; box-shadow: 0 4px 24px rgba(44,90,240,.12); position: relative; z-index: 2;
}
.login-form { margin-bottom: 20px; text-align: center; }
.wechat-login-btn {
 width: 100%; max-width: 320px; margin: 0 auto;
 background: linear-gradient(135deg, #07c160 0%, #06ad56 100%) !important;
 border-radius: 12px !important; box-shadow: 0 2px 12px rgba(7,193,96,.28);
 display: inline-flex; align-items: center; justify-content: center; gap: 8px;
 font-size: 16px; font-weight: 500;
}
.wechat-login-btn .van-icon-wechat {
 font-family: vant-icon !important;
 font-size: 20px;
 line-height: 1;
 color: #fff;
}
.wechat-login-btn .van-icon-wechat:before { content: "\e744"; }
.van-icon {
 font-family: vant-icon !important;
 font-style: normal;
 font-weight: normal;
 display: inline-block;
 line-height: 1;
 text-rendering: auto;
 -webkit-font-smoothing: antialiased;
}
.van-icon:before { display: inline-block; }
.login-tips { margin-top: 14px; }
.login-tip-text { font-size: 12px; color: #999; margin: 0; }
.login-protocol {
 display: flex; align-items: flex-start; gap: 8px; padding-top: 18px;
 border-top: 1px solid #f0f0f0;
}
.protocol-checkbox {
 border: none; background: none; padding: 2px; cursor: pointer; flex-shrink: 0;
}
.protocol-check-icon { font-size: 16px; color: #ccc; line-height: 1.4; }
.protocol-check-icon.checked { color: #2c5af0; }
.protocol-text-line { flex: 1; font-size: 12px; color: #666; line-height: 1.8; }
.protocol-link {
 border: none; background: none; padding: 0 2px; color: #2c5af0; font-size: 12px;
 font-weight: 500; cursor: pointer;
}
.login-guest { margin-top: 18px; padding-top: 16px; border-top: 1px solid #f0f0f0; text-align: center; }
.guest-mode-btn {
 width: 100%; max-width: 320px; margin: 0 auto;
 background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%) !important;
 color: #495057 !important; border: 1px solid #dee2e6 !important;
 box-shadow: 0 1px 8px rgba(0,0,0,.06); display: inline-flex; align-items: center; justify-content: center; gap: 6px;
}
.guest-tip-text { font-size: 11px; color: #999; margin: 12px 0 0; line-height: 1.5; }
.protocol-sheet { position: fixed; inset: 0; z-index: 3000; }
.protocol-sheet[hidden] { display: none !important; }
.protocol-sheet-mask { position: absolute; inset: 0; background: rgba(0,0,0,.5); }
.protocol-sheet-panel {
 position: absolute; left: 0; right: 0; bottom: 0; max-height: 72vh; background: #fff;
 border-radius: 16px 16px 0 0; display: flex; flex-direction: column;
}
.protocol-sheet-header {
 position: relative; padding: 16px; border-bottom: 1px solid #f0f0f0; text-align: center;
}
.protocol-sheet-header h3 { margin: 0; font-size: 16px; }
.protocol-sheet-close {
 position: absolute; top: 10px; right: 12px; width: 32px; height: 32px; border: none;
 border-radius: 50%; background: #f5f5f5; color: #666; cursor: pointer;
}
.protocol-sheet-body {
 flex: 1; overflow-y: auto; padding: 12px 16px 20px; font-size: 14px; line-height: 1.8;
 color: #666; white-space: pre-line;
}
.protocol-sheet-footer { padding: 12px 16px 20px; border-top: 1px solid #f0f0f0; text-align: center; }
.protocol-sheet-ok { width: auto; min-width: 120px; margin: 0 auto; padding: 10px 24px; }
body.sheet-open { overflow: hidden; }
.welcome-toast-mask {
 position: fixed; inset: 0; z-index: 4000; display: flex; align-items: center; justify-content: center;
 pointer-events: none; background: transparent;
}
.welcome-toast-mask[hidden] { display: none !important; }
.welcome-toast-box {
 max-width: 280px; min-width: 160px; padding: 16px 20px; background: rgba(0,0,0,.78);
 border-radius: 10px; display: flex; flex-direction: column; align-items: center; gap: 8px;
}
.welcome-toast-icon { color: #07c160; font-size: 22px; font-weight: 700; }
.welcome-toast-text { color: #fff; font-size: 15px; line-height: 1.5; text-align: center; word-break: break-all; }

/* 客官个人中心（对齐小程序 profile） */
.customer-profile-page { padding: 0 0 12px !important; }
.customer-not-login { text-align: center; padding: 40px 20px 24px; }
.customer-not-login-icon { margin-bottom: 12px; display: flex; justify-content: center; }
.customer-not-login-icon .svg-icon { opacity: .35; }
.customer-user-card {
 margin: 12px; border-radius: 16px; padding: 20px 16px;
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
 color: #fff; box-shadow: 0 6px 24px rgba(102,126,234,.28);
}
.customer-user-header { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; }
.customer-avatar-wrap { position: relative; flex-shrink: 0; }
.customer-avatar { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; border: 3px solid rgba(255,255,255,.3); }
.customer-avatar-edit {
 position: absolute; right: -2px; bottom: -2px; width: 20px; height: 20px; border-radius: 50%;
 background: rgba(0,0,0,.45); color: #fff; display: flex; align-items: center; justify-content: center;
}
.customer-avatar-edit .svg-icon { display: block; }
.customer-user-info { flex: 1; min-width: 0; }
.customer-name-row { display: flex; align-items: center; gap: 8px; color: #fff; margin-bottom: 4px; }
.customer-name { font-size: 18px; font-weight: 600; }
.customer-level {
 font-size: 10px; padding: 2px 8px; border-radius: 10px; background: rgba(25,137,250,.85);
}
.customer-meta { font-size: 12px; color: rgba(255,255,255,.82); line-height: 1.5; }
.customer-settings-btn { color: rgba(255,255,255,.85); padding: 4px; display: flex; align-items: center; }
.customer-settings-btn .svg-icon { display: block; opacity: .85; }
.customer-user-stats { display: flex; border-top: 1px solid rgba(255,255,255,.2); padding-top: 14px; }
.customer-stat-item { flex: 1; text-align: center; color: #fff; }
.customer-stat-item .num { font-size: 20px; font-weight: 700; }
.customer-stat-item .label { font-size: 12px; opacity: .85; margin-top: 4px; }
.customer-order-section { margin: 0 12px 12px; }
.section-head-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.order-status-list { display: flex; justify-content: space-around; }
.order-status-item { flex: 1; text-align: center; color: #323233; }
.order-status-icon { position: relative; display: flex; align-items: center; justify-content: center; margin-bottom: 6px; min-height: 28px; }
.order-status-icon .svg-icon { display: block; }
.order-status-badge {
 position: absolute; top: -6px; right: calc(50% - 22px); min-width: 16px; height: 16px; padding: 0 4px;
 border-radius: 8px; background: #ee0a24; color: #fff; font-size: 10px; line-height: 16px;
}
.order-status-text { font-size: 12px; color: #646566; }
.customer-bottom-actions { padding: 0 12px 8px; }
.customer-action-btn {
 width: 100%; padding: 12px; border: 1px solid #eee; border-radius: 12px; background: #fff;
 color: #323233; font-size: 14px; cursor: pointer;
}

.pay-card { text-align: center; padding: 24px 12px; }
.amount { font-size: 36px; font-weight: 700; color: #ee0a24; margin: 8px 0; }
.sub-text { font-size: 13px; color: #969799; }

/* 支付页（对齐小程序 payment） */
.payment-page { background: #f5f5f5; min-height: calc(100vh - 46px); padding-bottom: 88px; text-align: left; }
.pay-countdown-bar {
 background: linear-gradient(135deg, #ff6b6b, #ff8e8e); color: #fff;
 padding: 12px 16px; text-align: center; font-size: 13px;
}
.pay-countdown-time { font-size: 16px; font-weight: 700; margin: 0 4px; }
.pay-section {
 background: #fff; margin: 12px; border-radius: 12px; padding: 14px 16px;
}
.pay-section-title { font-size: 15px; font-weight: 600; color: #333; margin-bottom: 10px; }
.pay-row {
 display: flex; justify-content: space-between; gap: 12px;
 padding: 10px 0; font-size: 14px; border-bottom: 1px solid #f5f5f5; color: #666;
}
.pay-row:last-child { border-bottom: none; }
.pay-row span:last-child { color: #323233; text-align: right; word-break: break-all; }
.pay-amount-section {
 background: #fff; margin: 12px; border-radius: 12px; padding: 24px 16px; text-align: center;
}
.pay-amount-label { font-size: 14px; color: #969799; margin-bottom: 8px; }
.pay-amount-value { color: #ee0a24; font-weight: 700; line-height: 1; }
.pay-yen { font-size: 20px; margin-right: 2px; }
.pay-amount-value #payAmount { font-size: 36px; }
.pay-method {
 display: flex; align-items: center; justify-content: space-between;
 padding: 8px 0; font-size: 15px;
}
.pay-method-name { color: #07c160; font-weight: 600; }
.pay-method-check { color: #07c160; font-weight: 700; }
.pay-agreement {
 display: flex; align-items: flex-start; gap: 8px;
 margin: 12px 16px; font-size: 13px; color: #666; line-height: 1.5; cursor: pointer;
}
.pay-check {
 width: 18px; height: 18px; border-radius: 50%; background: #1989fa; color: #fff;
 display: inline-flex; align-items: center; justify-content: center; font-size: 12px; flex-shrink: 0; margin-top: 1px;
}
.pay-check.off { background: #ddd; color: #fff; }
.pay-bottom-bar {
 position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
 display: flex; align-items: center; justify-content: space-between; gap: 12px;
 padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
 background: #fff; border-top: 1px solid #eee;
}

.subscribe-modal {
 position: fixed; inset: 0; z-index: 200;
 display: flex; align-items: center; justify-content: center;
 background: rgba(0, 0, 0, 0.45); padding: 20px;
}
.subscribe-modal[hidden] { display: none !important; }
.subscribe-modal-card {
 width: 100%; max-width: 320px; background: #fff; border-radius: 12px;
 padding: 20px 16px 16px; box-sizing: border-box;
}
.subscribe-modal-title { font-size: 17px; font-weight: 600; margin-bottom: 8px; text-align: center; }
.subscribe-modal-desc { font-size: 14px; color: #666; line-height: 1.5; margin: 0 0 8px; }
.subscribe-modal-tip { font-size: 12px; color: #969799; margin: 0 0 12px; }
.pay-action-slot { min-height: 44px; margin-bottom: 0; display: flex; align-items: center; justify-content: flex-end; }
.pay-action-wrap { position: relative; flex-shrink: 0; min-width: 120px; }
.pay-action-wrap.pay-subscribe-disabled { opacity: 0.45; pointer-events: none; }
.pay-action-slot wx-open-subscribe { display: block; width: auto; min-width: 120px; }
.pay-bottom-info { flex: 1; font-size: 14px; color: #666; }
.pay-bottom-amount { color: #ee0a24; font-size: 20px; font-weight: 700; margin-left: 6px; }
.pay-confirm-btn { width: auto; min-width: 120px; margin: 0; height: 44px; padding: 0 20px; line-height: 44px; border-radius: 22px; font-weight: 500; }
.payment-wait-page { text-align: center; padding: 40px 16px; }

/* 支付结果页（对齐小程序：成功提示 + 自动跳转订单详情） */
.payment-result-page { padding: 16px 12px 32px; }
.pay-result-hero { text-align: center; padding: 28px 16px 20px; }
.pay-result-icon {
 width: 72px; height: 72px; margin: 0 auto 16px; border-radius: 50%;
 display: flex; align-items: center; justify-content: center;
 font-size: 36px; font-weight: 700; color: #fff;
}
.pay-result-icon.success { background: linear-gradient(135deg, #07c160, #05a650); box-shadow: 0 8px 20px rgba(7,193,96,.25); }
.pay-result-icon.pending { background: linear-gradient(135deg, #ff9500, #ffb340); font-size: 32px; }
.pay-result-icon.fail { background: linear-gradient(135deg, #ee0a24, #ff6b6b); }
.pay-result-title { margin: 0 0 8px; font-size: 22px; font-weight: 700; color: #323233; }
.pay-result-amount { font-size: 32px; font-weight: 700; color: #ee0a24; margin: 8px 0 12px; }
.pay-result-desc { margin: 0; font-size: 14px; color: #969799; line-height: 1.5; }
.pay-result-card {
 background: #fff; border-radius: 12px; padding: 4px 16px; margin: 16px 0;
 box-shadow: 0 1px 4px rgba(0,0,0,.04);
}
.pay-result-row {
 display: flex; justify-content: space-between; gap: 12px;
 padding: 12px 0; font-size: 14px; border-bottom: 1px solid #f5f6fa;
}
.pay-result-row:last-child { border-bottom: none; }
.pay-result-row span:first-child { color: #969799; flex-shrink: 0; }
.pay-result-row span:last-child { color: #323233; text-align: right; word-break: break-all; }
.pay-result-tip { text-align: center; font-size: 13px; color: #2c5af0; margin: 8px 0 16px; }
.pay-result-actions { display: flex; flex-direction: column; gap: 10px; }
.pay-result-actions .btn { margin: 0; }

.order-card { cursor: pointer; }
.order-header { display: flex; justify-content: space-between; margin-bottom: 8px; }
.order-body { display: flex; gap: 10px; align-items: center; }
.order-body .avatar { width: 48px; height: 48px; border-radius: 8px; object-fit: cover; }
.order-body .name { font-weight: 600; margin-bottom: 4px; }
.order-status.pending { color: #ff9500; }
.order-status.paid { color: #1989fa; }
.order-status.serving { color: #07c160; }
.order-status.completed { color: #969799; }

.card-block { background: #fff; border-radius: 12px; padding: 12px; margin-bottom: 12px; }
.section-header { display: flex; justify-content: space-between; align-items: center; padding: 0 4px 12px; margin-bottom: 0; }
.section-title { font-weight: 600; font-size: 14px; color: #333; }
.section-more {
 font-size: 14px; font-weight: 400; color: #2c5af0; text-decoration: none;
 padding: 2px 0; flex-shrink: 0;
}
.section-more:active { opacity: 0.75; }
.page-bg { background: #f7f8fa; }
.page.with-bottom-bar { padding-bottom: calc(60px + env(safe-area-inset-bottom)); }

.worker-card { display: flex; gap: 12px; cursor: pointer; align-items: flex-start; }
.worker-left { width: 72px; flex-shrink: 0; text-align: center; }
.worker-avatar-wrap { position: relative; width: 56px; height: 56px; margin: 0 auto; }
.worker-avatar { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; display: block; }
.worker-status-dot { position: absolute; right: 2px; bottom: 2px; width: 10px; height: 10px; border-radius: 50%; border: 2px solid #fff; }
.worker-status-dot.online { background: #07c160; }
.worker-status-dot.offline { background: #c8c9cc; }
.worker-status-label { font-size: 11px; color: #969799; margin-top: 6px; }
.worker-main { flex: 1; min-width: 0; text-align: left; }
.worker-name { font-weight: 600; font-size: 15px; margin-bottom: 4px; }
.worker-skills-line { font-size: 12px; color: #667eea; margin-bottom: 6px; line-height: 1.4; }
.worker-name-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.worker-rating { font-size: 12px; color: #ff9500; }
.worker-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
.worker-tag { font-size: 11px; padding: 2px 8px; border-radius: 999px; background: #f5f6fa; color: #646566; }
.worker-tag.hot { background: #fff1f0; color: #ee0a24; }
.worker-desc { font-size: 13px; color: #969799; line-height: 1.4; margin-bottom: 8px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.worker-price-row { display: flex; justify-content: space-between; align-items: center; }
.worker-price { color: #ee0a24; font-weight: 600; font-size: 14px; }
.worker-game-count { font-size: 11px; color: #667eea; background: rgba(102,126,234,.1); padding: 2px 8px; border-radius: 999px; }
.worker-orders { font-size: 12px; color: #969799; }

.booking-form .form-row { margin-bottom: 14px; }
.booking-form .form-label { display: block; font-size: 13px; color: #646566; margin-bottom: 6px; }
.booking-form .form-value { font-size: 14px; color: #323233; }
.booking-form .total-price-row .price { color: #ee0a24; font-weight: 700; font-size: 18px; }
.picker-value-btn {
 width: 100%; text-align: left; padding: 10px 12px; border: 1px solid #eee; border-radius: 8px;
 background: #fff; font-size: 14px; color: #323233; cursor: pointer;
}
.datetime-picker-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 12px 0; }
.datetime-picker-modal .modal-actions { display: flex; gap: 10px; }

.order-detail-page .od-status-section {
 background: #fff; border-radius: 12px; padding: 24px 16px; text-align: center; margin-bottom: 12px;
}
.order-detail-page .od-status-title { font-size: 20px; font-weight: 700; margin-top: 8px; }
.order-detail-page .od-section { background: #fff; border-radius: 12px; padding: 14px; margin-bottom: 12px; }
.order-detail-page .od-section-title { font-size: 15px; font-weight: 600; margin-bottom: 12px; }
.order-detail-page .od-worker-row { display: flex; gap: 12px; align-items: center; margin-bottom: 12px; }
.order-detail-page .od-worker-row .avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.order-detail-page .od-worker-main { flex: 1; min-width: 0; text-align: left; }
.order-detail-page .od-detail-item { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; font-size: 14px; border-bottom: 1px solid #f5f5f5; }
.order-detail-page .od-detail-item:last-child { border-bottom: none; }
.order-detail-page .od-detail-item .label { color: #969799; flex-shrink: 0; }
.order-detail-page .od-detail-item .value { color: #323233; text-align: right; word-break: break-all; }
.order-detail-page .od-cost-total { display: flex; justify-content: space-between; padding-top: 10px; margin-top: 6px; border-top: 1px solid #eee; font-weight: 700; }
.order-detail-page .od-cost-total .value { color: #ee0a24; font-size: 18px; }

/* 首页布局：与个人中心卡片一致，左右 12px 边距 */
.home-page.page-content { padding: 0 0 12px !important; }
.home-page > #bannerBox,
.home-page > .card-block {
 margin-left: 12px;
 margin-right: 12px;
 width: auto;
 box-sizing: border-box;
}
.home-page > #bannerBox {
 margin-top: 12px;
 margin-bottom: 12px;
 padding: 0;
}
.home-page > #bannerBox .banner-section,
.home-page > #bannerBox .banner-swiper { width: 100%; }
.home-page > .card-block { margin-bottom: 12px; }
.home-page > .card-block:last-child { margin-bottom: 0; }
.home-page .banner-section { margin: 0; }

.banner-section { margin: 0 0 12px; }
.banner-swiper {
 position: relative; height: 160px; border-radius: 12px; overflow: hidden;
}
.banner-track { position: relative; width: 100%; height: 100%; }
.banner-slide {
 position: absolute; inset: 0; opacity: 0; transition: opacity .5s ease;
 pointer-events: none;
}
.banner-slide.active { opacity: 1; pointer-events: auto; z-index: 1; }
.banner-dots {
 position: absolute; left: 0; right: 0; bottom: 10px; z-index: 2;
 display: flex; justify-content: center; gap: 6px;
}
.banner-dot {
 width: 6px; height: 6px; border-radius: 50%; border: none; padding: 0;
 background: rgba(255,255,255,.5); cursor: pointer;
}
.banner-dot.active { background: #fff; width: 14px; border-radius: 999px; }

.banner-card {
 width: 100%; height: 100%; border-radius: 12px; background-size: cover; background-position: center;
 display: flex; align-items: center; color: #fff; position: relative; overflow: hidden;
 background-color: #2C5AF0;
}
.banner-content {
 display: flex; align-items: center; padding: 20px; height: 100%; gap: 16px; width: 100%;
}
.banner-left { flex-shrink: 0; }
.banner-avatar {
 width: 60px; height: 60px; border-radius: 30px; border: 3px solid rgba(255,255,255,.9);
 object-fit: cover; box-shadow: 0 2px 12px rgba(0,0,0,.2);
}
.banner-right { flex: 1; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.banner-text { display: flex; flex-direction: column; gap: 4px; }
.banner-title {
 font-size: 20px; font-weight: 600; color: #fff; line-height: 1.2;
 text-shadow: 0 2px 4px rgba(0,0,0,.2);
}
.banner-subtitle {
 font-size: 14px; color: rgba(255,255,255,.9); line-height: 1.2;
 text-shadow: 0 1px 2px rgba(0,0,0,.2);
}
.banner-info { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.banner-info-item {
 display: inline-flex; align-items: center; gap: 4px; padding: 4px 8px;
 background: rgba(255,255,255,.2); border-radius: 12px; font-size: 12px; color: #fff;
}
.banner-info-item.banner-info-price {
 background: rgba(255,107,53,.9); padding: 4px 12px; font-size: 14px; font-weight: 600;
}
.banner-info-icon { font-size: 12px; }
.default-banner { background: linear-gradient(135deg,#2c5af0,#6b8cff) !important; }

.tab-scroll { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; }
.tab-scroll .tab-chip { flex-shrink: 0; padding: 6px 12px; border-radius: 999px; background: #f5f6fa; font-size: 13px; }
.tab-scroll .tab-chip.active { background: #ecf5ff; color: #2c5af0; }

.profile-header { text-align: center; padding: 24px 12px; }
.profile-header .avatar { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; }
.profile-stats { display: flex; margin: 16px 0; }
.profile-stats a { flex: 1; text-align: center; }
.profile-stats .num { font-size: 18px; font-weight: 700; }
.profile-stats .label { font-size: 12px; color: #969799; }

.left-section { display: flex; align-items: center; gap: 8px; flex-shrink: 0; max-width: 42%; }
.dev-panel { display: inline-flex; flex-direction: column; gap: 2px; margin-right: 2px; flex-shrink: 0; }
.dev-link { font-size: 12px; font-weight: 700; padding: 1px 5px; border-radius: 4px; text-decoration: none; line-height: 1.2; white-space: nowrap; }
.dev-link.test { color: #ff6b35; background: #fff5f0; }
.dev-link.pay { color: #07c160; background: #f0fff5; }

.payment-pending-bar {
 position: fixed; left: 0; right: 0; top: 0; z-index: 200;
 display: flex; align-items: center; gap: 8px; padding: 10px 12px;
 background: #fff7e6; color: #ed6a0c; font-size: 13px; border-bottom: 1px solid #ffe7ba;
}
.payment-pending-bar a { color: #2c5af0; font-weight: 600; white-space: nowrap; }
.payment-pending-close { border: none; background: none; font-size: 18px; line-height: 1; margin-left: auto; cursor: pointer; color: #999; }
.pay-env-tip { background: #fff; border: 1px solid #ffe7ba; }
.pay-env-tip .sub-text { color: #969799; font-size: 13px; }
.pay-link-box { word-break: break-all; font-size: 12px; background: #f7f8fa; padding: 8px; border-radius: 6px; margin-top: 8px; }

.mock-login-section .section-title,
.test-results .section-title { font-weight: 700; margin-bottom: 8px; }
.test-btn-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.test-mini-btn { padding: 8px 4px; font-size: 13px; margin: 0; width: 100%; }
.test-result-line { padding: 8px 0; border-bottom: 1px solid #f0f0f0; font-size: 13px; }
.test-result-line .ok { color: #07c160; }
.test-result-line .err { color: #ee0a24; }

.modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 300; display: flex; align-items: center; justify-content: center; padding: 20px; }
.modal-card { background: #fff; border-radius: 12px; width: 100%; max-width: 360px; padding: 20px; max-height: 80vh; overflow: auto; }
.modal-title { margin: 0 0 12px; font-size: 18px; }
.modal-body { font-size: 14px; line-height: 1.6; color: #323233; }
.modal-actions { margin-top: 16px; display: flex; flex-direction: column; gap: 8px; }

.tabs-row { display: flex; gap: 8px; overflow-x: auto; padding: 0 12px 12px; }
.tab-chip { flex-shrink: 0; border: 1px solid #eee; background: #fff; border-radius: 999px; padding: 6px 14px; font-size: 13px; color: #666; cursor: pointer; }
.tab-chip.active { color: #2c5af0; border-color: #2c5af0; background: #eef3ff; font-weight: 600; }

.dash-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.dash-title { font-size: 18px; font-weight: 700; }
.org-hero { text-align: center; }
.member-row { display: flex; align-items: center; gap: 8px; }
.detail-row { display: flex; justify-content: space-between; padding: 6px 0; font-size: 14px; border-bottom: 1px solid #f5f5f5; }
.detail-row:last-child { border-bottom: none; }
.order-status-hero { text-align: center; padding: 18px 12px; }
.order-status-title { font-size: 20px; font-weight: 700; margin-bottom: 6px; }
.timeline-row { display: flex; gap: 10px; padding: 8px 0; border-left: 2px solid #eee; margin-left: 6px; padding-left: 12px; position: relative; }
.timeline-dot { width: 8px; height: 8px; background: #2c5af0; border-radius: 50%; position: absolute; left: -5px; top: 14px; }
.game-icon-sm { width: 48px; height: 48px; border-radius: 8px; object-fit: cover; margin-right: 10px; }

.avatar-edit { text-align: center; }
.avatar-lg { width: 88px; height: 88px; border-radius: 50%; object-fit: cover; display: block; margin: 0 auto 12px; }
.avatar-upload-btn { display: inline-block; width: auto; padding: 8px 16px; margin: 0 auto; }

/* 实名认证页（对齐小程序样式） */
.cert-page { background: #f5f5f5; min-height: calc(100vh - 46px); padding-bottom: 24px; text-align: left; }
.cert-status-wrap { padding: 16px; }
.cert-status-card {
 display: flex; align-items: center; padding: 20px; border-radius: 12px; color: #fff; text-align: left;
 background: linear-gradient(135deg, #1677ff 0%, #0052d9 100%);
}
.cert-status-card.approved, .cert-status-card.verified, .cert-status-card.success {
 background: linear-gradient(135deg, #07c160 0%, #00a854 100%);
 box-shadow: 0 4px 12px rgba(7, 193, 96, 0.25);
}
.cert-status-card.pending {
 background: linear-gradient(135deg, #ffa726 0%, #ff7043 100%);
}
.cert-status-card.rejected, .cert-status-card.failed {
 background: linear-gradient(135deg, #ee0a24 0%, #d81e06 100%);
}
.cert-status-card.unverified, .cert-status-card.not_applied {
 background: linear-gradient(135deg, #1677ff 0%, #0052d9 100%);
}
.cert-status-icon {
 width: 48px; height: 48px; border-radius: 50%;
 background: rgba(255,255,255,.25); display: flex; align-items: center; justify-content: center;
 font-size: 22px; font-weight: 700; margin-right: 14px; flex-shrink: 0;
}
.cert-status-info { flex: 1; min-width: 0; }
.cert-status-title { font-size: 18px; font-weight: 700; margin-bottom: 4px; }
.cert-status-desc { font-size: 13px; opacity: .95; line-height: 1.4; }
.cert-section {
 background: #fff; border-radius: 12px; padding: 16px 14px; margin: 0 16px 12px;
}
.cert-section-title { font-size: 16px; font-weight: 600; color: #333; margin-bottom: 12px; }
.cert-section-desc { font-size: 12px; color: #999; margin-bottom: 12px; line-height: 1.4; }
.cert-form-item {
 display: flex; align-items: center; padding: 12px 0; border-bottom: 1px solid #f5f5f5;
}
.cert-form-item:last-child { border-bottom: none; }
.cert-item-label { width: 80px; font-size: 15px; color: #333; flex-shrink: 0; }
.cert-item-input {
 flex: 1; border: none; outline: none; font-size: 15px; color: #333; background: transparent; text-align: left;
}
.cert-photo-item { margin-bottom: 16px; }
.cert-photo-item:last-child { margin-bottom: 0; }
.cert-photo-label { font-size: 15px; color: #333; margin-bottom: 8px; display: block; }
.cert-photo-upload {
 display: block; width: 100%; height: 160px; border-radius: 12px; border: 1px dashed #ddd;
 overflow: hidden; position: relative; background: #fafafa; cursor: pointer;
}
.cert-photo-preview { width: 100%; height: 100%; object-fit: cover; display: block; }
.cert-upload-placeholder {
 display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%;
}
.cert-upload-icon { font-size: 32px; line-height: 1; margin-bottom: 8px; opacity: .5; }
.cert-upload-text { font-size: 13px; color: #999; }
.cert-info-item {
 display: flex; align-items: center; justify-content: space-between;
 padding: 12px 0; border-bottom: 1px solid #f5f5f5;
}
.cert-info-item:last-child { border-bottom: none; }
.cert-info-label { font-size: 15px; color: #666; }
.cert-info-value { font-size: 15px; color: #333; font-weight: 500; }
.cert-notice {
 margin: 0 16px 12px; padding: 12px; background: #fff9e6; border-radius: 12px; border: 1px solid #ffe58f;
}
.cert-notice-title { font-size: 14px; color: #ff6b35; font-weight: 600; margin-bottom: 8px; }
.cert-notice-item { font-size: 12px; color: #666; line-height: 1.6; }
.cert-submit-wrap { padding: 8px 16px 24px; }
.cert-submit-btn {
 width: 100%; height: 48px; border-radius: 24px; font-size: 16px; font-weight: 600; border: none;
}
.cert-submit-btn.active { background: linear-gradient(135deg, #1989fa 0%, #1677ff 100%); color: #fff; }
.cert-submit-btn.disabled { background: #f5f5f5; color: #ccc; }
.cert-id-preview { margin-top: 16px; padding-top: 16px; border-top: 1px solid #f5f5f5; }
.cert-id-preview-title { font-size: 15px; font-weight: 600; color: #333; margin-bottom: 12px; }
.cert-id-preview-images { display: flex; gap: 12px; }
.cert-id-preview-item { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; }
.cert-id-preview-label { font-size: 13px; color: #666; margin-bottom: 8px; }
.cert-id-preview-img {
 width: 100%; height: 100px; object-fit: cover; border-radius: 8px;
 border: 1px solid #eee; background: #f8f9fa; cursor: pointer;
}
.cert-id-preview-img:active { opacity: .85; transform: scale(.98); }
.cert-row { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid #f5f6fa; font-size: 14px; }
.id-preview { width: 100%; max-height: 160px; object-fit: contain; border-radius: 8px; background: #f7f8fa; margin-bottom: 8px; display: none; }
.id-preview[src^="data:"] { display: block; }
.tag { display: inline-block; margin-top: 8px; padding: 2px 10px; border-radius: 999px; font-size: 12px; text-decoration: none; }
.tag.ok { background: #e8f8ef; color: #07c160; }
.tag.warn { background: #fff7e6; color: #ff9500; }
.success-card { text-align: center; }
.menu-list a { display: block; padding: 14px 0; border-bottom: 1px solid #f5f5f5; }
.not-login { text-align: center; padding: 48px 24px; }
.detail-hero { text-align: center; padding: 20px 12px; }
.detail-hero .avatar { width: 80px; height: 80px; border-radius: 50%; object-fit: cover; }

.bottom-bar {
 position: fixed; left: 0; right: 0; bottom: 0; display: flex; gap: 8px;
 padding: 8px 12px calc(8px + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid #eee;
}
.bottom-bar .btn { flex: 1; }
.worker-detail-bar {
 align-items: stretch;
 gap: 10px;
 padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
 box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.08);
}
.worker-detail-bar .detail-side-btn {
 flex: none;
 width: 64px;
 min-height: 48px;
 display: flex;
 flex-direction: column;
 align-items: center;
 justify-content: center;
 gap: 2px;
 border: none;
 border-radius: 10px;
 background: #f5f6fa;
 color: #666;
 font-size: 12px;
 text-decoration: none;
 cursor: pointer;
 padding: 6px 4px;
}
.worker-detail-bar .detail-side-icon {
 font-size: 16px;
 line-height: 1;
}
.worker-detail-bar .detail-main-btn {
 flex: 1;
 display: flex;
 align-items: center;
 justify-content: center;
 min-height: 48px;
 border-radius: 10px;
 background: #2c5af0;
 color: #fff;
 font-size: 16px;
 font-weight: 600;
 text-decoration: none;
}
.member-row { display: flex; align-items: center; gap: 8px; }
.member-actions { display: flex; gap: 8px; flex-shrink: 0; }
.split-rules-list { margin: 8px 0 0 18px; padding: 0; }
.split-rules-list li { margin-bottom: 6px; }
.help-tabs { display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.help-tab-btn { border: 1px solid #e5e7ef; background: #fff; border-radius: 999px; padding: 6px 14px; font-size: 13px; }
.help-tab-btn.active { background: #eef3ff; border-color: #2c5af0; color: #2c5af0; }
.help-faq-item { border-bottom: 1px solid #f0f0f0; padding: 12px 0; }
.help-faq-q { font-weight: 600; cursor: pointer; }
.help-faq-a { display: none; margin-top: 8px; color: #666; font-size: 14px; line-height: 1.6; }
.help-faq-item.open .help-faq-a { display: block; }
.help-tutorial-step { display: flex; gap: 10px; margin-bottom: 12px; }
.help-step-num { width: 22px; height: 22px; border-radius: 50%; background: #eef3ff; color: #2c5af0; font-size: 12px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }

.category-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px 8px; }
.category-item { text-align: center; font-size: 12px; }
.category-item img { width: 48px; height: 48px; border-radius: 12px; object-fit: cover; background: #f5f6fa; }

.search-bar-row { display: flex; gap: 8px; align-items: center; }
.search-bar-row .input { flex: 1; }
.service-item { padding: 10px 0; border-bottom: 1px solid #f5f5f5; }
.review-item { padding: 10px 0; border-bottom: 1px solid #f5f5f5; text-align: left; }
.worker-reviews-page { text-align: left; }
.worker-reviews-page .review-item { padding: 14px; margin-bottom: 10px; border-bottom: none; }
.worker-reviews-section { text-align: left; }
.review-item-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 8px; }
.review-item .name { font-weight: 600; font-size: 14px; color: #323233; }
.review-content { font-size: 14px; color: #646566; line-height: 1.6; text-align: left; }
.review-time { font-size: 12px; color: #969799; margin-left: auto; }
.review-empty { text-align: left; }
.star-row { display: inline-flex; gap: 2px; color: #ddd; font-size: 14px; line-height: 1; }
.star-row .star.on { color: #ff9500; }
.worker-detail-rating { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 14px; margin: 4px 0 0; }
.worker-detail-rating .rating-num { color: #ff9500; font-weight: 600; }
.review-stats-block {
 display: flex; gap: 16px; align-items: flex-start; padding: 12px 0 16px;
 border-bottom: 1px solid #f0f0f0; margin-bottom: 8px; text-align: left;
}
.review-stats-summary { flex-shrink: 0; text-align: center; min-width: 88px; }
.review-stats-score { font-size: 28px; font-weight: 700; color: #ff9500; line-height: 1.2; }
.review-stats-bars { flex: 1; min-width: 0; }
.rating-bar-row { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; font-size: 12px; }
.rating-bar-label { width: 28px; color: #969799; flex-shrink: 0; text-align: right; }
.rating-bar-track { flex: 1; height: 8px; background: #f0f0f0; border-radius: 4px; overflow: hidden; }
.rating-bar-fill { height: 100%; background: linear-gradient(90deg, #ffb347, #ff9500); border-radius: 4px; }
.rating-bar-count { width: 24px; color: #969799; text-align: right; flex-shrink: 0; }
.review-tags-row { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.review-tag-chip {
 display: inline-block; padding: 2px 8px; font-size: 11px; color: #2c5af0;
 background: #eef3ff; border-radius: 4px;
}

.msg-list { text-align: left; }
.msg-item { display: flex; gap: 12px; align-items: center; text-align: left; text-decoration: none; color: inherit; }
.msg-avatar-wrap { position: relative; flex-shrink: 0; }
.msg-avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; display: block; }
.msg-badge { position: absolute; top: -4px; right: -4px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 999px; background: #ee0a24; color: #fff; font-size: 10px; line-height: 16px; text-align: center; }
.msg-main { flex: 1; min-width: 0; text-align: left; }
.msg-top { display: flex; justify-content: space-between; margin-bottom: 4px; }
.msg-name { font-weight: 600; font-size: 15px; text-align: left; }
.msg-time { font-size: 12px; color: #969799; flex-shrink: 0; margin-left: 8px; }
.msg-preview { font-size: 13px; color: #969799; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left; }

.chat-page { display: flex; flex-direction: column; height: calc(100vh - 46px); }
.chat-list { flex: 1; overflow-y: auto; padding: 12px; background: #f7f8fa; text-align: left; }
.chat-bubble-row { display: flex; flex-direction: column; margin-bottom: 12px; }
.chat-bubble-row.mine { align-items: flex-end; }
.chat-bubble-row.theirs { align-items: flex-start; }
.chat-bubble { max-width: 75%; padding: 10px 12px; border-radius: 12px; font-size: 14px; line-height: 1.5; word-break: break-word; text-align: left; }
.chat-bubble-row.mine .chat-bubble { background: #2c5af0; color: #fff; border-bottom-right-radius: 4px; }
.chat-bubble-row.theirs .chat-bubble { background: #fff; color: #323233; border-bottom-left-radius: 4px; }
.chat-time { font-size: 11px; color: #969799; margin-top: 4px; text-align: left; }
.chat-toolbar {
 display: flex; align-items: center; gap: 6px;
 padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid #eee;
}
.chat-input-wrap { flex: 1; min-width: 0; }
.chat-input { width: 100%; box-sizing: border-box; }
.chat-tool-btn {
 border: none; background: #f7f8fa; border-radius: 8px; width: 36px; height: 36px;
 font-size: 18px; cursor: pointer; flex-shrink: 0;
}
.chat-tool-btn.active { background: rgba(0, 122, 255, 0.12); }
.chat-voice-btn {
 flex: 1; border: none; background: #f7f8fa; border-radius: 8px; padding: 10px 12px;
 font-size: 14px; color: #333; cursor: pointer;
}
.chat-voice-btn.recording { background: #ffecec; color: #ee0a24; }
.chat-send-btn { width: auto; padding: 10px 14px; margin: 0; flex-shrink: 0; font-size: 14px; }
.chat-bubble-image { padding: 4px; background: transparent !important; }
.chat-bubble-image .chat-image,
.chat-bubble.chat-bubble-image .chat-image,
.chat-bubble .chat-image {
 max-width: 180px; max-height: 180px; border-radius: 8px; display: block; cursor: pointer;
}
.chat-bubble-row.mine .chat-bubble.chat-bubble-image { background: transparent; }
.chat-bubble-row.theirs .chat-bubble.chat-bubble-image { background: transparent; }
.chat-voice-play {
 display: inline-flex; align-items: center; gap: 8px; border: none; background: transparent;
 cursor: pointer; font-size: 14px; padding: 0; color: inherit;
}
.chat-bubble-row.mine .chat-voice-play { color: #fff; }
.chat-voice-play.playing .chat-voice-icon { animation: chat-voice-pulse 0.8s infinite; }
@keyframes chat-voice-pulse { 50% { opacity: 0.5; } }
.chat-input-bar { display: flex; gap: 8px; padding: 8px 12px calc(8px + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid #eee; }
.chat-input-bar .input { flex: 1; }

.profile-page .profile-hero { display: flex; gap: 12px; align-items: flex-start; }
.profile-page .avatar-lg { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.profile-hero-main { flex: 1; min-width: 0; }
.profile-hero-main h3 { margin: 0 0 4px; font-size: 18px; }
.profile-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.profile-rating-box { text-align: right; flex-shrink: 0; min-width: 0; }
.profile-rating-main {
 display: flex; align-items: center; justify-content: flex-end; gap: 4px;
 white-space: nowrap; flex-wrap: nowrap;
}
.profile-rating-box .rating-num { font-size: 22px; font-weight: 700; color: #ffb800; line-height: 1; flex-shrink: 0; }
.profile-rating-main .star-row { font-size: 11px; flex-shrink: 0; }
.profile-rating-main .rating-no-score { font-size: 11px; color: #969799; white-space: nowrap; }
.profile-rating-box .rating-count-line { font-size: 11px; color: #969799; margin-top: 4px; }
.profile-tip { font-size: 14px; }
.profile-tip.warn { background: #fff7e6; color: #ff9500; }
.stats-grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; text-align: center; }
.stat-cell { display: block; text-decoration: none; color: inherit; }
.stat-cell .num { font-size: 16px; font-weight: 700; }
.stat-cell .label { font-size: 11px; color: #969799; margin-top: 2px; }
.menu-group { margin-bottom: 12px; }
.customer-profile-page .menu-group.card-block,
.profile-page .menu-group.card-block {
 margin: 0 12px 12px;
 padding: 0;
}
.profile-page .menu-group.card-block { margin-left: 0; margin-right: 0; }
.menu-group .menu-item { display: flex; align-items: center; padding: 14px 16px; border-bottom: 1px solid #f5f5f5; text-decoration: none; color: #323233; gap: 0; }
.menu-group .menu-item:last-child { border-bottom: none; }
.menu-icon-wrap {
 width: 20px; height: 20px; margin-right: 12px; flex-shrink: 0;
 display: flex; align-items: center; justify-content: center;
}
.menu-icon-wrap .svg-icon { display: block; }
.menu-item-with-detail { display: flex; align-items: center; gap: 6px; }
.menu-item-with-detail .menu-item-main {
 flex: 1; min-width: 0; display: flex; align-items: center; gap: 0;
 text-decoration: none; color: #323233;
}
.menu-text { flex: 1; font-size: 15px; min-width: 0; }
.menu-desc { font-size: 12px; color: #969799; margin-right: auto; }
.worker-apply-badge {
 background: linear-gradient(45deg, #ff9500, #ffad33); color: #fff;
 padding: 4px 8px; border-radius: 10px; font-size: 12px; font-weight: 500; flex-shrink: 0;
}
.org-apply-badge {
 background: linear-gradient(45deg, #9c27b0, #ba68c8); color: #fff;
 padding: 4px 8px; border-radius: 10px; font-size: 12px; font-weight: 500; flex-shrink: 0;
}
.detail-link {
 font-size: 12px; color: #1989fa; padding: 4px 8px;
 background: rgba(25, 137, 250, 0.08); border-radius: 10px; flex-shrink: 0;
 text-decoration: none; line-height: 1;
}
.detail-link:active { opacity: 0.75; }
.menu-badge { font-size: 11px; background: #ee0a24; color: #fff; padding: 1px 6px; border-radius: 999px; }
.menu-arrow { color: #ccc; font-size: 18px; }
.commission-change-item { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; border-bottom: 1px solid #f5f5f5; cursor: pointer; }
.earnings-overview { text-align: center; }
.earnings-overview .earn-main { font-size: 28px; font-weight: 700; color: #07c160; }
.period-tabs { display: flex; flex-wrap: wrap; gap: 8px; }
.period-tab { border: 1px solid #eee; background: #fff; border-radius: 999px; padding: 6px 12px; font-size: 13px; }
.period-tab.active { background: #2c5af0; color: #fff; border-color: #2c5af0; }
.earn-row { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; border-bottom: 1px solid #f5f5f5; }
.earn-row .name { font-size: 14px; font-weight: 600; }

/* 订单详情操作按钮居中 */
.order-detail-actions { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.order-detail-actions .btn,
.order-detail-actions a.btn { max-width: 280px; width: 100%; margin: 0; text-align: center; }
.order-detail-actions .sub-text { text-align: center; width: 100%; }

/* 客官订单列表（Tab/列表容器复用店小二端 worker-order-* 样式） */
.customer-orders-page.worker-orders-page {
 min-height: calc(100vh - 46px);
 padding-top: 0;
}
.customer-orders-page .worker-order-tabs-wrap {
 position: sticky;
 top: 46px;
 z-index: 20;
 border-radius: 0;
}
.customer-orders-page .worker-order-list { padding-bottom: 24px; }
.customer-orders-page .worker-order-item.card-block {
 background: rgba(255,255,255,.95);
 backdrop-filter: blur(10px);
 border-radius: 12px;
 box-shadow: 0 4px 16px rgba(0,0,0,.1);
 margin-bottom: 12px;
}
.orders-page { padding-top: 0; }
.order-card-header { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.order-card-meta .order-no { font-size: 13px; color: #646566; }
.order-status-wrap { text-align: right; flex-shrink: 0; }
.reject-badge { display: inline-block; margin-top: 4px; font-size: 11px; color: #ee0a24; background: #fff1f0; padding: 1px 6px; border-radius: 4px; }
.order-card-body { display: flex; gap: 10px; align-items: center; }
.order-card-info { flex: 1; min-width: 0; overflow: hidden; }
.order-card-amount {
 color: #ee0a24; font-weight: 700; flex-shrink: 0; align-self: center;
 min-width: 76px; text-align: right; white-space: nowrap; line-height: 1.2;
}
.order-amount-symbol { font-size: 12px; margin-right: 1px; }
.order-amount-num { font-size: 16px; }
.order-game-row { display: flex; align-items: center; gap: 6px; margin: 4px 0; }
.game-icon-xs { width: 16px; height: 16px; border-radius: 4px; object-fit: cover; }
.order-card-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid #f5f5f5; }
.order-action-btn {
 min-width: 88px; padding: 8px 14px; border-radius: 999px; font-size: 13px; cursor: pointer;
 border: 1px solid #ddd; background: #fff; color: #646566;
}
.order-action-btn.primary { background: #2c5af0; border-color: #2c5af0; color: #fff; }
.order-action-btn.secondary { background: #fff; border-color: #ddd; color: #646566; }
.order-action-btn:disabled { opacity: 0.6; cursor: not-allowed; }
.orders-empty { text-align: center; padding: 48px 16px; }
.empty-icon, .orders-empty-icon, .org-orders-empty-icon, .msg-empty-icon,
.empty-state-block .empty-icon, .worker-empty-state .empty-icon,
.worker-order-empty .empty-icon, .org-empty-state .empty-icon {
 display: flex; align-items: center; justify-content: center;
}
.empty-icon .svg-icon, .orders-empty-icon .svg-icon, .org-orders-empty-icon .svg-icon,
.msg-empty-icon .svg-icon, .empty-state-block .empty-icon .svg-icon { opacity: .5; }
.banner-info-icon { display: inline-flex; align-items: center; vertical-align: middle; }
.banner-info-icon .svg-icon { display: block; }
.worker-action-item .icon, .org-action-item .icon { display: inline-flex; align-items: center; justify-content: center; }
.orders-empty-btn { max-width: 160px; margin: 16px auto 0; }
.load-more, .no-more { text-align: center; padding: 16px; color: #969799; font-size: 13px; }

.cancel-modal { position: fixed; inset: 0; z-index: 400; }
.cancel-modal-mask { position: absolute; inset: 0; background: rgba(0,0,0,.45); }
.cancel-popup {
 position: absolute; left: 0; right: 0; bottom: 0; background: #fff;
 border-radius: 16px 16px 0 0; padding: 16px 16px calc(16px + env(safe-area-inset-bottom));
}
.popup-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.popup-title { font-size: 16px; font-weight: 600; }
.popup-close { border: none; background: none; font-size: 24px; color: #999; cursor: pointer; }
.cancel-reasons { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
.reason-item {
 display: flex; justify-content: space-between; align-items: center; width: 100%;
 padding: 12px; border: 1px solid #eee; border-radius: 8px; background: #fff; cursor: pointer; font-size: 14px;
}
.reason-item.active { border-color: #2c5af0; background: #eef3ff; color: #2c5af0; }
.reason-check { width: 16px; height: 16px; border-radius: 50%; border: 1px solid #ccc; }
.reason-item.active .reason-check { background: #2c5af0; border-color: #2c5af0; box-shadow: inset 0 0 0 3px #fff; }
.popup-actions { display: flex; gap: 10px; }
.popup-btn { flex: 1; padding: 12px; border-radius: 999px; border: none; font-size: 15px; cursor: pointer; }
.popup-btn.secondary { background: #f5f6fa; color: #646566; }
.popup-btn.primary { background: #2c5af0; color: #fff; }
.popup-btn.primary:disabled { opacity: 0.5; cursor: not-allowed; }

/* 写评价页 */
.review-write-page { padding-bottom: 24px; }
.review-service-card { margin-top: 0; }
.review-worker-row { display: flex; gap: 12px; align-items: center; }
.review-overall { margin: 12px 0; }
.review-label { font-size: 14px; color: #646566; margin-right: 8px; }
.review-stars { display: inline-flex; gap: 4px; vertical-align: middle; }
.star-btn { border: none; background: none; font-size: 24px; color: #ddd; cursor: pointer; padding: 0; line-height: 1; }
.star-btn.active { color: #ffb800; }
.review-rating-text { display: block; margin-top: 8px; font-size: 13px; color: #969799; }
.review-detail-row { display: flex; align-items: center; gap: 8px; padding: 8px 0; border-bottom: 1px solid #f5f5f5; }
.review-detail-row:last-child { border-bottom: none; }
.review-detail-row .review-stars .star-btn { font-size: 18px; }
.review-score { margin-left: auto; font-size: 13px; color: #969799; }
.tag-limit { font-size: 12px; color: #969799; font-weight: 400; }
.review-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.review-tag {
 padding: 6px 12px; border-radius: 999px; border: 1px solid #eee; background: #fff;
 font-size: 13px; color: #646566; cursor: pointer;
}
.review-tag.selected { background: #eef3ff; border-color: #2c5af0; color: #2c5af0; }
.review-textarea { min-height: 120px; margin-top: 8px; }
.char-count { text-align: right; font-size: 12px; color: #969799; margin-top: 6px; }
.review-anonymous-row .review-anonymous-label { display: flex; align-items: center; gap: 8px; font-size: 14px; margin-bottom: 6px; }
.review-submit-wrap { padding: 0 12px 24px; }

/* 角色介绍页 */
.role-intro-page { padding-bottom: calc(100px + env(safe-area-inset-bottom)); }
.role-banner { border-radius: 12px; padding: 28px 20px; color: #fff; margin-bottom: 12px; text-align: center; }
.role-banner-worker { background: linear-gradient(135deg, #ff9500, #ffb340); }
.role-banner-org { background: linear-gradient(135deg, #9c27b0, #ba68c8); }
.role-banner-icon { font-size: 40px; margin-bottom: 8px; }
.role-banner-title { font-size: 22px; font-weight: 700; margin-bottom: 6px; }
.role-banner-slogan { font-size: 14px; opacity: 0.95; line-height: 1.5; }
.role-section { margin-bottom: 12px; }
.role-section-header { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.intro-card { font-size: 14px; line-height: 1.7; color: #646566; }
.condition-list { display: flex; flex-direction: column; gap: 10px; }
.condition-item { display: flex; gap: 10px; align-items: flex-start; }
.condition-number {
 width: 22px; height: 22px; border-radius: 50%; background: #07c160; color: #fff;
 font-size: 12px; display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.condition-text { font-size: 14px; line-height: 1.6; color: #646566; }
.flow-steps { display: flex; flex-direction: column; gap: 0; }
.flow-step { display: flex; gap: 12px; }
.step-indicator { display: flex; flex-direction: column; align-items: center; width: 32px; flex-shrink: 0; }
.step-dot {
 width: 32px; height: 32px; border-radius: 50%; background: #c8c9cc; color: #fff;
 display: flex; align-items: center; justify-content: center; font-size: 14px;
}
.step-dot.active { background: #2c5af0; }
.step-line { flex: 1; width: 2px; min-height: 24px; background: #eee; margin: 4px 0; }
.step-content { flex: 1; padding-bottom: 16px; }
.step-title { font-size: 15px; font-weight: 600; margin-bottom: 4px; }
.step-desc { font-size: 13px; color: #969799; line-height: 1.5; }
.faq-list { display: flex; flex-direction: column; gap: 8px; }
.faq-item { border: 1px solid #f0f0f0; border-radius: 8px; overflow: hidden; }
.faq-q {
 width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 8px;
 padding: 12px; border: none; background: #fff; font-size: 14px; text-align: left; cursor: pointer;
}
.faq-arrow { color: #ccc; transition: transform .2s; }
.faq-item.open .faq-arrow { transform: rotate(90deg); }
.faq-a { display: none; padding: 0 12px 12px; font-size: 13px; color: #646566; line-height: 1.6; }
.faq-item.open .faq-a { display: block; }
.role-bottom-action {
 position: fixed; left: 0; right: 0; bottom: 0; z-index: 50;
 padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid #eee;
 text-align: center;
}
.role-apply-btn { max-width: 320px; margin: 0 auto; }
.role-apply-worker { background: #ff9500 !important; }
.role-apply-org { background: #9c27b0 !important; }
.role-apply-tip { margin-top: 8px; }

/* 关于我们 */
.about-page {
 min-height: calc(100vh - 46px); display: flex; flex-direction: column;
 padding: 0 0 calc(56px + env(safe-area-inset-bottom)); background: #f5f5f5;
}
.about-body { flex: 1; padding: 12px 12px 0; }
.about-footer-fixed {
 position: fixed; left: 0; right: 0; bottom: 0; z-index: 10;
 text-align: center; padding: 16px 12px calc(16px + env(safe-area-inset-bottom));
 color: #969799; font-size: 12px; background: #f5f5f5;
}
.about-footer-fixed p { margin: 0; }
.about-hero { text-align: center; padding: 24px 0 20px; }
.about-logo {
 width: 88px; height: 88px; object-fit: cover; border-radius: 50%;
 border: 3px solid rgba(44, 90, 240, 0.15); box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
 margin: 0 auto 16px; display: block; background: #fff;
}
.about-hero h2 { margin: 0 0 6px; font-size: 22px; }
.about-version { margin: 0 0 12px; font-size: 13px; color: #969799; }
.about-slogan {
 margin: 0 auto; max-width: 320px; font-size: 14px; line-height: 1.7; color: #646566;
}
.about-text { font-size: 14px; line-height: 1.7; color: #646566; margin: 0 0 12px; }
.about-features { display: flex; flex-direction: column; gap: 10px; }
.about-feature-item { display: flex; align-items: center; gap: 8px; font-size: 14px; color: #323233; }
.about-contact-row {
 display: flex; justify-content: space-between; gap: 12px; padding: 10px 0;
 border-bottom: 1px solid #f5f5f5; font-size: 14px;
}
.about-contact-row:last-child { border-bottom: none; }
.about-contact-row a { color: #2c5af0; text-decoration: none; }
.about-footer { text-align: center; color: #969799; font-size: 12px; }

/* 设置页 */
.settings-page { padding-bottom: 24px; }
.settings-group { padding-top: 8px; padding-bottom: 4px; }
.settings-group-title {
 font-size: 13px; color: #969799; margin-bottom: 4px; padding: 0 4px;
}
.settings-row {
 display: flex; align-items: center; gap: 10px; padding: 14px 4px;
 border-bottom: 1px solid #f5f5f5; text-decoration: none; color: inherit;
}
.settings-row:last-child { border-bottom: none; }
.settings-label { flex: 1; font-size: 15px; color: #323233; }
.settings-value { font-size: 13px; color: #969799; margin-right: 4px; }
.settings-arrow { color: #ccc; font-size: 18px; }
.settings-switch-row { cursor: pointer; }
.settings-switch {
 width: 44px; height: 24px; appearance: none; background: #dcdee0; border-radius: 999px;
 position: relative; cursor: pointer; flex-shrink: 0; transition: background .2s;
}
.settings-switch::after {
 content: ''; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px;
 border-radius: 50%; background: #fff; transition: transform .2s;
}
.settings-switch:checked { background: #2c5af0; }
.settings-switch:checked::after { transform: translateX(20px); }
.settings-logout-wrap { padding: 16px 12px 24px; }
.settings-logout-btn { color: #ee0a24; border-color: #ee0a24; }

/* 申请流程页 */
.apply-page.org-apply-step,
.apply-page.settlement-step,
.apply-page.bank-form-step {
 padding: 0 !important; background: rgba(0,0,0,.45); min-height: calc(100vh - 46px);
}
.apply-page.org-apply-step { display: flex; align-items: flex-end; }
.org-selector-panel {
 width: 100%; background: #fff; border-radius: 16px 16px 0 0; max-height: 85vh;
 display: flex; flex-direction: column; padding: 0 0 env(safe-area-inset-bottom);
 box-shadow: 0 -4px 20px rgba(0,0,0,.15);
}
.org-selector-header { padding: 20px 20px 12px; text-align: center; border-bottom: 1px solid #f5f5f5; }
.org-selector-title { font-size: 18px; font-weight: 600; color: #333; margin-bottom: 8px; }
.org-selector-subtitle { font-size: 13px; color: #999; }
.org-search-wrapper {
 display: flex; align-items: center; gap: 8px; padding: 12px 16px;
 border-bottom: 1px solid #f5f5f5;
}
.org-search-input {
 flex: 1; border: none; background: #f5f6fa; border-radius: 8px; padding: 10px 12px; font-size: 14px;
}
.org-search-clear { border: none; background: none; color: #1989fa; font-size: 14px; cursor: pointer; flex-shrink: 0; }
.org-search-tip { padding: 8px 20px; background: #f8f9fa; font-size: 13px; color: #666; border-bottom: 1px solid #f0f0f0; }
.org-list { flex: 1; overflow-y: auto; padding: 12px 16px; max-height: 45vh; }
.org-item {
 width: 100%; display: flex; align-items: center; justify-content: space-between;
 padding: 16px; margin-bottom: 12px; background: #f8f9fa; border-radius: 12px;
 border: 2px solid transparent; cursor: pointer; text-align: left; transition: all .2s ease;
}
.org-item.selected { background: #e8f5e8; border-color: #07c160; }
.org-info { display: flex; align-items: center; flex: 1; min-width: 0; }
.org-avatar { width: 48px; height: 48px; border-radius: 8px; margin-right: 12px; object-fit: cover; background: #f0f0f0; flex-shrink: 0; }
.org-avatar-placeholder { display: flex; align-items: center; justify-content: center; font-size: 22px; }
.org-details { flex: 1; min-width: 0; }
.org-name { font-size: 16px; font-weight: 600; color: #333; margin-bottom: 4px; }
.org-responsible { font-size: 13px; color: #666; margin-bottom: 4px; }
.org-commission-rate { font-size: 13px; color: #07c160; font-weight: 600; margin-bottom: 4px; }
.org-description {
 font-size: 12px; color: #999; line-height: 1.4; overflow: hidden;
 display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.org-member-count {
 font-size: 12px; color: #1989fa; margin-top: 4px; display: inline-block;
 background: rgba(25,137,250,.1); padding: 2px 8px; border-radius: 4px;
}
.org-check { margin-left: 12px; color: #07c160; font-size: 20px; font-weight: 700; flex-shrink: 0; }
.org-selector-actions { display: flex; padding: 16px; gap: 12px; border-top: 1px solid #f5f5f5; }
.org-cancel-btn, .org-confirm-btn {
 flex: 1; height: 44px; border-radius: 22px; font-size: 15px; font-weight: 600; cursor: pointer; border: none;
}
.org-cancel-btn { background: #f5f5f5; color: #666; }
.org-confirm-btn { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: #fff; }
.org-confirm-btn:disabled { opacity: .5; cursor: not-allowed; }
.org-selector-empty { text-align: center; padding: 40px 20px; color: #999; }
.org-selector-empty-icon { font-size: 40px; margin-bottom: 8px; }

/* 掌柜认证页（对齐小程序 certification） */
.org-cert-page {
 padding: 0 !important; min-height: calc(100vh - 46px);
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
.org-cert-header { padding: 32px 16px 24px; text-align: center; color: #fff; }
.org-cert-header-compact { padding-bottom: 12px; }
.org-cert-header-icon { font-size: 32px; margin-bottom: 8px; }
.org-cert-header-title { font-size: 24px; font-weight: 700; margin: 0 0 8px; text-shadow: 0 2px 4px rgba(0,0,0,.15); }
.org-cert-header-sub { font-size: 14px; opacity: .9; line-height: 1.5; margin: 0; }
.org-fee-wrap { padding: 0 16px 12px; }
.org-fee-card { border-radius: 12px; padding: 16px; box-shadow: 0 4px 12px rgba(0,0,0,.1); }
.org-fee-free { background: linear-gradient(135deg, #d4fc79 0%, #96e6a1 100%); }
.org-fee-required { background: linear-gradient(135deg, #ffeaa7 0%, #fdcb6e 100%); }
.org-fee-header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.org-fee-icon { font-size: 20px; }
.org-fee-title { font-size: 16px; font-weight: 600; color: #333; }
.org-fee-body { padding-left: 28px; }
.org-fee-amount { display: flex; align-items: baseline; gap: 4px; margin-bottom: 8px; font-size: 14px; color: #666; }
.org-fee-amount strong { font-size: 24px; color: #ff6b6b; font-weight: 700; }
.org-fee-tip { font-size: 13px; color: #666; line-height: 1.5; margin: 0; }
.org-fee-paid { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; padding: 6px 12px; background: rgba(7,193,96,.12); border-radius: 6px; color: #07c160; font-size: 13px; font-weight: 500; }

/* 掌柜财务 - 分账明细（对齐小程序 finance 收益明细 Tab，独立 ofd- 类名避免全局样式冲突） */
.org-finance-tab-panel { padding: 0 0 12px; }
.org-finance-filter-section {
 background: #fff; border-radius: 12px; padding: 12px 16px; margin-bottom: 12px;
}
.org-finance-filter-item {
 display: flex; align-items: center; justify-content: space-between; width: 100%;
 padding: 0; border: none; background: transparent; cursor: pointer; text-align: left;
}
.org-finance-filter-item .filter-label { font-size: 14px; color: #333; }
.org-finance-filter-item .filter-value { font-size: 14px; color: #667eea; margin-left: auto; margin-right: 8px; }
.org-finance-filter-item .filter-arrow { font-size: 10px; color: #969799; }
.org-finance-detail-list {
 background: #fff; border-radius: 12px; overflow: hidden;
}
.org-finance-detail-list .ofd-item {
 display: block;
 padding: 12px 16px;
 border-bottom: 1px solid #f0f0f0;
 background: #fff;
}
.org-finance-detail-list .ofd-item:last-child { border-bottom: none; }
.org-finance-detail-list .ofd-header {
 display: flex; justify-content: space-between; align-items: center; gap: 8px;
 margin-bottom: 12px;
}
.org-finance-detail-list .ofd-order-no {
 font-size: 16px; font-weight: 500; color: #333;
 flex: 1; min-width: 0; word-break: break-all;
}
.org-finance-detail-list .ofd-order-time {
 font-size: 12px; color: #999; flex-shrink: 0; white-space: nowrap;
}
.org-finance-detail-list .ofd-body { margin-bottom: 12px; }
.org-finance-detail-list .ofd-row {
 display: flex; justify-content: space-between; align-items: flex-start;
 gap: 12px; margin-bottom: 8px; padding: 0; border: none;
}
.org-finance-detail-list .ofd-row:last-child { margin-bottom: 0; }
.org-finance-detail-list .ofd-label {
 font-size: 13px; color: #666; flex-shrink: 0;
}
.org-finance-detail-list .ofd-value {
 font-size: 13px; color: #333; text-align: right; flex: none; word-break: break-all;
}
.org-finance-detail-list .ofd-value-primary { color: #667eea; font-weight: 500; }
.org-finance-detail-list .ofd-footer {
 display: flex; justify-content: space-between; align-items: center; gap: 10px;
}
.org-finance-detail-list .ofd-status {
 font-size: 12px; padding: 4px 10px; border-radius: 12px; color: #fff; white-space: nowrap;
}
.org-finance-detail-list .ofd-status.pending { background: #ff6b35; }
.org-finance-detail-list .ofd-status.completed { background: #07c160; }
.org-finance-detail-list .ofd-status.cancelled { background: #999; }
.org-finance-detail-list .ofd-footer .btn-sm {
 width: auto; margin: 0; padding: 6px 14px; font-size: 13px; border-radius: 999px;
}
.org-finance-empty { text-align: center; padding: 48px 16px; color: #969799; font-size: 14px; }
.org-finance-load-more { text-align: center; padding: 16px 0 4px; }
.org-finance-load-more .btn { width: auto; min-width: 140px; margin: 0 auto; padding: 8px 20px; font-size: 14px; }
.org-finance-member-item {
 padding: 14px 0; border-bottom: 1px solid #f0f0f0;
}
.org-finance-member-item:last-child { border-bottom: none; }
.org-finance-member-head { display: flex; align-items: center; gap: 10px; }
.org-finance-member-avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.org-finance-member-main { flex: 1; min-width: 0; }
.org-finance-member-name { font-size: 15px; font-weight: 600; color: #333; }
.org-finance-member-earn { text-align: right; flex-shrink: 0; }
.org-finance-earn-num { font-size: 16px; font-weight: 700; color: #667eea; margin-bottom: 4px; }
.org-finance-member-actions { display: flex; justify-content: flex-end; margin-top: 10px; }
.org-finance-member-actions .btn-sm { width: auto; margin: 0; padding: 6px 14px; font-size: 13px; }
.org-cert-form-wrap {
 background: #f8f9fa; border-radius: 16px 16px 0 0; padding: 16px; min-height: 50vh;
}
.org-form-section { margin-bottom: 16px; }
.org-section-title { display: flex; align-items: center; gap: 8px; font-size: 16px; font-weight: 600; color: #333; margin-bottom: 12px; padding: 0 4px; }
.org-field-group { background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,.06); }
.org-field-row { display: flex; align-items: center; padding: 14px 16px; border-bottom: 1px solid #f5f5f5; gap: 12px; }
.org-field-row:last-child { border-bottom: none; }
.org-field-row-textarea { flex-direction: column; align-items: stretch; }
.org-field-label { width: 80px; flex-shrink: 0; font-size: 15px; font-weight: 500; color: #333; }
.org-field-row-textarea .org-field-label { width: auto; margin-bottom: 8px; }
.org-field-label em { color: #ee0a24; font-style: normal; }
.org-field-input, .org-field-textarea {
 flex: 1; border: none; font-size: 15px; color: #333; background: transparent; outline: none; width: 100%;
}
.org-field-textarea { min-height: 72px; resize: vertical; line-height: 1.5; }
.org-field-input::placeholder, .org-field-textarea::placeholder { color: #999; }
.org-notice-section { background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 12px; padding: 16px; margin-bottom: 16px; }
.org-notice-header { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; color: #856404; margin-bottom: 12px; }
.org-notice-list { display: flex; flex-direction: column; gap: 8px; }
.org-notice-item { font-size: 13px; color: #856404; line-height: 1.6; padding-left: 14px; position: relative; }
.org-notice-item::before { content: '•'; position: absolute; left: 0; color: #667eea; font-weight: bold; }
.org-submit-section { padding: 8px 0 16px; }
.org-payment-btn {
 width: 100%; height: 44px; border: none; border-radius: 22px; margin-bottom: 12px; cursor: pointer;
 background: linear-gradient(135deg, #fdcb6e 0%, #e17055 100%); color: #fff; font-size: 16px; font-weight: 600;
 box-shadow: 0 4px 12px rgba(253,203,110,.4);
}
.org-submit-btn {
 width: 100%; height: 44px; border: none; border-radius: 22px; cursor: pointer;
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: #fff; font-size: 16px; font-weight: 600;
 box-shadow: 0 4px 12px rgba(102,126,234,.4);
}
.org-submit-btn:disabled { background: #f5f5f5; color: #ccc; box-shadow: none; }
.org-submit-tip { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 12px; font-size: 12px; color: #999; }
.org-cert-status-card {
 background: #fff; border-radius: 12px; padding: 24px 16px; text-align: center; box-shadow: 0 2px 8px rgba(0,0,0,.06);
}
.org-cert-status-icon { font-size: 40px; margin-bottom: 12px; }
.org-cert-status-card h3 { margin: 0 0 8px; font-size: 18px; }
.org-cert-actions { padding: 16px 0; }
.org-cert-submit-btn { width: 100%; border-radius: 22px !important; }

/* 结算方式 / 银行卡弹窗（对齐小程序 profile 申请流程） */
.apply-overlay {
 min-height: calc(100vh - 46px); display: flex; align-items: flex-end; justify-content: center;
}
.settlement-panel { width: 100%; max-height: 70vh; }
.bank-form-panel { width: 100%; max-height: 85vh; }
.settlement-panel > .settlement-modal,
.bank-form-panel > .bank-form-modal {
 background: #fff; border-radius: 16px 16px 0 0; padding: 16px 16px calc(16px + env(safe-area-inset-bottom));
 box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.15);
 max-height: inherit; display: flex; flex-direction: column;
}
.settlement-modal .modal-header,
.bank-form-modal .modal-header { text-align: center; padding: 8px 0 16px; border-bottom: 1px solid #f5f5f5; }
.settlement-modal .modal-title,
.bank-form-modal .modal-title { font-size: 18px; font-weight: 600; color: #333; }
.settlement-modal .modal-subtitle { font-size: 13px; color: #999; margin-top: 6px; }
.settlement-options { padding: 16px 0; overflow-y: auto; }
.settlement-option {
 width: 100%; display: flex; align-items: center; gap: 12px; text-align: left;
 padding: 16px; background: #f8f8f8; border-radius: 12px; margin-bottom: 12px;
 border: 2px solid transparent; cursor: pointer; transition: all 0.2s ease;
}
.settlement-option.recommended {
 background: linear-gradient(135deg, #f0fff4 0%, #e8f5e9 100%); border-color: #07c160;
}
.settlement-option:active { transform: scale(0.98); }
.settlement-option .option-icon {
 width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
 font-size: 18px; font-weight: 700; flex-shrink: 0;
}
.option-icon-success { background: rgba(7, 193, 96, 0.12); color: #07c160; }
.option-icon-warn { background: rgba(255, 149, 0, 0.12); color: #ff9500; }
.settlement-option .option-content { flex: 1; min-width: 0; }
.settlement-option .option-title {
 display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
 font-size: 16px; font-weight: 600; color: #333; margin-bottom: 6px;
}
.settlement-option .recommend-badge {
 padding: 2px 8px; background: #07c160; color: #fff; font-size: 11px; border-radius: 6px; font-weight: 500;
}
.settlement-option .option-desc { display: block; font-size: 13px; color: #666; line-height: 1.5; margin-bottom: 2px; }
.settlement-option .option-warning { display: block; font-size: 13px; color: #ff9500; margin-top: 6px; }
.settlement-option .option-arrow { color: #c8c9cc; font-size: 18px; flex-shrink: 0; }
.modal-actions { padding-top: 8px; border-top: 1px solid #f5f5f5; }
.settlement-cancel-btn {
 width: 100%; height: 44px; border: none; border-radius: 22px; background: #f5f5f5;
 color: #666; font-size: 15px; font-weight: 500; cursor: pointer;
}
.bank-form-content { flex: 1; overflow-y: auto; padding: 12px 0; }
.bank-form-row {
 display: flex; align-items: center; gap: 12px; padding: 14px 0; border-bottom: 1px solid #f5f5f5;
}
.bank-form-label { width: 88px; flex-shrink: 0; font-size: 15px; color: #333; font-weight: 500; }
.bank-form-label em { color: #ee0a24; font-style: normal; }
.bank-form-input {
 flex: 1; border: none; font-size: 15px; color: #333; background: transparent; outline: none; min-width: 0;
}
.bank-form-input::placeholder { color: #c8c9cc; }
.bank-form-tips {
 display: flex; gap: 8px; padding: 12px; margin-top: 8px; background: #eef3ff; border-radius: 8px;
 font-size: 12px; color: #666; line-height: 1.6;
}
.bank-form-tips > span { color: #1989fa; flex-shrink: 0; }
.bank-form-section-title { font-size: 14px; font-weight: 600; margin-bottom: 8px; }
.bank-form-section { margin-top: 16px; padding-top: 12px; border-top: 1px solid #f5f5f5; }
.bank-form-upload-row { align-items: flex-start; }
.bank-form-upload { flex: 1; min-width: 0; }
.bank-form-upload input[type="file"] { width: 100%; font-size: 14px; }
.bank-preview-btn.inline { width: auto; margin-top: 8px; }
.preview-confirmed-tip { color: #07c160; margin-top: 8px; }
.protocol-preview-wrap { max-height: 60vh; overflow-y: auto; }
.bank-form-modal .modal-subtitle { margin-top: 6px; font-size: 13px; color: #969799; }
.bank-form-actions { display: flex; flex-direction: column; gap: 10px; padding-top: 12px; border-top: 1px solid #f5f5f5; }
.bank-preview-btn {
 width: 100%; height: 44px; border: 1px solid #2c5af0; border-radius: 22px; background: #fff;
 color: #2c5af0; font-size: 15px; font-weight: 600; cursor: pointer;
}
.bank-submit-btn {
 width: 100%; height: 44px; border: none; border-radius: 22px;
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: #fff;
 font-size: 16px; font-weight: 600; cursor: pointer;
}

/* 编辑资料（对齐小程序 profile-edit） */
.profile-edit-page { padding: 0 0 88px !important; background: #f5f5f5; }
.profile-edit-avatar-section {
 display: flex; justify-content: center; padding: 32px 0; background: #fff; margin-bottom: 12px;
}
.profile-edit-avatar-wrap { position: relative; width: 100px; height: 100px; }
.profile-edit-avatar {
 width: 100%; height: 100%; border-radius: 50%; object-fit: cover; border: 3px solid #e8e8e8; display: block;
}
.profile-edit-avatar-overlay {
 position: absolute; inset: 0; border-radius: 50%; background: rgba(0,0,0,.5);
 display: flex; flex-direction: column; align-items: center; justify-content: center;
 opacity: 0; transition: opacity .2s; cursor: pointer; color: #fff;
}
.profile-edit-avatar-wrap:active .profile-edit-avatar-overlay,
.profile-edit-avatar-overlay:focus-within { opacity: 1; }
.profile-edit-camera { font-size: 20px; line-height: 1; }
.profile-edit-upload-text { font-size: 12px; margin-top: 4px; }
.profile-edit-group {
 background: #fff; margin: 0 12px 12px; border-radius: 12px; overflow: hidden;
 box-shadow: 0 2px 8px rgba(0,0,0,.04);
}
.profile-edit-group-title {
 padding: 12px 16px 8px; font-size: 14px; color: #969799; font-weight: 500;
}
.profile-edit-cell {
 display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-top: 1px solid #f5f5f5;
}
.profile-edit-cell-column { flex-direction: column; align-items: stretch; }
.profile-edit-cell-link { cursor: pointer; }
.profile-edit-label { width: 72px; flex-shrink: 0; font-size: 15px; color: #323233; font-weight: 500; }
.profile-edit-inline { flex: 1; display: flex; align-items: center; gap: 8px; min-width: 0; }
.profile-edit-input, .profile-edit-textarea {
 flex: 1; border: none; font-size: 14px; color: #323233; background: transparent; outline: none; min-width: 0;
}
.profile-edit-textarea { width: 100%; min-height: 72px; resize: vertical; line-height: 1.5; margin-top: 8px; }
.profile-edit-input::placeholder, .profile-edit-textarea::placeholder { color: #c8c9cc; }
.profile-edit-value { flex: 1; text-align: right; color: #646566; font-size: 14px; }
.profile-edit-arrow { color: #c8c9cc; font-size: 18px; }
.profile-edit-select-hidden { display: none; }
.profile-edit-tip-btn {
 width: 24px; height: 24px; border-radius: 50%; border: none; background: rgba(25,137,250,.1);
 color: #1989fa; font-size: 13px; cursor: pointer; flex-shrink: 0;
}
.profile-edit-field-tip {
 display: flex; align-items: center; gap: 4px; padding: 0 16px 12px; font-size: 12px; color: #969799;
}
.profile-edit-field-tip-inset { background: #fff; }
.quick-get-btn {
 flex-shrink: 0; display: inline-flex; align-items: center; gap: 4px; padding: 6px 12px;
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: #fff; font-size: 12px;
 font-weight: 500; border: none; border-radius: 16px; cursor: pointer;
 box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);
}
.quick-get-btn:active { transform: scale(0.95); }
.profile-edit-save-section {
 position: fixed; left: 0; right: 0; bottom: 0; padding: 16px;
 padding-bottom: calc(16px + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid #ebedf0; z-index: 100;
}
.profile-edit-save-btn {
 width: 100%; height: 44px; border: none; border-radius: 22px; background: #2c5af0; color: #fff;
 font-size: 16px; font-weight: 600; cursor: pointer;
}
.profile-edit-save-btn:disabled { opacity: .65; cursor: not-allowed; }

.apply-page .org-select-list { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; max-height: 280px; overflow-y: auto; }
.org-select-item {
 width: 100%; text-align: left; padding: 12px; border: 1px solid #eee; border-radius: 10px;
 background: #fff; cursor: pointer;
}
.org-select-item-wrap { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.org-select-item-wrap.active .org-select-item { border-color: #2c5af0; background: #eef3ff; }
.org-select-item-wrap .org-select-item { flex: 1; margin: 0; }
.boss-profile-row { display: flex; gap: 12px; align-items: center; margin-bottom: 12px; }
.boss-action-row { display: flex; gap: 8px; }
.empty-state-card { text-align: center; padding: 24px 16px; }
.empty-state-card .empty-title { font-size: 18px; font-weight: 600; margin-bottom: 8px; }

/* 掌柜控制台（对齐店小二工作台布局） */
.org-console-page { padding: 0; background: #f5f5f5; overflow-x: hidden; width: 100%; }
.org-top-navbar {
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
 padding: calc(12px + env(safe-area-inset-top, 0px)) 16px 16px;
 width: 100%; box-sizing: border-box;
}
.org-top-navbar .navbar-content {
 display: flex; align-items: center; justify-content: space-between; gap: 12px;
 height: auto; min-height: 0; padding: 0;
}
.org-home-content { padding: 12px; padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px)); }
.org-console-brand { display: flex; align-items: center; gap: 12px; color: #fff; text-decoration: none; flex: 1; min-width: 0; }
.org-console-logo { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; border: 2px solid rgba(255,255,255,.35); flex-shrink: 0; }
.org-console-name { font-size: 18px; font-weight: 600; margin-bottom: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.org-console-status { display: inline-block; font-size: 12px; padding: 2px 10px; border-radius: 999px; background: rgba(255,255,255,.2); color: #fff; }
.org-console-status.verified { background: rgba(7,193,96,.85); }
.org-console-status.unverified { background: rgba(255,107,53,.85); }
.org-console-msg-btn {
 width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,.15);
 display: flex; align-items: center; justify-content: center; text-decoration: none; font-size: 18px; flex-shrink: 0;
}
.org-auth-card { text-align: center; }
.org-auth-tip { margin-bottom: 12px; color: #ff6b35; font-size: 14px; }
.org-overview-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 12px; }
.org-overview-item { text-align: center; text-decoration: none; color: inherit; padding: 8px 4px; border-radius: 8px; background: #f8f9fc; }
.org-overview-item .num { font-size: 18px; font-weight: 700; color: #2c5af0; }
.org-overview-item .label { font-size: 11px; color: #666; margin-top: 4px; line-height: 1.3; }
.org-actions-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 12px; }
.org-action-item {
 display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 14px 8px;
 border-radius: 10px; background: #f8f9fc; text-decoration: none; color: #333; font-size: 13px;
}
.org-action-item .icon { font-size: 22px; line-height: 1; }
.org-task-card { border: 1px solid #eef0f5; border-radius: 10px; padding: 12px; margin-bottom: 10px; }
.org-task-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.org-task-head .avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; }
.org-task-actions { display: flex; gap: 8px; }
.org-task-actions .btn { flex: 1; margin: 0; padding: 8px 10px; font-size: 13px; }
.org-empty-state { text-align: center; padding: 28px 16px; }
.org-empty-state .empty-icon { font-size: 40px; margin-bottom: 8px; opacity: .5; }
.org-empty-state .empty-title { font-weight: 600; margin-bottom: 4px; }
.risk-list { padding-left: 18px; line-height: 1.8; margin: 0; }
.protocol-preview-img { max-width: 100%; border-radius: 8px; border: 1px solid #eee; margin-top: 8px; }

/* ===== 店小二详情页（对齐小程序 service-detail） ===== */
.worker-detail-page { padding: 0; background: #f5f7fa; }
.worker-detail-body { padding: 12px; }
.video-intro-section {
 width: 100%; position: relative; overflow: hidden; background: #000;
}
.video-intro-section .intro-video {
 width: 100%; height: 250px; display: block; object-fit: cover; background: #000;
}
.video-intro-section.no-video {
 height: 250px; display: flex; flex-direction: column; align-items: center; justify-content: center;
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
 position: relative;
}
.video-intro-section.no-video::before {
 content: ''; position: absolute; inset: 0; opacity: 0.15;
 background: linear-gradient(45deg, #fff 25%, transparent 25%),
 linear-gradient(-45deg, #fff 25%, transparent 25%),
 linear-gradient(45deg, transparent 75%, #fff 75%),
 linear-gradient(-45deg, transparent 75%, #fff 75%);
 background-size: 30px 30px;
}
.no-video-icon {
 width: 56px; height: 56px; border-radius: 50%; background: rgba(255,255,255,0.25);
 color: #fff; font-size: 22px; display: flex; align-items: center; justify-content: center;
 position: relative; z-index: 1;
}
.no-video-text { margin-top: 12px; font-size: 14px; color: rgba(255,255,255,0.85); position: relative; z-index: 1; }
.worker-detail-header { margin-bottom: 0; }
.worker-detail-top { display: flex; align-items: flex-start; gap: 12px; }
.worker-detail-avatar-wrap { position: relative; flex-shrink: 0; }
.worker-detail-avatar { width: 60px; height: 60px; border-radius: 50%; object-fit: cover; display: block; }
.worker-detail-status-badge {
 position: absolute; bottom: 0; right: 0; padding: 2px 6px; border-radius: 6px;
 font-size: 10px; color: #fff; line-height: 1.4;
}
.worker-detail-status-badge.status-online { background: #52c41a; }
.worker-detail-status-badge.status-busy { background: #faad14; }
.worker-detail-status-badge.status-break { background: #909399; }
.worker-detail-status-badge.status-offline { background: #999; }
.worker-detail-meta { flex: 1; min-width: 0; }
.worker-detail-name { font-size: 18px; font-weight: 600; margin: 0 0 4px; }
.worker-detail-rating { font-size: 14px; color: #ff9500; margin: 4px 0 0; }
.voice-intro-btn {
 margin-top: 8px; padding: 8px 12px; width: 100%; box-sizing: border-box;
 background: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 100%);
 border: 1px solid rgba(25, 137, 250, 0.2); border-radius: 8px;
 display: flex; align-items: center; gap: 8px; font-size: 13px; color: #1989fa; cursor: pointer;
}
.voice-intro-icon { font-size: 14px; }
.voice-intro-dur { margin-left: auto; font-size: 12px; color: #969799; }
.worker-status-info {
 background: linear-gradient(135deg, #f8f9fa 0%, #f0f2f5 100%);
 border-left: 3px solid #2c5af0; border-radius: 8px;
 box-shadow: 0 1px 4px rgba(0,0,0,0.04);
}
.status-info-item {
 display: flex; justify-content: space-between; align-items: center;
 padding: 10px 0; line-height: 1.5;
}
.status-info-item:not(:last-child) { border-bottom: 1px dashed #e0e0e0; }
.status-info-item .info-label { font-size: 14px; color: #666; font-weight: 500; }
.status-info-item .info-value { font-size: 14px; color: #333; font-weight: 600; text-align: right; }
.status-value { font-size: 14px; font-weight: 600; }
.status-value.status-online { color: #52c41a; }
.status-value.status-busy { color: #faad14; }
.status-value.status-break { color: #909399; }
.status-value.status-offline { color: #999; }
.service-cards { display: flex; flex-direction: column; gap: 10px; margin-top: 8px; }
.service-card {
 position: relative; overflow: hidden;
 background: linear-gradient(135deg, #fff 0%, #f8f9fa 100%);
 border-radius: 10px; padding: 14px; border: 1px solid #f0f0f0;
 box-shadow: 0 2px 6px rgba(0,0,0,0.06);
}
.service-card::before {
 content: ''; position: absolute; top: 0; right: 0; width: 60px; height: 60px;
 background: linear-gradient(135deg, rgba(255,107,53,0.1) 0%, transparent 100%);
 border-radius: 0 0 0 100%;
}
.service-card-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.service-name { font-size: 15px; font-weight: 600; color: #333; }
.skill-badge {
 display: inline-flex; padding: 2px 8px; font-size: 11px; font-weight: 500; color: #fff;
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 6px;
}
.service-card-price { display: flex; align-items: baseline; gap: 2px; flex-wrap: wrap; }
.price-symbol { font-size: 13px; color: #ff6b35; font-weight: 600; }
.price-num { font-size: 22px; color: #ff6b35; font-weight: 700; line-height: 1; }
.price-unit { font-size: 12px; color: #969799; margin-right: 8px; }
.service-orders { font-size: 12px; color: #969799; margin-left: auto; }
.service-desc { margin: 8px 0 0; font-size: 13px; color: #666; line-height: 1.5; }
.worker-intro-text { font-size: 14px; color: #666; line-height: 1.7; white-space: pre-wrap; margin: 0; }

/* ===== 消息页（对齐小程序 chat-list） ===== */
.messages-page {
 min-height: calc(100vh - 46px - 60px); background: #f5f7fa; padding: 0;
 position: relative; padding-bottom: calc(60px + env(safe-area-inset-bottom));
}
.msg-filter-tabs {
 display: flex; gap: 12px; padding: 16px; background: #fff;
}
.msg-filter-tab {
 flex: 1; position: relative; padding: 12px 0; border-radius: 8px;
 background: #f8f9fa; border: 1px solid #e9ecef;
 display: flex; align-items: center; justify-content: center;
 font-size: 15px; color: #495057; font-weight: 500; cursor: pointer;
 transition: all 0.2s ease;
}
.msg-filter-tab.active {
 background: #007bff; border-color: #007bff; color: #fff; font-weight: 600;
 box-shadow: 0 2px 4px rgba(0, 123, 255, 0.2);
}
.msg-filter-badge {
 min-width: 18px; height: 18px; background: #dc3545; border-radius: 9px;
 display: inline-flex; align-items: center; justify-content: center;
 font-size: 11px; color: #fff; font-weight: 600; margin-left: 6px; padding: 0 6px;
 border: 2px solid #fff;
}
.msg-filter-tab.active .msg-filter-badge {
 background: #fff; color: #007bff; border-color: #007bff;
}
.msg-list-wrap { background: #f5f7fa; min-height: 200px; }
.msg-list-wrap.msg-list { padding: 16px 0; background: #fff; }
.msg-empty-state {
 display: flex; flex-direction: column; align-items: center; justify-content: center;
 padding: 60px 20px; background: #fff; margin: 20px; border-radius: 12px;
}
.msg-empty-icon { font-size: 48px; opacity: 0.5; }
.msg-empty-title { font-size: 16px; color: #666; margin: 16px 0 8px; font-weight: 500; }
.msg-empty-desc { font-size: 14px; color: #999; margin-bottom: 24px; text-align: center; }
.msg-empty-btn {
 display: flex; align-items: center; justify-content: center;
 width: 180px; margin: 0 auto 10px; text-align: center;
 color: #fff !important;
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
 border: none !important; border-radius: 20px !important;
}
.msg-empty-actions .msg-empty-btn.btn-plain {
 color: #fff !important;
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
 border: none !important;
}
.msg-empty-actions { display: flex; flex-direction: column; align-items: center; width: 100%; }
.msg-service-fab {
 position: fixed; bottom: calc(100px + env(safe-area-inset-bottom)); right: 20px; z-index: 100;
 width: 56px; height: 56px; border: none; border-radius: 28px; cursor: pointer;
 background: linear-gradient(135deg, #1989fa 0%, #0d6efd 100%);
 color: #fff; font-size: 22px; line-height: 1;
 box-shadow: 0 4px 16px rgba(25, 137, 250, 0.4);
 display: flex; align-items: center; justify-content: center;
 transition: transform 0.2s ease;
}
.msg-service-fab:active { transform: scale(0.95); }

/* ===== 帮助与反馈（对齐小程序 help） ===== */
.help-cat-header { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.help-cat-icon { font-size: 18px; }
.help-cat-title { font-size: 16px; font-weight: 600; }
.help-tutorial-cat { margin-bottom: 12px; }
.help-contact-group { padding: 0; overflow: hidden; }
.help-contact-group .section-title { padding: 12px 12px 8px; margin: 0; font-size: 14px; color: #969799; }
.help-contact-row {
 display: flex; justify-content: space-between; align-items: center;
 padding: 14px 12px; border-top: 1px solid #f0f0f0; text-decoration: none; color: inherit;
 font-size: 15px;
}
.help-contact-row:active { background: #f7f8fa; }
.help-tips-box { background: #eef3ff; border: none; }
.help-tips-title { font-size: 14px; font-weight: 600; color: #1989fa; margin-bottom: 8px; }
.help-tips-list { margin: 0; padding-left: 0; list-style: none; font-size: 13px; color: #666; line-height: 1.8; }
.help-tips-list li::before { content: '• '; color: #1989fa; }

/* ===== 掌柜订单管理 ===== */
.org-orders-tabs { position: sticky; top: 46px; z-index: 20; background: #f7f8fa; padding-top: 8px; }
.org-orders-tab-scroll .tab-chip { position: relative; padding-right: 18px; }
.org-orders-stats-wrap { padding: 0 12px 8px; background: #f7f8fa; }
.org-order-stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.org-order-stat-item {
 background: #fff; border-radius: 10px; padding: 10px 6px; text-align: center;
 box-shadow: 0 2px 6px rgba(0,0,0,.04);
}
.org-order-stat-item .num { font-size: 14px; font-weight: 700; color: #2c5af0; word-break: break-all; }
.org-order-stat-item .label { font-size: 11px; color: #969799; margin-top: 4px; }
.org-orders-page { padding-top: 0; }
.org-order-card { margin-bottom: 12px; cursor: pointer; }
.org-order-header { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.org-order-customer { display: flex; gap: 10px; align-items: center; margin-bottom: 10px; }
.org-order-customer .avatar { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }
.org-order-service { background: #f8f9fa; border-radius: 8px; padding: 10px; margin-bottom: 10px; }
.org-order-service .service-row { display: flex; justify-content: space-between; font-size: 13px; padding: 4px 0; color: #646566; }
.org-order-amount-row { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 8px; flex-wrap: wrap; gap: 6px; }
.amount-red { color: #ee0a24; font-weight: 700; white-space: nowrap; }
.org-order-actions { display: flex; justify-content: flex-end; gap: 8px; padding-top: 10px; border-top: 1px solid #f5f5f5; }
.org-orders-empty { text-align: center; padding: 48px 16px; }

/* ===== 主页上榜（对齐小程序） ===== */
.homepage-ads-page { min-height: 100vh; background: #f5f5f5; padding-bottom: 24px; }
.homepage-ads-header {
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
 padding: 24px 16px 20px; color: #fff;
}
.homepage-ads-header .header-title { font-size: 22px; font-weight: 700; margin-bottom: 6px; }
.homepage-ads-header .header-desc { font-size: 14px; opacity: .9; }
.homepage-ads-page .homepage-ads-tabs {
 display: flex; background: #fff; margin: 12px 16px; border-radius: 8px; padding: 4px;
 box-shadow: 0 2px 8px rgba(0,0,0,.08);
}
.homepage-ads-page .homepage-ads-tab {
 flex: 1; padding: 10px 0; border: none; border-radius: 6px; background: transparent;
 font-size: 14px; color: #666; cursor: pointer;
}
.homepage-ads-page .homepage-ads-tab.active {
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: #fff; font-weight: 600;
}
.homepage-ads-content { padding: 0 16px; }
.homepage-price-info {
 display: flex; align-items: flex-start; gap: 8px; background: #fff7f0; border: 1px solid #ffd8bf;
 border-radius: 8px; padding: 12px; font-size: 13px; color: #d46b08; margin-bottom: 12px;
}
.homepage-ad-form .form-item { margin-bottom: 14px; }
.homepage-ad-form .form-label { font-size: 14px; color: #323233; margin-bottom: 8px; font-weight: 500; }
.time-picker-group { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.time-picker-item { width: 100%; box-sizing: border-box; }
.homepage-slots-info {
 border-radius: 8px; padding: 10px 12px; font-size: 13px; margin-bottom: 12px;
}
.homepage-slots-info.available { background: #f6ffed; color: #389e0d; border: 1px solid #b7eb8f; }
.homepage-slots-info.full { background: #fff1f0; color: #cf1322; border: 1px solid #ffa39e; }
.homepage-price-preview {
 background: #f7f8fa; border-radius: 8px; padding: 12px; margin-bottom: 14px;
}
.homepage-price-preview .preview-row {
 display: flex; justify-content: space-between; font-size: 13px; padding: 4px 0; color: #646566;
}
.homepage-price-preview .preview-row.total { font-weight: 600; color: #323233; margin-top: 4px; }
.homepage-price-preview .preview-row.total .price { color: #ee0a24; font-size: 16px; }
.homepage-submit-btn { margin-top: 4px; }
.homepage-ad-item .ad-item-head { display: flex; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.homepage-ad-item .ad-status { font-size: 12px; color: #1989fa; }
.homepage-ad-item .ad-item-footer { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; }
.homepage-ad-item .ad-price { color: #ee0a24; font-weight: 700; }
.homepage-ads-empty { text-align: center; padding: 40px 16px; color: #969799; }
.worker-profile-edit-page .profile-edit-group-title { color: #323233; }
.profile-edit-group-title-row {
 display: flex; align-items: center; justify-content: space-between; gap: 8px;
 padding: 16px 16px 12px; background: #fff;
}
.profile-edit-group-title-row .profile-edit-group-title { padding: 0; background: none; }
.profile-edit-group-subtitle { font-size: 12px; color: #969799; white-space: nowrap; }
.profile-edit-cell-oneline { flex-wrap: nowrap !important; }
.profile-edit-cell-oneline .profile-edit-label { width: auto; flex-shrink: 0; white-space: nowrap; }
.profile-edit-cell-oneline .profile-edit-value-ellipsis {
 flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: right;
}
.profile-edit-cell-oneline .profile-edit-arrow { flex-shrink: 0; }

.media-upload-box { cursor: pointer; }

.worker-picker-overlay { align-items: flex-end; }
.worker-picker-sheet {
 width: 100%; max-width: 520px; margin: 0 auto; background: #fff;
 border-radius: 16px 16px 0 0; padding: 0 0 calc(12px + env(safe-area-inset-bottom, 0px));
 max-height: 70vh; overflow: hidden; display: flex; flex-direction: column;
}
.worker-picker-header {
 display: flex; align-items: center; justify-content: space-between;
 padding: 14px 16px; border-bottom: 1px solid #eee; font-weight: 600;
}
.worker-picker-header .close-btn { border: none; background: none; font-size: 18px; color: #969799; cursor: pointer; }
.worker-picker-list { overflow-y: auto; padding: 8px 0; }
.worker-picker-option {
 display: block; width: 100%; border: none; background: #fff; text-align: left;
 padding: 14px 16px; font-size: 15px; color: #323233; cursor: pointer;
}
.worker-picker-option.active { color: #1989fa; background: #f0f7ff; }
.worker-picker-footer { padding: 12px 16px; }
.worker-specialty-sheet .specialty-container {
 display: flex; flex-wrap: wrap; gap: 10px; padding: 16px; overflow-y: auto;
}
.worker-specialty-sheet .specialty-tag {
 padding: 8px 14px; border-radius: 999px; border: 1px solid #ebedf0; background: #f7f8fa;
 color: #646566; font-size: 14px; cursor: pointer;
}
.worker-specialty-sheet .specialty-tag.active {
 background: #07c160; border-color: #07c160; color: #fff;
}

.worker-media-section { background: #fff; padding: 0 16px 16px; }
.media-upload-box {
 border: 1px dashed #dcdee0; border-radius: 12px; padding: 24px 16px; text-align: center; background: #fafafa;
}
.media-upload-box.recording { border-color: #ee0a24; background: #fff1f0; }
.media-upload-icon { font-size: 36px; margin-bottom: 8px; }
.media-upload-icon.recording { animation: pulse 1s infinite; }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: .5; } }
.media-upload-text { font-size: 15px; color: #323233; margin-bottom: 4px; }
.media-upload-hint { font-size: 12px; color: #969799; margin-bottom: 12px; }
.voice-preview-box, .video-preview-box { background: #fafafa; border-radius: 12px; padding: 12px; }
.voice-info-row, .video-duration-row { display: flex; align-items: center; gap: 8px; font-size: 14px; margin-bottom: 10px; }
.voice-action-row { display: flex; gap: 8px; flex-wrap: wrap; }
.video-preview-box .preview-video { width: 100%; max-height: 220px; border-radius: 8px; background: #000; }

.org-bank-steps { display: flex; justify-content: center; gap: 12px; padding: 16px 12px 0; }
.org-bank-step {
 width: 28px; height: 28px; border-radius: 50%; background: #eee; color: #999;
 display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600;
}
.org-bank-step.active { background: #2c5af0; color: #fff; }
.org-bank-step.done { background: #07c160; color: #fff; }

/* ===== 店小二工作台 / 状态 / 订单 ===== */
.worker-home-page { padding: 0; background: #f5f5f5; width: 100%; }
.worker-top-navbar {
 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
 padding: calc(12px + env(safe-area-inset-top, 0px)) 16px 16px;
 width: 100%; box-sizing: border-box;
}
.worker-top-navbar .navbar-content {
 display: flex; align-items: center; justify-content: space-between; gap: 10px;
 height: auto; min-height: 0; padding: 0;
}
.worker-top-navbar .left-section {
 display: flex; align-items: center; flex: 1; min-width: 0; gap: 10px;
}
.worker-top-navbar .user-info {
 flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center;
}
.worker-top-navbar .user-avatar {
 width: 40px; height: 40px; border-radius: 50%; overflow: hidden;
 border: 2px solid rgba(255,255,255,.3); flex-shrink: 0;
}
.worker-top-navbar .user-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.worker-top-navbar .user-name {
 color: #fff; font-size: 16px; font-weight: 600; margin-bottom: 4px; line-height: 1.3;
}
.worker-top-navbar .status-info {
 display: flex; align-items: center; gap: 8px; flex-wrap: nowrap;
}
.worker-top-navbar .status-indicator {
 display: inline-flex; align-items: center; padding: 3px 8px; border-radius: 10px;
 background: rgba(255,255,255,.2); flex-shrink: 0;
}
.worker-top-navbar .status-text { color: #fff; font-size: 12px; font-weight: 500; white-space: nowrap; }
.worker-top-navbar .status-duration {
 color: rgba(255,255,255,.8); font-size: 11px; white-space: nowrap; flex-shrink: 0;
}
.worker-top-navbar .right-section { flex-shrink: 0; display: flex; align-items: center; }
.worker-top-navbar .status-switch {
 display: inline-flex; align-items: center; gap: 4px; padding: 6px 10px; border-radius: 12px;
 border: 1px solid rgba(255,255,255,.3); background: rgba(255,255,255,.2); color: #fff; cursor: pointer;
}
.worker-top-navbar .switch-text { font-size: 12px; font-weight: 500; white-space: nowrap; }
.worker-top-navbar .switch-icon { font-size: 14px; line-height: 1; }
@media (max-width: 360px) {
 .worker-top-navbar .switch-icon { display: none; }
 .worker-top-navbar .status-switch { padding: 6px 8px; }
 .worker-top-navbar .switch-text { font-size: 11px; }
}
.worker-home-content { padding: 12px; padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px)); }
.worker-stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; text-align: center; }
.worker-stats-item .num { font-size: 18px; font-weight: 700; color: #323233; }
.worker-stats-item .label { font-size: 11px; color: #969799; margin-top: 4px; }
.worker-actions-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.worker-action-item {
 display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 12px 6px; border-radius: 10px;
 background: #f7f8fa; text-decoration: none; color: #323233; font-size: 12px;
}
.worker-action-item .icon { font-size: 22px; line-height: 1; }
.worker-auth-card { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.worker-auth-card .auth-text-row { display: flex; align-items: flex-start; gap: 8px; flex: 1; }
.worker-auth-card .auth-text { font-size: 13px; color: #646566; line-height: 1.5; }
.btn-sm { width: auto; padding: 8px 14px; margin: 0; font-size: 13px; }
.section-title-wrap { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.worker-new-badge {
 font-size: 11px; color: #fff; background: #ff4757; border-radius: 999px; padding: 2px 8px;
}
.worker-pending-list { display: flex; flex-direction: column; gap: 10px; }
.worker-pending-card {
 position: relative; border: 1px solid #eee; border-radius: 10px; padding: 12px; background: #fff;
 overflow: hidden;
}
.worker-pending-card-new { border-color: #ffd666; background: #fffbe6; }
.worker-pending-new {
 position: absolute; top: 0; right: 0; background: linear-gradient(135deg, #ff6b6b, #ff5252);
 color: #fff; font-size: 11px; font-weight: 600; border-radius: 0 10px 0 10px;
 padding: 3px 10px; z-index: 2; line-height: 1.2;
}
.worker-pending-inner { display: flex; align-items: center; gap: 10px; }
.worker-pending-main { flex: 1; min-width: 0; }
.worker-pending-head { margin-bottom: 8px; }
.worker-pending-head .game { font-weight: 600; }
.worker-pending-status-side {
 flex-shrink: 0; display: flex; align-items: center; align-self: center;
 padding-right: 4px; min-width: 52px; justify-content: flex-end;
}
.worker-pending-status-side .status { font-size: 12px; font-weight: 600; white-space: nowrap; }
.worker-pending-status-side .status.paid { color: #1989fa; }
.worker-pending-info { font-size: 13px; color: #646566; line-height: 1.7; }
.worker-pending-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 10px; }
.worker-pending-btn {
 border: 1px solid #ddd; background: #fff; border-radius: 999px; padding: 6px 14px; font-size: 13px; cursor: pointer;
}
.worker-pending-btn.accept { background: #1989fa; border-color: #1989fa; color: #fff; }
.worker-empty-state, .worker-order-empty, .worker-skills-empty {
 text-align: center; padding: 40px 16px; color: #969799;
}
.worker-empty-state .empty-icon, .worker-order-empty .empty-icon, .worker-skills-empty .empty-icon { font-size: 42px; margin-bottom: 8px; }
.worker-empty-state .empty-text, .worker-order-empty .empty-text, .worker-skills-empty .empty-text { font-size: 15px; color: #646566; margin-bottom: 4px; }
.worker-empty-state .empty-tip, .worker-order-empty .empty-desc, .worker-skills-empty .empty-tip { font-size: 13px; }

.worker-status-overlay { align-items: flex-end; }
.worker-status-modal-overlay { align-items: center; justify-content: center; padding: 16px; }
.worker-status-modal { width: 100%; max-width: 360px; border-radius: 16px; padding: 16px; }
.worker-status-modal .modal-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.worker-status-modal .modal-title { font-size: 16px; font-weight: 600; }
.worker-status-modal .close-btn { border: none; background: none; font-size: 18px; cursor: pointer; color: #969799; }
.worker-status-sheet {
 width: 100%; max-width: 520px; margin: 0 auto; background: #fff; border-radius: 16px 16px 0 0;
 padding: 16px 16px calc(16px + env(safe-area-inset-bottom, 0px));
}
.worker-status-sheet .modal-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.worker-status-sheet .modal-title { font-size: 16px; font-weight: 600; }
.worker-status-sheet .close-btn { border: none; background: none; font-size: 18px; cursor: pointer; color: #969799; }
.status-options { display: flex; flex-direction: column; gap: 8px; }
.status-option {
 display: flex; align-items: center; justify-content: space-between; width: 100%; border: 1px solid #eee;
 border-radius: 10px; padding: 12px; background: #fff; cursor: pointer; text-align: left;
}
.status-option.active { border-color: #667eea; background: #f5f7ff; }
.status-option .option-indicator { display: flex; align-items: center; gap: 10px; }
.status-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.status-dot.online { background: #52c41a; }
.status-dot.busy { background: #faad14; }
.status-dot.break { background: #1890ff; }
.status-dot.offline { background: #ff4d4f; }
.status-option .option-name { display: block; font-size: 14px; font-weight: 600; color: #323233; }
.status-option .option-desc { display: block; font-size: 12px; color: #969799; margin-top: 2px; }
.status-check { color: #667eea; font-weight: 700; }
.worker-status-sheet .modal-footer { margin-top: 12px; }
.worker-status-sheet .settings-btn {
 width: 100%; border: none; background: #f7f8fa; border-radius: 10px; padding: 12px; font-size: 14px; cursor: pointer;
}

.worker-profile-page .worker-user-card { padding-top: 16px; }
.worker-user-header { display: flex; gap: 12px; align-items: flex-start; }
.worker-profile-avatar { position: relative; flex-shrink: 0; }
.avatar-edit-badge {
 position: absolute; right: 0; bottom: 0; width: 22px; height: 22px; border-radius: 50%;
 background: #07c160; color: #fff; font-size: 11px; display: flex; align-items: center; justify-content: center;
}
.worker-user-details { flex: 1; min-width: 0; }
.worker-user-name-row { display: flex; align-items: center; gap: 8px; }
.worker-user-name-row h3 { margin: 0; font-size: 18px; }
.edit-profile-link { text-decoration: none; font-size: 14px; }
.worker-user-status-row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.work-status-tag, .verification-tag { font-size: 11px; border-radius: 999px; padding: 2px 8px; }
.work-status-tag.online { background: #e8f8ef; color: #07c160; }
.work-status-tag.busy { background: #fff7e6; color: #fa8c16; }
.work-status-tag.break { background: #e6f4ff; color: #1890ff; }
.work-status-tag.offline { background: #f5f5f5; color: #969799; }
.verification-tag.verified { background: #e8f8ef; color: #07c160; }
.verification-tag.unverified { background: #fff1f0; color: #ee0a24; }
.worker-status-bar {
 display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px;
 padding-top: 14px; border-top: 1px solid #f0f0f0;
}
.worker-status-bar .status-info { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.worker-status-bar .status-indicator {
 display: inline-flex; padding: 2px 10px; border-radius: 999px; background: #f7f8fa;
}
.worker-status-bar .status-text { font-size: 12px; color: #323233; }
.worker-status-bar .status-duration { font-size: 11px; color: #969799; }
.worker-auth-reminder { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.worker-auth-reminder .reminder-content { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #646566; }
.profile-completion-card { background: #f0f7ff; }
.profile-completion-card .completion-header { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.profile-completion-card .completion-title { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 600; color: #1989fa; }
.profile-completion-card .completion-action { font-size: 13px; color: #1989fa; text-decoration: none; }
.profile-completion-card .progress-bar { height: 6px; background: #dbeafe; border-radius: 999px; overflow: hidden; margin: 10px 0; }
.profile-completion-card .progress-fill { height: 100%; background: linear-gradient(90deg, #667eea, #764ba2); border-radius: 999px; }
.profile-completion-card .completion-tips { font-size: 12px; color: #646566; }
.profile-completion-card .tips-label { color: #969799; }

.worker-orders-page { padding: 0; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; }
.worker-order-tabs-wrap {
 background: rgba(255,255,255,.95);
 backdrop-filter: blur(10px);
 border-radius: 12px 12px 0 0;
 margin: 0;
 border-bottom: 1px solid rgba(0,0,0,.05);
}
.worker-order-tabs { display: flex; overflow-x: auto; padding: 0 8px; background: transparent; }
.worker-order-tab {
 position: relative; flex: 1; min-width: 64px; border: none; background: none; padding: 14px 8px; font-size: 14px;
 color: #666; cursor: pointer; white-space: nowrap;
}
.worker-order-tab.active { color: #667eea; font-weight: 600; }
.worker-order-tab.active::after {
 content: ''; position: absolute; left: 50%; bottom: 0; transform: translateX(-50%);
 width: 28px; height: 3px; border-radius: 999px; background: linear-gradient(90deg, #667eea, #764ba2);
}
.worker-order-tab .tab-badge, .worker-order-tab .tab-unread-badge {
 position: absolute; top: 6px; right: 4px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 999px;
 background: #ff4757; color: #fff; font-size: 10px; line-height: 16px; text-align: center;
}
.worker-order-list { padding: 12px; background: transparent; }
.worker-order-item {
 position: relative; margin-bottom: 12px;
 background: rgba(255,255,255,.95);
 backdrop-filter: blur(10px);
 border-radius: 12px;
 box-shadow: 0 4px 16px rgba(0,0,0,.1);
}
.worker-order-item-new { box-shadow: 0 0 0 1px #ffd666 inset; }
.worker-order-corner {
 position: absolute; top: 12px; right: 12px; z-index: 2;
 display: flex; flex-direction: column; align-items: flex-end; gap: 4px;
}
.worker-order-new-tag {
 display: inline-flex; align-items: center; gap: 4px;
 background: #ff6b6b; color: #fff; font-size: 11px; font-weight: 600;
 border-radius: 999px; padding: 2px 8px; line-height: 1.2;
}
.worker-order-new-tag .new-dot { width: 6px; height: 6px; border-radius: 50%; background: #fff; }
.worker-order-head {
 display: flex; justify-content: space-between; gap: 8px; margin-bottom: 10px;
 padding-top: 4px; padding-right: 72px;
}
.worker-order-meta .order-id-line { font-size: 12px; color: #646566; }
.worker-order-meta .order-time-line { font-size: 11px; color: #969799; margin-top: 2px; }
.worker-order-status-wrap { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; text-align: right; }
.worker-order-status { font-size: 12px; font-weight: 600; white-space: nowrap; }
.worker-order-status.paid { color: #1989fa; }
.worker-order-status.serving { color: #07c160; }
.worker-order-status.pending_confirm { color: #fa8c16; }
.worker-order-status.completed { color: #969799; }
.worker-order-status.cancelled { color: #c8c9cc; }
.reject-badge { display: inline-block; margin-top: 4px; font-size: 10px; color: #ee0a24; background: #fff1f0; border-radius: 4px; padding: 1px 6px; }
.worker-order-customer { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; text-align: left; }
.worker-order-customer .avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; }
.worker-order-customer-main { flex: 1; min-width: 0; text-align: left; }
.worker-order-customer-main .name { font-weight: 600; font-size: 14px; text-align: left; }
.worker-order-customer-main .sub-text { text-align: left; }
.worker-order-list { text-align: left; }
.worker-order-amount { color: #ee0a24; font-weight: 700; font-size: 16px; white-space: nowrap; }
.worker-order-service { background: #f7f8fa; border-radius: 8px; padding: 10px; margin-bottom: 10px; }
.worker-order-service .service-row { display: flex; justify-content: space-between; gap: 12px; font-size: 12px; padding: 3px 0; }
.worker-order-service .service-row span:first-child { color: #969799; flex-shrink: 0; }
.worker-order-actions { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.worker-action-btn {
 border: 1px solid #ddd; background: #fff; border-radius: 999px; padding: 6px 14px; font-size: 13px; cursor: pointer;
}
.worker-action-btn.accept, .worker-action-btn.complete { background: #1989fa; border-color: #1989fa; color: #fff; }
.worker-action-btn.reject { color: #646566; }

.worker-game-skills-page { padding-bottom: calc(72px + env(safe-area-inset-bottom, 0px)); }
.worker-skills-header h3 { margin: 0 0 4px; font-size: 18px; }
.worker-skill-card.disabled { opacity: .65; }
.worker-skill-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.worker-skill-head .game-name { font-size: 16px; font-weight: 600; }
.worker-skill-head .skill-level { font-size: 12px; color: #969799; margin-top: 2px; }
.worker-skill-info { display: flex; flex-wrap: wrap; gap: 10px; margin: 10px 0; font-size: 13px; color: #646566; }
.worker-skill-desc { font-size: 13px; color: #646566; line-height: 1.5; margin-bottom: 10px; }
.worker-skill-actions { display: flex; gap: 8px; }
.worker-skill-actions .danger { color: #ee0a24; }
.worker-skills-bar { padding: 12px; background: #fff; border-top: 1px solid #eee; }
.switch-wrap { position: relative; display: inline-flex; align-items: center; }
.switch-wrap input { appearance: none; width: 42px; height: 24px; border-radius: 999px; background: #ddd; position: relative; cursor: pointer; }
.switch-wrap input:checked { background: #07c160; }
.switch-wrap input::after {
 content: ''; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: transform .2s;
}
.switch-wrap input:checked::after { transform: translateX(18px); }
.skill-form .form-field { display: block; margin-bottom: 12px; }
.skill-form .form-field > span { display: block; font-size: 13px; color: #646566; margin-bottom: 6px; }
.skill-form select, .skill-form input, .skill-form textarea {
 width: 100%; box-sizing: border-box; border: 1px solid #eee; border-radius: 8px; padding: 10px 12px; font-size: 14px;
}
.skill-form .input-with-unit { display: flex; align-items: center; gap: 8px; }
.skill-form .input-with-unit input { flex: 1; }
.skill-form .input-with-unit span { color: #969799; font-size: 13px; white-space: nowrap; }

/* 全屏 Loading 遮罩 */
.loading-overlay {
 position: fixed; inset: 0; z-index: 9999;
 background: rgba(0, 0, 0, 0.45);
 display: flex; align-items: center; justify-content: center;
 pointer-events: all;
}
.loading-overlay .loading-card {
 background: #fff; border-radius: 12px; padding: 24px 28px; text-align: center; min-width: 180px;
 box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}
.loading-overlay .loading-spinner {
 width: 36px; height: 36px; margin: 0 auto 12px;
 border: 3px solid #eee; border-top-color: #667eea; border-radius: 50%;
 animation: h5-spin 0.8s linear infinite;
}
.loading-overlay .loading-text { margin: 0; font-size: 14px; color: #333; }
@keyframes h5-spin { to { transform: rotate(360deg); } }

/* 掌柜成员管理 */
.org-members-page { padding-bottom: 16px; }
.org-members-search {
 display: flex; gap: 8px; padding: 12px 12px 0; align-items: center;
}
.org-members-search-input {
 flex: 1; border: 1px solid #eee; border-radius: 8px; padding: 10px 12px; font-size: 14px; background: #fff;
}
.org-members-search-btn {
 border: none; background: #667eea; color: #fff; border-radius: 8px; padding: 10px 14px; font-size: 14px; cursor: pointer;
}
.org-members-tabs { padding-top: 12px; }
.org-members-tabs .tab-count { font-size: 12px; margin-left: 2px; opacity: 0.85; }
.org-members-stats {
 display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
 padding: 12px; margin: 0 12px; background: #fff; border-radius: 12px;
 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
}
.org-members-stat-item { text-align: center; }
.org-members-stat-item .num { font-size: 18px; font-weight: 700; color: #333; }
.org-members-stat-item .label { font-size: 11px; color: #969799; margin-top: 2px; }
.org-members-list { padding: 12px; text-align: left; }
.org-member-card, .org-application-card {
 background: #fff; border-radius: 12px; padding: 14px; margin-bottom: 12px;
 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05); text-align: left;
}
.org-application-card { border-left: 4px solid #ff9500; }
.org-member-main, .org-application-main { display: flex; gap: 12px; margin-bottom: 12px; align-items: flex-start; }
.org-member-avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; flex-shrink: 0; background: #f0f0f0; }
.org-member-info { flex: 1; min-width: 0; text-align: left; }
.org-member-name-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.org-member-name { font-size: 16px; font-weight: 600; color: #333; }
.org-member-status, .org-application-status {
 font-size: 12px; padding: 2px 8px; border-radius: 999px; color: #fff;
}
.org-member-status.active, .org-application-status.approved { background: #07c160; }
.org-member-status.inactive, .org-application-status.rejected { background: #969799; }
.org-application-status.pending { background: #ff9500; }
.org-member-meta {
 display: flex; align-items: center; flex-wrap: wrap; gap: 0 12px;
 margin-bottom: 0; font-size: 13px;
}
.org-member-phone { color: #666; }
.org-member-join-time { color: #999; font-size: 12px; }
.org-member-extra { width: 100%; text-align: left; }
.org-member-skills {
 display: block; width: 100%; text-align: left;
 font-size: 12px; color: #667eea; margin-top: 6px; line-height: 1.5;
}
.org-application-reason {
 margin-top: 8px; padding: 10px; background: #f8f9fa; border-radius: 8px; font-size: 13px; line-height: 1.5;
}
.org-application-reason .reason-label { color: #666; font-weight: 500; }
.org-member-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.org-member-tag { font-size: 11px; padding: 2px 8px; background: rgba(102, 126, 234, 0.1); color: #667eea; border-radius: 999px; }
.org-member-stats-row {
 display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
 padding: 10px 0; border-top: 1px solid #f5f5f5; border-bottom: 1px solid #f5f5f5; margin-bottom: 10px;
}
.org-member-stat { text-align: center; }
.org-member-stat .val { font-size: 15px; font-weight: 600; color: #333; }
.org-member-stat .lbl { font-size: 11px; color: #969799; }
.org-action-row { display: flex; gap: 8px; width: 100%; }
.org-action-row .org-member-action,
.org-action-row .org-review-btn {
 flex: 1; min-width: 0; text-align: center; padding: 10px 8px; font-size: 14px; font-weight: 500;
 border: none; border-radius: 8px; cursor: pointer;
}
.org-member-action.primary { color: #667eea; background: rgba(102, 126, 234, 0.1); }
.org-member-action.danger { color: #ff4d4f; background: rgba(255, 77, 79, 0.1); }
.org-member-action.success { color: #52c41a; background: rgba(82, 196, 26, 0.1); }
.org-review-btn.detail { background: #3c9cff; color: #fff; }
.org-review-btn.approve { background: #07c160; color: #fff; }
.org-review-btn.reject { background: #fa5151; color: #fff; }
.org-member-actions, .org-review-actions { display: flex; width: 100%; }
.empty-state-block { text-align: center; padding: 48px 20px; color: #969799; }
.empty-state-block .empty-icon { font-size: 40px; margin-bottom: 8px; }
.applicant-detail-body { max-height: 55vh; overflow-y: auto; text-align: left; }
.detail-section { margin-bottom: 16px; }
.detail-section-title { font-size: 15px; font-weight: 600; margin-bottom: 10px; color: #333; }
.detail-basic-row { display: flex; gap: 12px; align-items: center; margin-bottom: 10px; }
.detail-avatar { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; }
.detail-name { font-size: 16px; font-weight: 600; }
.detail-item { display: flex; gap: 8px; padding: 6px 0; font-size: 13px; line-height: 1.5; }
.detail-label { color: #969799; flex-shrink: 0; min-width: 72px; }
.detail-value { color: #333; flex: 1; word-break: break-all; }

/* 富友开户表单弹窗 */
.modal-card .fuyou-form-panel { text-align: left; }
.modal-card .fuyou-form-subtitle { margin: 0 0 12px; }
.modal-card .fuyou-form-scroll { max-height: 55vh; overflow-y: auto; padding-right: 4px; }
.modal-card .fuyou-form-actions {
 display: flex; flex-direction: column; gap: 10px; margin-top: 12px; padding-top: 12px; border-top: 1px solid #f5f5f5;
}
.preview-overlay {
 position: fixed; inset: 0; z-index: 10001;
 background: rgba(0, 0, 0, 0.5);
 display: flex; align-items: center; justify-content: center; padding: 16px;
}
.preview-overlay .preview-modal-card { max-width: 92vw; max-height: 88vh; overflow: hidden; display: flex; flex-direction: column; }
.preview-overlay .modal-body { overflow-y: auto; flex: 1; }
.modal-overlay { z-index: 9999; }

