/* 物业服务计划 - 公共样式 */
body { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif; }
.login-body { background: linear-gradient(160deg, #eef3fb 0%, #e8f0fa 100%); }
.card { border-radius: .75rem; }
.navbar-brand { font-weight: 600; }

/* 手机端 */
.mobile-body { background: #f5f6fa; }
.mobile-header {
  position: sticky; top: 0; z-index: 100;
  background: #fff; border-bottom: 1px solid #eee;
}
.mobile-tabbar {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 100;
  background: #fff; border-top: 1px solid #eee; padding: 6px 0 calc(6px + env(safe-area-inset-bottom));
}
.mobile-content { padding-bottom: 76px; }
.status-badge { font-size: .78rem; padding: .25em .6em; border-radius: 10em; white-space: nowrap; }
.badge-ok { background: #e6f7ee; color: #1a9e5c; }
.badge-partial { background: #fff3e0; color: #e8890c; }
.badge-doing { background: #e8f0fe; color: #1a73e8; }
.badge-pending { background: #f0f1f3; color: #6b7280; }
.badge-danger { background: #fdecea; color: #d93025; }
.plan-card { border-radius: .75rem; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.step-card { border-radius: .75rem; border: 1px solid #eef0f3; }
.step-done { background: #f6fbf8; border-color: #cfe9db; }
.step-photo img { max-height: 160px; border-radius: .5rem; object-fit: cover; }
.photo-thumb { width: 64px; height: 64px; object-fit: cover; border-radius: .5rem; border: 1px solid #ddd; }
.exec-detail-photo { max-width: 100%; border-radius: .5rem; }

/* 管理端 */
.stat-card { border-radius: .75rem; border: none; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.stat-num { font-size: 1.6rem; font-weight: 700; }
.table th { white-space: nowrap; }
.tab-content { padding-top: 1rem; }
.issue-item { border-left: 4px solid #d93025; }
.yp-warn { border-color: #e8890c !important; color: #e8890c; font-weight: 600; }
.yp-grid input[type="number"] { max-width: 64px; }
.yp-grid th, .yp-grid td { white-space: nowrap; }
.date-chip { font-size: .72rem; padding: .18em .5em; border-radius: 10em; white-space: nowrap; }
.chip-ok { background: #e6f7ee; color: #1a9e5c; }
.chip-today { background: #e8f0fe; color: #1a73e8; font-weight: 600; }
.chip-overdue { background: #fdecea; color: #d93025; font-weight: 600; }
.chip-upcoming { background: #f0f1f3; color: #6b7280; }
