/* ===== 由 build-css.js 自动转换（rpx->rem），请勿手改 ===== */

page, body { margin: 0; padding: 0; }
body { background: #F5F6FA; font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; color: #1a1a1a; }
#page-container { min-height: 100vh; padding-bottom: 1.1rem; box-sizing: border-box; }
.scroll-y { overflow-y: auto; -webkit-overflow-scrolling: touch; }
img { display: block; }
input, textarea { font-family: inherit; }

/* ---- app.wxss ---- */
/* app.wxss - 全局样式 */

/* ===== 色彩变量 ===== */
:root, body, #page-container {
  --primary: #2B6CB0;
  --primary-light: #EBF5FF;
  --primary-dark: #1A4F8A;
  --success: #38A169;
  --success-bg: #F0FFF4;
  --warning: #D69E2E;
  --warning-bg: #FFFAF0;
  --danger: #E53E3E;
  --danger-bg: #FFF5F5;
  --gray-50: #FAFAFA;
  --gray-100: #F5F5F5;
  --gray-200: #E8E8E8;
  --gray-300: #D9D9D9;
  --gray-400: #BFBFBF;
  --gray-500: #8C8C8C;
  --gray-600: #595959;
  --gray-700: #434343;
  --gray-800: #262626;
  --radius: 0.24rem;
  --radius-sm: 0.16rem;
  --shadow: 0 0.02rem 0.06rem rgba(0,0,0,0.08);
  --shadow-md: 0 0.08rem 0.24rem rgba(0,0,0,0.1);

  background: #F5F6FA;
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 0.28rem;
  color: #1a1a1a;
  box-sizing: border-box;
}

/* ===== 通用类 ===== */
.container {
  padding: 0;
}

.card {
  background: #fff;
  border-radius: var(--radius);
  margin: 0.24rem 0.32rem;
  padding: 0.32rem;
  box-shadow: var(--shadow);
}

.section-title {
  font-size: 0.3rem;
  font-weight: 600;
  color: var(--gray-800);
  margin: 0.32rem 0.32rem 0.16rem;
  display: flex;
  align-items: center;
}

.section-title::before {
  content: '';
  width: 0.06rem;
  height: 0.28rem;
  background: var(--primary);
  border-radius: 0.04rem;
  margin-right: 0.12rem;
}

/* 状态标签 */
.tag-paid {
  background: var(--success-bg);
  color: var(--success);
}
.tag-pending {
  background: var(--warning-bg);
  color: var(--warning);
}
.tag-overdue {
  background: var(--danger-bg);
  color: var(--danger);
}

/* 空状态 */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 1.2rem 0;
  color: var(--gray-400);
}
.empty-state .empty-icon {
  width: 1.2rem;
  height: 1.2rem;
  margin-bottom: 0.24rem;
  opacity: 0.4;
}
.empty-state .empty-text {
  font-size: 0.26rem;
}

/* 加载状态 */
.loading-mask {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0.8rem 0;
}

/* ===== H5 弹层 GPU 合成层提升 =====
   手机 webview 里底部弹层(从上滑下)与遮罩(淡入)若不在独立合成层，
   动画/滚动时会整层重绘 → 出现“拖影/残影”。will-change 强制提升为 GPU 层，
   消除拖影。小程序端原生渲染会忽略 will-change，无副作用。 */
[data-page] .modal-overlay { will-change: opacity; }
[data-page] .sheet,
[data-page] .detail-sheet,
[data-page] .action-sheet {
  will-change: transform;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}


/* ---- \pages\change-password\change-password.wxss ---- */
/* pages/change-password/change-password.wxss */
[data-page="pages/change-password/change-password"] .cp-page {
  min-height: 100vh;
  background: #F5F6FA;
  padding: 0.32rem;
  box-sizing: border-box;
}[data-page="pages/change-password/change-password"] .cp-card {
  background: #fff;
  border-radius: 0.24rem;
  padding: 0.12rem 0.28rem 0.32rem;
  box-shadow: 0 0.02rem 0.06rem rgba(0,0,0,0.06);
}[data-page="pages/change-password/change-password"] .cp-tip {
  font-size: 0.24rem;
  color: #8C8C8C;
  padding: 0.24rem 0 0.04rem;
  line-height: 1.5;
}[data-page="pages/change-password/change-password"] .field {
  padding: 0.24rem 0;
  border-bottom: 0.01rem solid #f2f2f2;
}[data-page="pages/change-password/change-password"] .field:last-of-type {
  border-bottom: none;
}[data-page="pages/change-password/change-password"] .label {
  display: block;
  font-size: 0.26rem;
  color: #8C8C8C;
  margin-bottom: 0.14rem;
}[data-page="pages/change-password/change-password"] .input {
  background: #F7F8FA;
  border: 0.01rem solid #E8EAED;
  border-radius: 0.12rem;
  padding: 0.22rem 0.24rem;
  font-size: 0.28rem;
  color: #262626;
}[data-page="pages/change-password/change-password"] .cp-btn {
  margin-top: 0.48rem;
  background: #2B6CB0;
  color: #fff;
  font-size: 0.32rem;
  font-weight: 600;
  border-radius: 0.5rem;
  padding: 0.24rem 0;
  box-shadow: 0 0.08rem 0.24rem rgba(43,108,176,0.35);
}[data-page="pages/change-password/change-password"] .cp-btn[loading] {
  opacity: 0.8;
}


/* ---- \pages\detail\detail.wxss ---- */
/* pages/detail/detail.wxss */
[data-page="pages/detail/detail"] .page-detail {
  min-height: 100vh;
  padding-bottom: 0.4rem;
}/* 顶部信息卡 */
[data-page="pages/detail/detail"] .detail-hero {
  background: linear-gradient(135deg, #2B6CB0 0%, #3182CE 100%);
  padding: 0.32rem;
  padding-top: 0.48rem;
  /* 底部留白加大：汇总卡上叠 0.24rem，只压住留白、不遮住联系方式行 */
  padding-bottom: 0.88rem;
  color: #fff;
}[data-page="pages/detail/detail"] .dh-top {
  display: flex;
  align-items: center;
}[data-page="pages/detail/detail"] .dh-avatar {
  width: 1.04rem;
  height: 1.04rem;
  border-radius: 50%;
  background: rgba(255,255,255,0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.4rem;
  font-weight: 600;
  margin-right: 0.28rem;
  border: 0.04rem solid rgba(255,255,255,0.3);
  flex-shrink: 0;
}[data-page="pages/detail/detail"] .dh-name {
  font-size: 0.36rem;
  font-weight: 600;
}[data-page="pages/detail/detail"] .dh-tags {
  display: flex;
  gap: 0.12rem;
  margin-top: 0.12rem;
  flex-wrap: wrap;
}[data-page="pages/detail/detail"] .dh-tag {
  font-size: 0.22rem;
  background: rgba(255,255,255,0.2);
  padding: 0.04rem 0.16rem;
  border-radius: 0.2rem;
}[data-page="pages/detail/detail"] .dh-contact {
  display: flex;
  gap: 0.4rem;
  margin-top: 0.28rem;
}[data-page="pages/detail/detail"] .dh-contact-item {
  display: flex;
  align-items: center;
  font-size: 0.26rem;
  opacity: 0.9;
}[data-page="pages/detail/detail"] .dh-contact-icon {
  margin-right: 0.12rem;
}/* 缴费汇总 */
[data-page="pages/detail/detail"] .detail-summary {
  margin: -0.24rem 0.32rem 0;
  background: #fff;
  border-radius: 0.24rem;
  padding: 0.32rem;
  box-shadow: 0 0.08rem 0.24rem rgba(0,0,0,0.1);
  position: relative;
  z-index: 1;
}[data-page="pages/detail/detail"] .ds-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.12rem 0;
}[data-page="pages/detail/detail"] .ds-label {
  font-size: 0.26rem;
  color: var(--gray-600);
}[data-page="pages/detail/detail"] .ds-value {
  font-size: 0.28rem;
  font-weight: 600;
  color: var(--gray-800);
}[data-page="pages/detail/detail"] .ds-value.success { color: var(--success); }[data-page="pages/detail/detail"] .ds-value.danger { color: var(--danger); }[data-page="pages/detail/detail"] .ds-divider {
  height: 0.01rem;
  background: var(--gray-100);
  margin: 0.08rem 0;
}[data-page="pages/detail/detail"] .oc-status {
  font-size: 0.22rem;
  padding: 0.06rem 0.2rem;
  border-radius: 0.24rem;
  font-weight: 600;
}/* 费用明细 */
[data-page="pages/detail/detail"] .fee-period {
  margin: 0.32rem 0.32rem 0.16rem;
  font-size: 0.26rem;
  color: var(--gray-600);
  display: flex;
  justify-content: space-between;
  align-items: center;
}[data-page="pages/detail/detail"] .fee-period .total {
  color: var(--gray-800);
  font-weight: 600;
}/* 多套房产：明细按房号分组头 */
[data-page="pages/detail/detail"] .fg-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 0.24rem 0.32rem 0.08rem;
  padding: 0.1rem 0.2rem;
  background: var(--gray-50, #F7F8FA);
  border-radius: 0.12rem;
}[data-page="pages/detail/detail"] .fg-room {
  font-size: 0.26rem;
  color: var(--gray-700);
  font-weight: 600;
}[data-page="pages/detail/detail"] .fg-unpaid {
  font-size: 0.24rem;
  color: var(--gray-500);
}[data-page="pages/detail/detail"] .fg-unpaid.danger {
  color: var(--danger, #e54d42);
  font-weight: 600;
}[data-page="pages/detail/detail"] .fg-unpaid.success {
  color: var(--success, #18a058);
}[data-page="pages/detail/detail"] .fee-card {
  background: #fff;
  border-radius: 0.24rem;
  margin: 0.12rem 0.32rem;
  padding: 0.28rem;
  box-shadow: 0 0.02rem 0.06rem rgba(0,0,0,0.08);
  display: flex;
  align-items: center;
}[data-page="pages/detail/detail"] .fc-icon {
  width: 0.8rem;
  height: 0.8rem;
  border-radius: 0.2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-right: 0.24rem;
  flex-shrink: 0;
}[data-page="pages/detail/detail"] .fc-icon .iconfont {
  font-size: 0.36rem;
  font-weight: 700;
}[data-page="pages/detail/detail"] .fc-body {
  flex: 1;
  min-width: 0;
}[data-page="pages/detail/detail"] .fc-title {
  font-size: 0.28rem;
  font-weight: 600;
  color: var(--gray-800);
}[data-page="pages/detail/detail"] .fc-sub {
  font-size: 0.24rem;
  color: var(--gray-500);
  margin-top: 0.06rem;
}[data-page="pages/detail/detail"] .fc-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.08rem;
  flex-shrink: 0;
  margin-left: 0.16rem;
}[data-page="pages/detail/detail"] .fc-amount {
  font-size: 0.32rem;
  font-weight: 700;
  font-family: "DIN Alternate", sans-serif;
}[data-page="pages/detail/detail"] .fc-amount.success { color: var(--success); }[data-page="pages/detail/detail"] .fc-amount.danger { color: var(--danger); }[data-page="pages/detail/detail"] .fc-amount.warning { color: var(--warning); }[data-page="pages/detail/detail"] .currency {
  font-size: 0.24rem;
  font-weight: 400;
  color: var(--gray-500);
}[data-page="pages/detail/detail"] .fc-status {
  font-size: 0.22rem;
  padding: 0.04rem 0.16rem;
  border-radius: 0.2rem;
  font-weight: 600;
}/* 底部操作栏 */
[data-page="pages/detail/detail"] .action-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: #fff;
  border-top: 0.01rem solid var(--gray-200);
  padding: 0.2rem 0.32rem;
  padding-bottom: calc(0.2rem + env(safe-area-inset-bottom));
  display: flex;
  gap: 0.2rem;
  z-index: 20;
}[data-page="pages/detail/detail"] .btn {
  flex: 1;
  height: 0.88rem;
  border-radius: 0.44rem;
  font-size: 0.3rem;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.12rem;
}[data-page="pages/detail/detail"] .btn-outline {
  background: #fff;
  border: 0.03rem solid var(--primary);
  color: var(--primary);
}[data-page="pages/detail/detail"] .btn-primary {
  background: var(--primary);
  color: #fff;
}[data-page="pages/detail/detail"] .btn-ghost {
  background: var(--gray-100, #F2F3F7);
  color: var(--gray-700, #444);
}/* 转发催缴卡片按钮（open-type=share）：去掉微信 button 默认边框/背景，复用 .btn 尺寸 */
[data-page="pages/detail/detail"] .btn::after {
  border: none;
}[data-page="pages/detail/detail"] .btn-share {
  background: var(--primary-light, #E6F0FF);
  color: var(--primary, #2B6CFF);
}/* 业主只读模式提示条 */
[data-page="pages/detail/detail"] .public-banner {
  background: var(--primary-light, #E6F0FF);
  color: var(--primary, #2B6CFF);
  font-size: 0.24rem;
  text-align: center;
  padding: 0.16rem 0.24rem;
  margin: 0 0 0.16rem;
  border-radius: 0.12rem;
}/* 弹窗 */
[data-page="pages/detail/detail"] .modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0,0,0,0.4);
  z-index: 50;
  display: none;
}[data-page="pages/detail/detail"] .modal-overlay.show {
  display: block;
}[data-page="pages/detail/detail"] .action-sheet {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: #fff;
  border-radius: 0.4rem 0.4rem 0 0;
  z-index: 51;
  transform: translateY(100%);
  transition: transform 0.3s ease;
  padding-bottom: env(safe-area-inset-bottom);
}[data-page="pages/detail/detail"] .action-sheet.show {
  transform: translateY(0);
}[data-page="pages/detail/detail"] .as-header {
  text-align: center;
  padding: 0.32rem;
  font-size: 0.32rem;
  font-weight: 600;
  color: var(--gray-800);
  border-bottom: 0.01rem solid var(--gray-100);
}[data-page="pages/detail/detail"] .as-item {
  display: flex;
  align-items: center;
  padding: 0.28rem 0.4rem;
  border-bottom: 0.01rem solid var(--gray-50);
}[data-page="pages/detail/detail"] .as-item:active {
  background: var(--gray-50);
}/* 推送账单：可见元素是一个普通 view(.as-item)，渲染和下面三项完全一致；
   触发分享的 <button open-type="share"> 做成透明绝对定位覆盖层，只捕获点击，不画任何样式。
   彻底绕开微信 button 默认样式（margin:auto 居中/固定行高/内边距 等）的干扰。 */
[data-page="pages/detail/detail"] .as-item-share {
  position: relative;
}[data-page="pages/detail/detail"] .as-share-cover {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: 0;
  opacity: 0;
  z-index: 2;
}[data-page="pages/detail/detail"] .as-share-cover::after {
  border: none;
}[data-page="pages/detail/detail"] .as-arrow {
  font-size: 0.4rem;
  color: var(--gray-400);
  margin-left: 0.12rem;
}[data-page="pages/detail/detail"] .as-icon {
  width: 0.72rem;
  height: 0.72rem;
  border-radius: 0.16rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.32rem;
  margin-right: 0.24rem;
}[data-page="pages/detail/detail"] .as-text {
  flex: 1;
}[data-page="pages/detail/detail"] .as-title {
  font-size: 0.28rem;
  font-weight: 500;
  color: var(--gray-800);
}[data-page="pages/detail/detail"] .as-sub {
  font-size: 0.24rem;
  color: var(--gray-500);
  margin-top: 0.04rem;
}[data-page="pages/detail/detail"] .as-cancel {
  text-align: center;
  padding: 0.28rem;
  font-size: 0.3rem;
  color: var(--gray-600);
}/* 状态标签复用 */
[data-page="pages/detail/detail"] .tag-paid { background: var(--success-bg); color: var(--success); }[data-page="pages/detail/detail"] .tag-pending { background: var(--warning-bg); color: var(--warning); }[data-page="pages/detail/detail"] .tag-overdue { background: var(--danger-bg); color: var(--danger); }[data-page="pages/detail/detail"] .tag-partial { background: var(--warning-bg); color: var(--warning); }/* 年度下拉（费用明细行中间） */
[data-page="pages/detail/detail"] .year-pick {
  display: inline-block;
  padding: 0.04rem 0.18rem;
  margin: 0 0.16rem;
  font-size: 0.24rem;
  color: var(--primary);
  background: var(--primary-light, #eef4fb);
  border-radius: 0.08rem;
}/* ===== 电话跟进结果确认层 ===== */
[data-page="pages/detail/detail"] .fu-result {
  padding: 0.28rem 0.24rem;
  font-size: 0.3rem;
  color: var(--gray-700);
  border-top: 0.01rem solid var(--gray-100, #f0f0f0);
}[data-page="pages/detail/detail"] .fu-result.active {
  color: var(--primary);
  font-weight: 600;
  background: var(--primary-light, #eef4fb);
}[data-page="pages/detail/detail"] .fu-date {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.2rem 0.24rem;
  font-size: 0.28rem;
  color: var(--gray-600);
  border-top: 0.01rem solid var(--gray-100, #f0f0f0);
  background: var(--gray-50, #fafafa);
}[data-page="pages/detail/detail"] .fu-date-pick {
  padding: 0.06rem 0.18rem;
  font-size: 0.26rem;
  color: var(--primary);
  background: var(--primary-light, #eef4fb);
  border-radius: 0.08rem;
}


/* ---- \pages\followup\followup.wxss ---- */
/* pages/followup/followup.wxss */
[data-page="pages/followup/followup"] .page-followup {
  min-height: 100vh;
  padding-bottom: 0.2rem;
}/* 概览卡片 */
[data-page="pages/followup/followup"] .summary-grid {
  display: flex;
  gap: 0.16rem;
  padding: 0.24rem 0.32rem 0;
}[data-page="pages/followup/followup"] .sum-card {
  flex: 1;
  background: #fff;
  border-radius: 0.2rem;
  padding: 0.24rem 0.16rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  box-shadow: var(--shadow);
}[data-page="pages/followup/followup"] .sum-num {
  font-size: 0.48rem;
  font-weight: 700;
  line-height: 1.1;
}[data-page="pages/followup/followup"] .sum-num.warning { color: var(--warning); }[data-page="pages/followup/followup"] .sum-num.danger { color: var(--danger); }[data-page="pages/followup/followup"] .sum-num.legal { color: #805AD5; }[data-page="pages/followup/followup"] .sum-label {
  font-size: 0.22rem;
  color: var(--gray-500);
  margin-top: 0.08rem;
}[data-page="pages/followup/followup"] .total-bar {
  text-align: center;
  font-size: 0.24rem;
  color: var(--gray-400);
  padding: 0.16rem 0;
}/* 搜索 + 筛选 */
[data-page="pages/followup/followup"] .search-bar-wrap {
  padding: 0 0.32rem;
}[data-page="pages/followup/followup"] .search-bar {
  display: flex;
  align-items: center;
  background: #fff;
  border-radius: 9.99rem;
  padding: 0 0.24rem;
  box-shadow: var(--shadow);
}[data-page="pages/followup/followup"] .search-icon { font-size: 0.28rem; margin-right: 0.12rem; opacity: 0.5; }[data-page="pages/followup/followup"] .search-input {
  flex: 1;
  height: 0.72rem;
  font-size: 0.26rem;
}[data-page="pages/followup/followup"] .clear-btn { color: var(--gray-400); padding: 0 0.08rem; font-size: 0.28rem; }[data-page="pages/followup/followup"] .filter-bar {
  display: flex;
  gap: 0.16rem;
  padding: 0.2rem 0.32rem;
}[data-page="pages/followup/followup"] .filter-chip {
  padding: 0.1rem 0.28rem;
  background: #fff;
  border-radius: 9.99rem;
  font-size: 0.24rem;
  color: var(--gray-600);
  box-shadow: var(--shadow);
}[data-page="pages/followup/followup"] .filter-chip.active {
  background: var(--primary);
  color: #fff;
}/* 业主聚合列表 */
[data-page="pages/followup/followup"] .owner-list {
  padding: 0 0.32rem;
}[data-page="pages/followup/followup"] .owner-card {
  background: #fff;
  border-radius: 0.2rem;
  padding: 0.24rem;
  margin-bottom: 0.16rem;
  box-shadow: var(--shadow);
}[data-page="pages/followup/followup"] .oc-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
}[data-page="pages/followup/followup"] .oc-name {
  font-size: 0.3rem;
  font-weight: 600;
  color: var(--gray-800);
}[data-page="pages/followup/followup"] .oc-room {
  font-size: 0.24rem;
  font-weight: 400;
  color: var(--gray-500);
  margin-left: 0.08rem;
}[data-page="pages/followup/followup"] .oc-count {
  font-size: 0.22rem;
  color: var(--gray-400);
}[data-page="pages/followup/followup"] .oc-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.1rem;
  margin: 0.14rem 0;
}[data-page="pages/followup/followup"] .tag {
  font-size: 0.2rem;
  padding: 0.04rem 0.14rem;
  border-radius: 0.08rem;
}[data-page="pages/followup/followup"] .tag.st-normal { background: var(--primary-light); color: var(--primary); }[data-page="pages/followup/followup"] .tag.st-talk { background: #E6FFFA; color: #319795; }[data-page="pages/followup/followup"] .tag.st-formal { background: var(--warning-bg); color: var(--warning); }[data-page="pages/followup/followup"] .tag.st-legal { background: var(--danger-bg); color: var(--danger); }[data-page="pages/followup/followup"] .tag-attitude { background: #F0F0F0; color: var(--gray-600); }[data-page="pages/followup/followup"] .tag-method { background: var(--primary-light); color: var(--primary); }[data-page="pages/followup/followup"] .tag-closed { background: var(--success-bg); color: var(--success); }[data-page="pages/followup/followup"] .oc-nr {
  font-size: 0.26rem;
  color: var(--gray-700);
  line-height: 1.5;
  margin-top: 0.04rem;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}[data-page="pages/followup/followup"] .oc-bottom {
  display: flex;
  justify-content: space-between;
  margin-top: 0.12rem;
  font-size: 0.22rem;
  color: var(--gray-400);
}[data-page="pages/followup/followup"] .oc-next { color: var(--warning); }[data-page="pages/followup/followup"] .load-more {
  text-align: center;
  padding: 0.24rem;
  color: var(--primary);
  font-size: 0.26rem;
}/* 悬浮新增按钮 */
[data-page="pages/followup/followup"] .fab {
  position: fixed;
  /* 对齐到 750 列右缘（桌面预览与手机统一），并抬高以避开底部 tabbar */
  right: calc(50% - 3.75rem + 0.4rem);
  bottom: calc(var(--tabbar-h, 0rem) + 0.6rem);
  background: var(--primary);
  border-radius: 9.99rem;
  padding: 0.2rem 0.36rem;
  display: flex;
  align-items: center;
  box-shadow: var(--shadow-md);
  z-index: 60;
}[data-page="pages/followup/followup"] .fab-icon { color: #fff; font-size: 0.36rem; margin-right: 0.08rem; }[data-page="pages/followup/followup"] .fab-text { color: #fff; font-size: 0.26rem; }/* ===== 通用弹层 ===== */
[data-page="pages/followup/followup"] .modal-overlay {
  position: fixed;
  left: 0; right: 0; top: 0; bottom: 0;
  background: rgba(0,0,0,0.45);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s;
  z-index: 100;
}[data-page="pages/followup/followup"] .modal-overlay.show { opacity: 1; visibility: visible; }[data-page="pages/followup/followup"] .sheet {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  background: #fff;
  border-radius: 0.28rem 0.28rem 0 0;
  transform: translateY(100%);
  transition: transform 0.25s ease;
  z-index: 101;
  max-height: 82vh;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  overflow: hidden; /* 防内容把弹层撑出横向溢出（右侧"重新选择"被顶出屏） */
}[data-page="pages/followup/followup"] .sheet.show { transform: translateY(0); }[data-page="pages/followup/followup"] .sheet-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.28rem 0.32rem;
  border-bottom: 0.01rem solid var(--gray-100);
}[data-page="pages/followup/followup"] .sh-title { font-size: 0.32rem; font-weight: 600; color: var(--gray-800); }[data-page="pages/followup/followup"] .sh-sub { font-size: 0.22rem; color: var(--gray-400); margin-top: 0.04rem; }[data-page="pages/followup/followup"] .sh-close { font-size: 0.36rem; color: var(--gray-400); padding: 0 0.08rem; }/* H5 里 .sheet-body 是普通 div（非原生 scroll-view），可直接在本元素上做 padding，
   故内容直接放入 .sheet-body 即有留白；.sheet-body-inner 作为小程序兼容保留，H5 未使用。 */
[data-page="pages/followup/followup"] .sheet-body {
  flex: 1;
  min-height: 0;
  max-height: calc(82vh - 2.4rem);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 0 0.32rem 0.32rem;
}[data-page="pages/followup/followup"] .sheet-body-inner { padding: 0.24rem 0.32rem; }[data-page="pages/followup/followup"] .sheet-footer {
  display: flex;
  gap: 0.2rem;
  padding: 0.2rem 0.32rem;
  border-top: 0.01rem solid var(--gray-100);
  flex-shrink: 0;
}[data-page="pages/followup/followup"] .sheet-footer .btn { flex: 1; }[data-page="pages/followup/followup"] .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 0.84rem;
  border-radius: 0.16rem;
  font-size: 0.3rem;
  box-sizing: border-box;
}[data-page="pages/followup/followup"] .btn-primary { background: var(--primary); color: #fff; }[data-page="pages/followup/followup"] .btn-block { width: 100%; }/* 时间线 */
[data-page="pages/followup/followup"] .tl-item {
  display: flex;
  padding: 0.2rem 0;
  border-bottom: 0.01rem solid var(--gray-100);
}[data-page="pages/followup/followup"] .tl-dot {
  width: 0.2rem; height: 0.2rem;
  border-radius: 50%;
  background: var(--primary);
  margin: 0.1rem 0.24rem 0 0.04rem;
  flex-shrink: 0;
}[data-page="pages/followup/followup"] .tl-body { flex: 1; min-width: 0; }[data-page="pages/followup/followup"] .tl-head { display: flex; flex-wrap: wrap; gap: 0.1rem; margin-bottom: 0.1rem; }[data-page="pages/followup/followup"] .tl-nr {
  font-size: 0.24rem;
  color: var(--gray-800);
  line-height: 1.55;
}[data-page="pages/followup/followup"] .tl-next {
  font-size: 0.24rem;
  color: #B7791F;
  margin-top: 0.08rem;
}[data-page="pages/followup/followup"] .tl-imgs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.12rem;
  margin-top: 0.12rem;
}[data-page="pages/followup/followup"] .tl-img {
  width: 1.4rem; height: 1.4rem;
  border-radius: 0.12rem;
  background: var(--gray-100);
}[data-page="pages/followup/followup"] .tl-foot {
  font-size: 0.22rem;
  color: var(--gray-400);
  margin-top: 0.1rem;
}[data-page="pages/followup/followup"] .ds-empty {
  text-align: center;
  color: var(--gray-400);
  padding: 0.6rem 0;
  font-size: 0.26rem;
}/* 表单（新增跟进） */
[data-page="pages/followup/followup"] .form-row {
  display: flex;
  align-items: center;
  padding: 0.2rem 0;
  border-bottom: 0.01rem solid var(--gray-100);
}[data-page="pages/followup/followup"] .form-row.col { flex-direction: column; align-items: stretch; }[data-page="pages/followup/followup"] .form-label {
  width: 1.8rem;
  font-size: 0.28rem;
  color: var(--gray-700);
  flex-shrink: 0;
}[data-page="pages/followup/followup"] .req { color: var(--danger, #e54d42); font-weight: 600; }[data-page="pages/followup/followup"] .form-input {
  flex: 1;
  font-size: 0.28rem;
  height: 0.64rem;
}[data-page="pages/followup/followup"] .owner-search {
  margin-top: 0.16rem;
}[data-page="pages/followup/followup"] .form-pick {
  flex: 1;
  font-size: 0.28rem;
  color: var(--gray-800);
  height: 0.64rem;
  line-height: 0.64rem;
}[data-page="pages/followup/followup"] .form-pick.placeholder { color: #999999; }[data-page="pages/followup/followup"] .form-owner {
  flex: 1;
  min-width: 0; /* 关键：允许在 flex 内收缩，内容过长时截断而不是把"重新选择"顶出右边界 */
  display: flex;
  justify-content: space-between;
  align-items: center;
}[data-page="pages/followup/followup"] .form-owner-text {
  font-size: 0.28rem;
  color: var(--gray-800);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}[data-page="pages/followup/followup"] .owner-clear { font-size: 0.24rem; color: var(--primary); flex-shrink: 0; margin-left: 0.16rem; }[data-page="pages/followup/followup"] .search-result {
  margin-top: 0.12rem;
  border: 0.01rem solid var(--gray-100);
  border-radius: 0.12rem;
  overflow: hidden;
}[data-page="pages/followup/followup"] .sr-item {
  padding: 0.18rem 0.2rem;
  font-size: 0.26rem;
  color: var(--gray-700);
  border-bottom: 0.01rem solid var(--gray-100);
}[data-page="pages/followup/followup"] .sr-item:last-child { border-bottom: none; }[data-page="pages/followup/followup"] .sr-item:active { background: var(--gray-50); }[data-page="pages/followup/followup"] .form-textarea {
  width: 100%;
  /* 微信 textarea 有自身固有高度(~3.2rem)，min-height 压不住，必须显式 height */
  height: 1.6rem;
  font-size: 0.28rem;
  background: var(--gray-50);
  border-radius: 0.12rem;
  padding: 0.16rem;
  box-sizing: border-box;
  margin-top: 0.12rem;
}[data-page="pages/followup/followup"] .img-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 0.16rem;
  margin-top: 0.12rem;
}[data-page="pages/followup/followup"] .img-cell {
  width: 1.5rem; height: 1.5rem;
  border-radius: 0.12rem;
  position: relative;
  background: var(--gray-100);
}[data-page="pages/followup/followup"] .img-thumb { width: 100%; height: 100%; border-radius: 0.12rem; }[data-page="pages/followup/followup"] .img-del {
  position: absolute;
  top: -0.12rem; right: -0.12rem;
  width: 0.36rem; height: 0.36rem;
  border-radius: 50%;
  background: rgba(0,0,0,0.6);
  color: #fff;
  font-size: 0.22rem;
  text-align: center;
  line-height: 0.36rem;
}[data-page="pages/followup/followup"] .img-add {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.56rem;
  color: var(--gray-400);
  border: 0.02rem dashed var(--gray-300);
}


/* ---- \pages\login\login.wxss ---- */
/* pages/login/login.wxss */
[data-page="pages/login/login"] .login-page {
  min-height: 100vh;
  background: linear-gradient(160deg, #2B6CB0 0%, #3182CE 55%, #EBF5FF 100%);
  padding: 0 0.56rem;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: center;
}[data-page="pages/login/login"] .login-header {
  margin-top: 1.8rem;
  text-align: center;
  color: #fff;
}[data-page="pages/login/login"] .logo {
  width: 1.4rem;
  height: 1.4rem;
  border-radius: 0.36rem;
  background: rgba(255, 255, 255, 0.18);
  border: 0.04rem solid rgba(255, 255, 255, 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.52rem;
  font-weight: 700;
  margin: 0 auto 0.32rem;
}[data-page="pages/login/login"] .app-name {
  font-size: 0.4rem;
  font-weight: 700;
}[data-page="pages/login/login"] .app-slogan {
  font-size: 0.26rem;
  opacity: 0.85;
  margin-top: 0.12rem;
}[data-page="pages/login/login"] .login-card {
  width: 100%;
  background: #fff;
  border-radius: 0.32rem;
  padding: 0.56rem 0.48rem;
  margin-top: 0.8rem;
  box-shadow: 0 0.16rem 0.48rem rgba(0, 0, 0, 0.12);
  box-sizing: border-box;
}[data-page="pages/login/login"] .field {
  margin-bottom: 0.36rem;
}[data-page="pages/login/login"] .field-label {
  font-size: 0.26rem;
  color: #595959;
  display: block;
  margin-bottom: 0.14rem;
}[data-page="pages/login/login"] .field-input {
  height: 0.88rem;
  background: #F5F6FA;
  border-radius: 0.16rem;
  padding: 0 0.28rem;
  font-size: 0.3rem;
}[data-page="pages/login/login"] .login-btn {
  margin-top: 0.24rem;
  height: 0.92rem;
  line-height: 0.92rem;
  background: #2B6CB0;
  color: #fff;
  font-size: 0.32rem;
  font-weight: 600;
  border-radius: 0.16rem;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  box-sizing: border-box;
}[data-page="pages/login/login"] .login-btn::after {
  border: none;
}[data-page="pages/login/login"] .login-tip {
  color: #fff;
  font-size: 0.24rem;
  opacity: 0.85;
  margin-top: 0.4rem;
}


/* ---- \pages\records\records.wxss ---- */
/* pages/records/records.wxss */
[data-page="pages/records/records"] .page-records {
  min-height: 100vh;
}/* 顶部 */
[data-page="pages/records/records"] .records-header {
  background: #fff;
  padding: 0.2rem 0.32rem;
  border-bottom: 0.01rem solid var(--gray-100);
}[data-page="pages/records/records"] .month-picker {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.08rem 0;
}[data-page="pages/records/records"] .mp-btn {
  width: 0.56rem;
  height: 0.56rem;
  border-radius: 50%;
  background: var(--gray-100);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.36rem;
  color: var(--gray-600);
}[data-page="pages/records/records"] .mp-val {
  font-size: 0.3rem;
  font-weight: 600;
  color: var(--gray-800);
}[data-page="pages/records/records"] .records-summary {
  display: flex;
  gap: 0.2rem;
  margin-top: 0.2rem;
}[data-page="pages/records/records"] .rs-card {
  flex: 1;
  background: var(--gray-50);
  border-radius: 0.16rem;
  padding: 0.24rem;
  text-align: center;
}[data-page="pages/records/records"] .rs-card .label {
  font-size: 0.22rem;
  color: var(--gray-500);
  display: block;
}[data-page="pages/records/records"] .rs-card .val {
  font-size: 0.36rem;
  font-weight: 700;
  margin-top: 0.08rem;
  display: block;
  font-family: "DIN Alternate", sans-serif;
}[data-page="pages/records/records"] .rs-card .val.green { color: var(--success); }[data-page="pages/records/records"] .rs-card .val.red { color: var(--danger); }/* 时间线 */
[data-page="pages/records/records"] .timeline {
  padding: 0.16rem 0 0.2rem;
}[data-page="pages/records/records"] .timeline-item {
  display: flex;
  padding: 0.2rem 0.32rem;
}[data-page="pages/records/records"] .ti-dot {
  width: 0.16rem;
  height: 0.16rem;
  border-radius: 50%;
  margin-top: 0.12rem;
  margin-right: 0.24rem;
  flex-shrink: 0;
  position: relative;
}[data-page="pages/records/records"] .ti-dot::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 0.28rem;
  transform: translateX(-50%);
  width: 0.02rem;
  height: calc(100% + 0.2rem);
  background: var(--gray-200);
}[data-page="pages/records/records"] .timeline-item:last-child .ti-dot::after {
  display: none;
}[data-page="pages/records/records"] .ti-dot.green { background: var(--success); }[data-page="pages/records/records"] .ti-dot.red { background: var(--danger); }[data-page="pages/records/records"] .ti-body {
  flex: 1;
  background: #fff;
  border-radius: 0.24rem;
  padding: 0.24rem;
  box-shadow: 0 0.02rem 0.06rem rgba(0,0,0,0.08);
}[data-page="pages/records/records"] .ti-title {
  font-size: 0.28rem;
  font-weight: 600;
  color: var(--gray-800);
  display: flex;
  justify-content: space-between;
  align-items: center;
}[data-page="pages/records/records"] .ti-amount {
  font-size: 0.3rem;
  font-weight: 700;
  font-family: "DIN Alternate", sans-serif;
}[data-page="pages/records/records"] .ti-amount.green { color: var(--success); }[data-page="pages/records/records"] .ti-amount.red { color: var(--danger); }[data-page="pages/records/records"] .ti-detail {
  font-size: 0.24rem;
  color: var(--gray-500);
  margin-top: 0.12rem;
  line-height: 1.6;
}[data-page="pages/records/records"] .ti-tag {
  font-size: 0.2rem;
  padding: 0.02rem 0.12rem;
  border-radius: 0.08rem;
  margin-right: 0.12rem;
  display: inline-block;
}[data-page="pages/records/records"] .ti-tag.tag-property { background: var(--primary-light); color: var(--primary); }[data-page="pages/records/records"] .ti-tag.tag-water { background: #EBF8FF; color: #2A4365; }[data-page="pages/records/records"] .ti-tag.tag-parking { background: #E6FFFA; color: #234E52; }[data-page="pages/records/records"] .ti-tag.tag-electric { background: #FEFCBF; color: #744210; }[data-page="pages/records/records"] .ti-tag.tag-gas { background: #FAF5FF; color: #553C9A; }[data-page="pages/records/records"] .ti-tag.tag-overdue { background: var(--danger-bg); color: var(--danger); }


/* ---- \pages\reminder\reminder.wxss ---- */
/* pages/reminder/reminder.wxss */
[data-page="pages/reminder/reminder"] .page-reminder {
  min-height: 100vh;
  background: var(--gray-100, #F5F6FA);
}/* ===== 搜索栏 ===== */
[data-page="pages/reminder/reminder"] .search-bar-wrap {
  padding: 0.2rem 0.32rem;
  background: #fff;
  position: sticky;
  top: 0;
  z-index: 10;
}[data-page="pages/reminder/reminder"] .search-bar {
  display: flex;
  align-items: center;
  background: var(--gray-100, #F2F3F7);
  border-radius: 0.4rem;
  padding: 0.16rem 0.28rem;
}[data-page="pages/reminder/reminder"] .search-icon { font-size: 0.28rem; margin-right: 0.12rem; opacity: 0.5; }[data-page="pages/reminder/reminder"] .search-input { flex: 1; font-size: 0.28rem; color: var(--gray-800, #1f2329); }[data-page="pages/reminder/reminder"] .clear-btn { font-size: 0.28rem; color: var(--gray-400, #bbb); padding: 0 0.08rem; }/* ===== 物业/楼栋筛选 ===== */
[data-page="pages/reminder/reminder"] .filter-bar {
  display: flex;
  gap: 0.16rem;
  padding: 0.12rem 0.32rem 0.16rem;
  background: #fff;
  border-bottom: 0.01rem solid var(--gray-100, #F2F3F7);
}[data-page="pages/reminder/reminder"] .filter-chip {
  display: inline-flex;
  align-items: center;
  background: var(--gray-100, #F2F3F7);
  border-radius: 0.28rem;
  padding: 0.1rem 0.22rem;
  max-width: 3.2rem;
}[data-page="pages/reminder/reminder"] .chip-label { font-size: 0.24rem; color: var(--gray-400, #999); margin-right: 0.08rem; }[data-page="pages/reminder/reminder"] .chip-value { font-size: 0.26rem; color: var(--gray-800, #1f2329); font-weight: 500; max-width: 2rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }[data-page="pages/reminder/reminder"] .chip-arrow { font-size: 0.2rem; color: var(--gray-400, #999); margin-left: 0.08rem; }/* ===== 双 tab ===== */
[data-page="pages/reminder/reminder"] .tab-bar {
  display: flex;
  background: #fff;
  border-bottom: 0.01rem solid var(--gray-100, #F2F3F7);
}[data-page="pages/reminder/reminder"] .tab-item {
  flex: 1;
  text-align: center;
  font-size: 0.28rem;
  color: var(--gray-500, #666);
  padding: 0.24rem 0;
  position: relative;
}[data-page="pages/reminder/reminder"] .tab-item.active {
  color: var(--primary, #2B6CB0);
  font-weight: 600;
}[data-page="pages/reminder/reminder"] .tab-item.active::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  width: 0.72rem;
  height: 0.06rem;
  border-radius: 0.04rem;
  background: var(--primary, #2B6CB0);
}/* ===== 业主列表 ===== */
[data-page="pages/reminder/reminder"] .owner-list { padding: 0.16rem 0 0.2rem; }[data-page="pages/reminder/reminder"] .owner-card {
  background: #fff;
  border-radius: 0.24rem;
  margin: 0.16rem 0.32rem;
  padding: 0.28rem;
  box-shadow: 0 0.02rem 0.06rem rgba(0,0,0,0.08);
}[data-page="pages/reminder/reminder"] .owner-card:active { transform: scale(0.98); }[data-page="pages/reminder/reminder"] .oc-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 0.12rem; }[data-page="pages/reminder/reminder"] .oc-info { display: flex; align-items: center; }[data-page="pages/reminder/reminder"] .oc-avatar {
  width: 0.76rem; height: 0.76rem; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.28rem; font-weight: 600; margin-right: 0.2rem; flex-shrink: 0;
}[data-page="pages/reminder/reminder"] .oc-name { font-size: 0.3rem; font-weight: 600; color: var(--gray-800, #1f2329); }[data-page="pages/reminder/reminder"] .oc-room { font-size: 0.24rem; color: var(--gray-500, #666); margin-top: 0.04rem; }[data-page="pages/reminder/reminder"] .oc-status { font-size: 0.22rem; padding: 0.06rem 0.2rem; border-radius: 0.24rem; font-weight: 600; flex-shrink: 0; }[data-page="pages/reminder/reminder"] .oc-status-wrap { display: flex; flex-direction: column; align-items: flex-end; gap: 0.08rem; flex-shrink: 0; }[data-page="pages/reminder/reminder"] .owe-tag { font-size: 0.2rem; padding: 0.04rem 0.16rem; border-radius: 0.2rem; background: var(--danger-bg, #FFECEA); color: var(--danger, #e54d42); font-weight: 600; }/* 本月已催标记 */
[data-page="pages/reminder/reminder"] .reminded-badge {
  display: flex; align-items: center; gap: 0.08rem;
  background: var(--success-bg, #E6F7EE);
  border-radius: 0.2rem;
  padding: 0.08rem 0.18rem;
  margin-bottom: 0.16rem;
  font-size: 0.22rem;
  color: var(--success, #18a058);
}[data-page="pages/reminder/reminder"] .reminded-badge .rb-dot { font-weight: 700; }[data-page="pages/reminder/reminder"] .reminded-badge .rb-text { font-weight: 600; }[data-page="pages/reminder/reminder"] .reminded-badge .rb-summary { color: var(--gray-500, #666); font-weight: 400; }[data-page="pages/reminder/reminder"] .oc-body {
  display: flex; gap: 0.24rem;
  padding-top: 0.2rem;
  border-top: 0.01rem solid var(--gray-100, #F2F3F7);
}[data-page="pages/reminder/reminder"] .oc-stat { flex: 1; }[data-page="pages/reminder/reminder"] .oc-stat-right { text-align: right; }[data-page="pages/reminder/reminder"] .oc-stat .label { font-size: 0.22rem; color: var(--gray-500, #666); display: block; }[data-page="pages/reminder/reminder"] .oc-stat .val {
  font-size: 0.3rem; font-weight: 600;
  font-family: "DIN Alternate", sans-serif;
  display: block; margin-top: 0.04rem;
}[data-page="pages/reminder/reminder"] .oc-stat .val.success { color: var(--success, #18a058); }[data-page="pages/reminder/reminder"] .oc-stat .val.danger { color: var(--danger, #e54d42); }[data-page="pages/reminder/reminder"] .oc-stat .val.phone { font-size: 0.26rem; color: var(--gray-600, #555); font-weight: 400; }[data-page="pages/reminder/reminder"] .phone-lines { display: flex; flex-direction: column; align-items: flex-end; }/* 加载更多 / 空状态 / 加载中 */
[data-page="pages/reminder/reminder"] .load-more { text-align: center; padding: 0.24rem; font-size: 0.26rem; color: var(--gray-500, #666); }[data-page="pages/reminder/reminder"] .empty-state { text-align: center; padding: 0.8rem 0; }[data-page="pages/reminder/reminder"] .empty-icon { font-size: 0.8rem; display: block; opacity: 0.5; }[data-page="pages/reminder/reminder"] .empty-text { font-size: 0.26rem; color: var(--gray-400, #999); display: block; margin-top: 0.16rem; }[data-page="pages/reminder/reminder"] .loading-mask { text-align: center; padding: 0.4rem 0; }/* ===== 楼栋双栏弹层 ===== */
[data-page="pages/reminder/reminder"] .bld-mask {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.45); z-index: 100;
  display: flex; align-items: flex-start; justify-content: center;
}[data-page="pages/reminder/reminder"] .bld-panel {
  margin-top: 2rem; width: 86%; max-height: 60vh; background: #fff;
  border-radius: 0.2rem; overflow: hidden; display: flex;
}[data-page="pages/reminder/reminder"] .bld-left { width: 2.2rem; background: var(--gray-100, #F2F3F7); max-height: 60vh; overflow-y: auto; }[data-page="pages/reminder/reminder"] .bld-left-item { padding: 0.26rem 0.24rem; font-size: 0.28rem; color: var(--gray-700, #444); border-left: 0.06rem solid transparent; }[data-page="pages/reminder/reminder"] .bld-left-item.active { background: #fff; color: var(--primary, #2B6CB0); font-weight: 600; border-left-color: var(--primary, #2B6CB0); }[data-page="pages/reminder/reminder"] .bld-right { flex: 1; max-height: 60vh; overflow-y: auto; padding: 0.08rem 0; }[data-page="pages/reminder/reminder"] .bld-right-item { padding: 0.24rem 0.28rem; font-size: 0.28rem; color: var(--gray-800, #1f2329); }[data-page="pages/reminder/reminder"] .bld-right-item.active { color: var(--primary, #2B6CB0); font-weight: 600; }[data-page="pages/reminder/reminder"] .bld-right-tip { padding: 0.4rem 0.28rem; font-size: 0.26rem; color: var(--gray-400, #999); text-align: center; }/* ===== 通用遮罩 + 底部弹层 ===== */
[data-page="pages/reminder/reminder"] .modal-overlay {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.45); z-index: 200;
  opacity: 0; visibility: hidden; transition: opacity 0.2s;
}[data-page="pages/reminder/reminder"] .modal-overlay.show { opacity: 1; visibility: visible; }/* 层级铁律：明细遮罩(200) < 明细面板(201) < 催缴方式遮罩(210) < 催缴方式弹层(211) < 电话跟进遮罩(220)。遮罩一旦压住自己的面板，点击会穿透成关闭 */
[data-page="pages/reminder/reminder"] .modal-overlay.ov-reminder { z-index: 210; }
[data-page="pages/reminder/reminder"] .modal-overlay.ov-followup { z-index: 220; }/* 待缴明细弹层（从底部上滑的大面板） */
[data-page="pages/reminder/reminder"] .detail-sheet {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 201;
  background: #fff; border-radius: 0.28rem 0.28rem 0 0;
  max-height: 82vh; display: flex; flex-direction: column;
  transform: translateY(100%); transition: transform 0.25s;
}[data-page="pages/reminder/reminder"] .detail-sheet.show { transform: translateY(0); }[data-page="pages/reminder/reminder"] .ds-header { display: flex; justify-content: space-between; align-items: center; padding: 0.28rem 0.32rem 0.12rem; }[data-page="pages/reminder/reminder"] .ds-title { font-size: 0.32rem; font-weight: 600; color: var(--gray-800, #1f2329); }[data-page="pages/reminder/reminder"] .ds-sub { font-size: 0.24rem; color: var(--gray-500, #666); margin-top: 0.04rem; }[data-page="pages/reminder/reminder"] .ds-close { font-size: 0.36rem; color: var(--gray-400, #999); padding: 0 0.08rem; }[data-page="pages/reminder/reminder"] .ds-tip { font-size: 0.22rem; color: var(--gray-400, #999); padding: 0 0.32rem 0.12rem; }/* scroll-view 铁律：真机 flex:1 限不住高度，须 min-height:0 + max-height（否则弹层内容多时滚不动） */
[data-page="pages/reminder/reminder"] .ds-body { flex: 1; min-height: 0; max-height: calc(82vh - 1.8rem); overflow-y: auto; padding: 0.08rem 0.32rem 0.32rem; box-sizing: border-box; width: 100%; -webkit-overflow-scrolling: touch; }[data-page="pages/reminder/reminder"] .db-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 2.8rem);
  align-items: center;
  width: 100%; box-sizing: border-box;
  padding: 0.24rem 0; border-bottom: 0.01rem solid var(--gray-100, #F2F3F7);
}[data-page="pages/reminder/reminder"] .db-left { min-width: 0; overflow: hidden; }[data-page="pages/reminder/reminder"] .db-fee { font-size: 0.28rem; color: var(--gray-800, #1f2329); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }[data-page="pages/reminder/reminder"] .db-room { font-size: 0.28rem; color: var(--gray-800, #1f2329); font-weight: 600; }[data-page="pages/reminder/reminder"] .db-fee-sub { font-size: 0.24rem; font-weight: 400; color: var(--gray-600, #555); }[data-page="pages/reminder/reminder"] .db-sub { margin-top: 0.08rem; display: flex; gap: 0.12rem; align-items: center; }[data-page="pages/reminder/reminder"] .db-tag { font-size: 0.2rem; padding: 0.04rem 0.14rem; border-radius: 0.16rem; background: var(--warning-bg, #FFF3E0); color: var(--warning, #f0a020); }[data-page="pages/reminder/reminder"] .db-overdue { font-size: 0.2rem; color: var(--danger, #e54d42); }[data-page="pages/reminder/reminder"] .db-right { text-align: right; min-width: 0; }[data-page="pages/reminder/reminder"] .db-row { display: flex; justify-content: space-between; align-items: baseline; font-size: 0.24rem; color: var(--gray-600, #555); padding: 0.02rem 0; }[data-page="pages/reminder/reminder"] .db-row .db-l { color: var(--gray-400, #999); flex-shrink: 0; margin-right: 0.12rem; }[data-page="pages/reminder/reminder"] .db-row .db-v { flex: 1 1 0%; min-width: 0; font-family: "DIN Alternate", sans-serif; text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }[data-page="pages/reminder/reminder"] .db-row.db-total { margin-top: 0.06rem; padding-top: 0.06rem; border-top: 0.01rem dashed var(--gray-100, #F2F3F7); font-weight: 600; }[data-page="pages/reminder/reminder"] .db-row.db-total .db-v.danger { color: var(--danger, #e54d42); }[data-page="pages/reminder/reminder"] .ds-empty { text-align: center; padding: 0.6rem 0; font-size: 0.26rem; color: var(--gray-400, #999); }[data-page="pages/reminder/reminder"] .ds-footer { padding: 0.16rem 0.32rem calc(0.16rem + env(safe-area-inset-bottom)); border-top: 0.01rem solid var(--gray-100, #F2F3F7); flex-shrink: 0; }[data-page="pages/reminder/reminder"] .ds-total-bar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.16rem; }[data-page="pages/reminder/reminder"] .ds-total-bar text:first-child { font-size: 0.26rem; color: var(--gray-500, #666); }[data-page="pages/reminder/reminder"] .ds-total-val { font-size: 0.36rem; font-weight: 700; font-family: "DIN Alternate", sans-serif; }[data-page="pages/reminder/reminder"] .ds-total-val.danger { color: var(--danger, #e54d42); }[data-page="pages/reminder/reminder"] .ds-actions { display: flex; gap: 0.2rem; }[data-page="pages/reminder/reminder"] .btn { flex: 1; text-align: center; padding: 0.24rem 0; border-radius: 0.4rem; font-size: 0.28rem; font-weight: 600; }[data-page="pages/reminder/reminder"] .btn-primary { background: var(--primary, #2B6CB0); color: #fff; }[data-page="pages/reminder/reminder"] .btn-ghost { background: var(--gray-100, #F2F3F7); color: var(--gray-700, #444); }/* ===== 催缴方式 / 电话跟进 弹层 ===== */
[data-page="pages/reminder/reminder"] .action-sheet {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 211;
  background: #fff; border-radius: 0.28rem 0.28rem 0 0;
  transform: translateY(100%); transition: transform 0.25s;
  padding-bottom: calc(0.12rem + env(safe-area-inset-bottom));
}[data-page="pages/reminder/reminder"] .action-sheet.show { transform: translateY(0); }[data-page="pages/reminder/reminder"] .as-header { text-align: center; font-size: 0.28rem; font-weight: 600; color: var(--gray-800, #1f2329); padding: 0.28rem; }[data-page="pages/reminder/reminder"] .as-item { display: flex; align-items: center; padding: 0.22rem 0.32rem; }[data-page="pages/reminder/reminder"] .as-item:active { background: var(--gray-100, #F2F3F7); }[data-page="pages/reminder/reminder"] .as-icon { width: 0.72rem; height: 0.72rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 0.34rem; margin-right: 0.24rem; flex-shrink: 0; }[data-page="pages/reminder/reminder"] .as-text { flex: 1; }[data-page="pages/reminder/reminder"] .as-title { font-size: 0.28rem; color: var(--gray-800, #1f2329); font-weight: 500; }[data-page="pages/reminder/reminder"] .as-sub { font-size: 0.22rem; color: var(--gray-400, #999); margin-top: 0.04rem; }[data-page="pages/reminder/reminder"] .as-cancel { text-align: center; font-size: 0.28rem; color: var(--gray-600, #555); padding: 0.24rem; margin-top: 0.08rem; border-top: 0.01rem solid var(--gray-100, #F2F3F7); }[data-page="pages/reminder/reminder"] .fu-result { padding: 0.26rem 0.32rem; font-size: 0.28rem; color: var(--gray-800, #1f2329); }[data-page="pages/reminder/reminder"] .fu-result.active { color: var(--primary, #2B6CB0); font-weight: 600; background: var(--primary-light, #EAF2FB); }[data-page="pages/reminder/reminder"] .fu-date { display: flex; justify-content: space-between; align-items: center; padding: 0.16rem 0.32rem; font-size: 0.26rem; color: var(--gray-600, #555); }[data-page="pages/reminder/reminder"] .fu-date-pick { color: var(--primary, #2B6CB0); font-weight: 500; }


/* ---- \pages\repair\register.wxss ---- */
/* pages/repair/register.wxss */
[data-page="pages/repair/register"] .reg-page {
  min-height: 100vh;
  background: #F5F6FA;
  padding: 0.24rem 0.32rem 1.6rem;
  box-sizing: border-box;
}[data-page="pages/repair/register"] .reg-card {
  background: #fff;
  border-radius: 0.24rem;
  padding: 0.12rem 0.28rem 0.32rem;
  box-shadow: 0 0.02rem 0.06rem rgba(0,0,0,0.06);
}/* 分段器 */
[data-page="pages/repair/register"] .seg {
  display: flex;
  background: #F0F2F5;
  border-radius: 0.16rem;
  padding: 0.06rem;
  margin: 0.2rem 0 0.08rem;
}[data-page="pages/repair/register"] .seg-item {
  flex: 1;
  text-align: center;
  font-size: 0.28rem;
  color: #595959;
  padding: 0.18rem 0;
  border-radius: 0.12rem;
  transition: all 0.2s;
}[data-page="pages/repair/register"] .seg-item.on {
  background: #2B6CB0;
  color: #fff;
  font-weight: 600;
}/* 字段 */
[data-page="pages/repair/register"] .field {
  padding: 0.24rem 0;
  border-bottom: 0.01rem solid #f2f2f2;
}[data-page="pages/repair/register"] .field:last-of-type {
  border-bottom: none;
}[data-page="pages/repair/register"] .label {
  display: block;
  font-size: 0.26rem;
  color: #8C8C8C;
  margin-bottom: 0.14rem;
}[data-page="pages/repair/register"] .req { color: var(--danger, #e54d42); font-weight: 600; }/* picker 选择器 */
[data-page="pages/repair/register"] .picker {
  background: #F7F8FA;
  border: 0.01rem solid #E8EAED;
  border-radius: 0.12rem;
  padding: 0.22rem 0.24rem;
  font-size: 0.28rem;
  color: #262626;
}[data-page="pages/repair/register"] .picker.ph {
  color: #BFBFBF;
}[data-page="pages/repair/register"] .picker-row {
  display: flex;
  gap: 0.2rem;
}[data-page="pages/repair/register"] .picker.half {
  flex: 1;
}/* 自动带出提示 */
[data-page="pages/repair/register"] .auto-tip {
  margin-top: 0.14rem;
  font-size: 0.24rem;
  color: #2B6CB0;
  background: #EBF5FF;
  padding: 0.12rem 0.18rem;
  border-radius: 0.1rem;
}/* 输入框 */
[data-page="pages/repair/register"] .input {
  background: #F7F8FA;
  border: 0.01rem solid #E8EAED;
  border-radius: 0.12rem;
  padding: 0.22rem 0.24rem;
  font-size: 0.28rem;
  color: #262626;
}/* 文本域 */
[data-page="pages/repair/register"] .textarea {
  width: 100%;
  box-sizing: border-box;
  background: #F7F8FA;
  border: 0.01rem solid #E8EAED;
  border-radius: 0.12rem;
  padding: 0.22rem 0.24rem;
  font-size: 0.28rem;
  color: #262626;
  height: 1.6rem;
}/* 图片九宫格 */
[data-page="pages/repair/register"] .img-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 0.18rem;
}[data-page="pages/repair/register"] .img-item {
  position: relative;
  width: 1.6rem;
  height: 1.6rem;
  border-radius: 0.12rem;
  overflow: hidden;
}[data-page="pages/repair/register"] .img {
  width: 100%;
  height: 100%;
}[data-page="pages/repair/register"] .img-del {
  position: absolute;
  top: 0;
  right: 0;
  width: 0.4rem;
  height: 0.4rem;
  line-height: 0.38rem;
  text-align: center;
  background: rgba(0,0,0,0.55);
  color: #fff;
  font-size: 0.3rem;
  border-bottom-left-radius: 0.12rem;
}[data-page="pages/repair/register"] .img-add {
  width: 1.6rem;
  height: 1.6rem;
  border: 0.02rem dashed #C9CDD4;
  border-radius: 0.12rem;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #BFBFBF;
  font-size: 0.64rem;
  background: #FAFBFC;
}/* 提交按钮 */
[data-page="pages/repair/register"] .submit-btn {
  margin-top: 0.4rem;
  background: #2B6CB0;
  color: #fff;
  font-size: 0.32rem;
  font-weight: 600;
  border-radius: 0.5rem;
  padding: 0.24rem 0;
  box-shadow: 0 0.08rem 0.24rem rgba(43,108,176,0.35);
}[data-page="pages/repair/register"] .submit-btn[loading] {
  opacity: 0.8;
}/* ===== 楼栋双栏选择弹层 ===== */
[data-page="pages/repair/register"] .bld-mask {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.45); z-index: 300;
  display: flex; align-items: center; justify-content: center;
}[data-page="pages/repair/register"] .bld-panel {
  width: 6.4rem; background: #fff; border-radius: 0.2rem;
  overflow: hidden; display: flex; flex-direction: column;
}[data-page="pages/repair/register"] .bld-title {
  text-align: center; font-size: 0.3rem; font-weight: 600; color: #262626;
  padding: 0.28rem 0 0.16rem;
}[data-page="pages/repair/register"] .bld-panel-body { display: flex; height: 5.6rem; }[data-page="pages/repair/register"] .bld-left {
  width: 2.2rem; background: #F2F3F7; overflow-y: auto; flex-shrink: 0;
}[data-page="pages/repair/register"] .bld-left-item {
  padding: 0.26rem 0.24rem; font-size: 0.28rem; color: #444;
  border-left: 0.06rem solid transparent;
}[data-page="pages/repair/register"] .bld-left-item.active {
  background: #fff; color: #2B6CB0; font-weight: 600; border-left-color: #2B6CB0;
}[data-page="pages/repair/register"] .bld-right { flex: 1; overflow-y: auto; padding: 0.08rem 0; }[data-page="pages/repair/register"] .bld-right-item { padding: 0.24rem 0.28rem; font-size: 0.28rem; color: #262626; }[data-page="pages/repair/register"] .bld-right-item.active { color: #2B6CB0; font-weight: 600; }[data-page="pages/repair/register"] .bld-right-tip {
  padding: 0.4rem 0.28rem; font-size: 0.26rem; color: #BFBFBF; text-align: center;
}/* ===== 房号选择弹层（搜索 + 列表） ===== */
[data-page="pages/repair/register"] .rp-search { padding: 0.12rem 0.24rem 0.16rem; }[data-page="pages/repair/register"] .rp-search-input {
  width: 100%; height: 0.64rem; background: #F7F8FA;
  border: 0.02rem solid #E5E7EB; border-radius: 0.12rem;
  padding: 0 0.2rem; font-size: 0.28rem; color: #262626; box-sizing: border-box;
}[data-page="pages/repair/register"] .rp-list { max-height: 6.4rem; }


/* ---- \pages\repair\repair.wxss ---- */
/* pages/repair/repair.wxss */
[data-page="pages/repair/repair"] .repair-page {
  min-height: 100vh;
  background: #F5F6FA;
  padding-bottom: 1.4rem;
}[data-page="pages/repair/repair"] .status-tabs {
  display: flex;
  background: #fff;
  position: sticky;
  top: 0;
  z-index: 10;
  border-bottom: 0.01rem solid #eee;
}[data-page="pages/repair/repair"] .tab-item {
  flex: 1;
  text-align: center;
  font-size: 0.26rem;
  color: #595959;
  padding: 0.26rem 0;
  position: relative;
}[data-page="pages/repair/repair"] .tab-item.active {
  color: #2B6CB0;
  font-weight: 600;
}[data-page="pages/repair/repair"] .tab-item.active::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  width: 0.48rem;
  height: 0.06rem;
  border-radius: 0.03rem;
  background: #2B6CB0;
}[data-page="pages/repair/repair"] .repair-list {
  padding: 0.24rem 0.32rem;
}[data-page="pages/repair/repair"] .repair-card {
  background: #fff;
  border-radius: 0.24rem;
  padding: 0.28rem;
  margin-bottom: 0.24rem;
  box-shadow: 0 0.02rem 0.06rem rgba(0,0,0,0.06);
}[data-page="pages/repair/repair"] .rc-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-bottom: 0.18rem;
  border-bottom: 0.01rem solid #f2f2f2;
}[data-page="pages/repair/repair"] .rc-no {
  font-size: 0.28rem;
  font-weight: 600;
  color: #262626;
}[data-page="pages/repair/repair"] .rc-status {
  font-size: 0.24rem;
  color: #2B6CB0;
  background: #EBF5FF;
  padding: 0.04rem 0.18rem;
  border-radius: 0.2rem;
}[data-page="pages/repair/repair"] .rc-body {
  margin-top: 0.18rem;
}[data-page="pages/repair/repair"] .rc-row {
  font-size: 0.26rem;
  color: #595959;
  margin-bottom: 0.1rem;
  line-height: 1.5;
}[data-page="pages/repair/repair"] .rc-room {
  font-weight: 600;
  color: #262626;
  margin-left: 0.12rem;
}[data-page="pages/repair/repair"] .rc-contact {
  color: #8C8C8C;
}[data-page="pages/repair/repair"] .rc-foot {
  display: flex;
  justify-content: space-between;
  color: #BFBFBF;
  font-size: 0.22rem;
  margin-top: 0.06rem;
}[data-page="pages/repair/repair"] .tag {
  font-size: 0.22rem;
  padding: 0.02rem 0.14rem;
  border-radius: 0.16rem;
  margin-right: 0.08rem;
}[data-page="pages/repair/repair"] .tag.yz {
  color: #2B6CB0;
  background: #EBF5FF;
}[data-page="pages/repair/repair"] .tag.gq {
  color: #D69E2E;
  background: #FFFAF0;
}[data-page="pages/repair/repair"] .tag.wx {
  color: #38A169;
  background: #F0FFF4;
}[data-page="pages/repair/repair"] .tag.ts {
  color: #E53E3E;
  background: #FFF5F5;
}[data-page="pages/repair/repair"] .fab {
  position: fixed;
  /* 对齐到 750 列右缘（桌面预览与手机统一），并抬高以避开底部 tabbar */
  right: calc(50% - 3.75rem + 0.4rem);
  bottom: calc(var(--tabbar-h, 0rem) + 0.6rem);
  background: #2B6CB0;
  color: #fff;
  font-size: 0.3rem;
  font-weight: 600;
  padding: 0.24rem 0.44rem;
  border-radius: 0.5rem;
  box-shadow: 0 0.08rem 0.24rem rgba(43,108,176,0.4);
  z-index: 60;
}[data-page="pages/repair/repair"] .empty-state {
  text-align: center;
  padding: 0.8rem 0;
}[data-page="pages/repair/repair"] .empty-text {
  color: #BFBFBF;
  font-size: 0.26rem;
}/* ===== 弹层通用 ===== */
[data-page="pages/repair/repair"] .modal-overlay {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.45); z-index: 200;
  opacity: 0; visibility: hidden; transition: opacity 0.2s;
}[data-page="pages/repair/repair"] .modal-overlay.show { opacity: 1; visibility: visible; }[data-page="pages/repair/repair"] .detail-sheet {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 201;
  background: #fff; border-radius: 0.28rem 0.28rem 0 0;
  max-height: 82vh; display: flex; flex-direction: column;
  transform: translateY(100%); transition: transform 0.25s;
}[data-page="pages/repair/repair"] .detail-sheet.show { transform: translateY(0); }[data-page="pages/repair/repair"] .ds-header { display: flex; justify-content: space-between; align-items: center; padding: 0.28rem 0.32rem 0.12rem; }[data-page="pages/repair/repair"] .ds-title-wrap { display: flex; align-items: center; gap: 0.16rem; }[data-page="pages/repair/repair"] .ds-title { font-size: 0.32rem; font-weight: 600; color: #262626; }[data-page="pages/repair/repair"] .ds-sub { font-size: 0.24rem; color: #8C8C8C; margin-top: 0.04rem; }[data-page="pages/repair/repair"] .ds-status { font-size: 0.22rem; color: #2B6CB0; background: #EBF5FF; padding: 0.04rem 0.16rem; border-radius: 0.18rem; }[data-page="pages/repair/repair"] .ds-close { font-size: 0.36rem; color: #BFBFBF; padding: 0 0.08rem; }/* scroll-view 铁律：真机 flex:1 限不住高度，须 min-height:0 + max-height（否则弹层内容多时滚不动） */
[data-page="pages/repair/repair"] .ds-body { flex: 1; min-height: 0; max-height: calc(82vh - 1.8rem); overflow-y: auto; padding: 0.08rem 0.32rem 0.32rem; box-sizing: border-box; width: 100%; -webkit-overflow-scrolling: touch; }[data-page="pages/repair/repair"] .ds-empty { text-align: center; padding: 0.6rem 0; font-size: 0.26rem; color: #BFBFBF; }[data-page="pages/repair/repair"] .ds-section { padding: 0.2rem 0; border-bottom: 0.01rem solid #F2F3F7; }[data-page="pages/repair/repair"] .ds-sec-title { font-size: 0.26rem; font-weight: 600; color: #262626; margin-bottom: 0.16rem; }[data-page="pages/repair/repair"] .ds-row { display: flex; margin-bottom: 0.14rem; font-size: 0.26rem; }[data-page="pages/repair/repair"] .ds-l { width: 1.4rem; flex-shrink: 0; color: #8C8C8C; }[data-page="pages/repair/repair"] .ds-v { flex: 1; min-width: 0; color: #262626; line-height: 1.5; word-break: break-all; }[data-page="pages/repair/repair"] .ds-v.link { color: #2B6CB0; }[data-page="pages/repair/repair"] .ds-note { font-size: 0.26rem; color: #595959; line-height: 1.6; background: #F7F8FA; border-radius: 0.12rem; padding: 0.16rem 0.2rem; }[data-page="pages/repair/repair"] .img-grid { display: flex; flex-wrap: wrap; gap: 0.12rem; }[data-page="pages/repair/repair"] .img-grid .img { width: 2rem; height: 2rem; border-radius: 0.12rem; background: #F2F3F7; }[data-page="pages/repair/repair"] .ds-footer {
  display: flex; gap: 0.2rem;
  padding: 0.16rem 0.32rem calc(0.16rem + env(safe-area-inset-bottom));
  border-top: 0.01rem solid #F2F3F7;
  flex-shrink: 0;
}[data-page="pages/repair/repair"] .btn { flex: 1; text-align: center; padding: 0.22rem 0; border-radius: 0.4rem; font-size: 0.28rem; font-weight: 600; }[data-page="pages/repair/repair"] .btn-primary { background: #2B6CB0; color: #fff; }[data-page="pages/repair/repair"] .btn-ghost { background: #F2F3F7; color: #595959; }/* ===== 办理时间轴 ===== */
[data-page="pages/repair/repair"] .timeline-sheet .ds-body { padding-top: 0.2rem; }[data-page="pages/repair/repair"] .tl { padding: 0.08rem 0.08rem 0.24rem; }[data-page="pages/repair/repair"] .tl-item { position: relative; padding: 0 0 0.36rem 0.56rem; }[data-page="pages/repair/repair"] .tl-item.last { padding-bottom: 0.08rem; }/* 连线 */
[data-page="pages/repair/repair"] .tl-item::before {
  content: ''; position: absolute; left: 0.17rem; top: 0.36rem; bottom: -0.04rem;
  width: 0.04rem; background: #E5E8EF;
}[data-page="pages/repair/repair"] .tl-item.last::before { display: none; }[data-page="pages/repair/repair"] .tl-item.done::before { background: #2B6CB0; }/* 圆点 */
[data-page="pages/repair/repair"] .tl-dot {
  position: absolute; left: 0.08rem; top: 0.06rem;
  width: 0.22rem; height: 0.22rem; border-radius: 50%;
  background: #fff; border: 0.06rem solid #D3D9E3; box-sizing: border-box;
}[data-page="pages/repair/repair"] .tl-item.done .tl-dot { border-color: #2B6CB0; background: #2B6CB0; }[data-page="pages/repair/repair"] .tl-head { display: flex; justify-content: space-between; align-items: baseline; }[data-page="pages/repair/repair"] .tl-label { font-size: 0.28rem; font-weight: 600; color: #8C8C8C; }[data-page="pages/repair/repair"] .tl-item.done .tl-label { color: #262626; }[data-page="pages/repair/repair"] .tl-time { font-size: 0.24rem; color: #595959; }[data-page="pages/repair/repair"] .tl-time.pending { color: #BFBFBF; }[data-page="pages/repair/repair"] .tl-by { margin-top: 0.06rem; font-size: 0.24rem; color: #8C8C8C; }[data-page="pages/repair/repair"] .tl-extra { margin-top: 0.08rem; font-size: 0.24rem; color: #595959; line-height: 1.5; background: #F7F8FA; border-radius: 0.1rem; padding: 0.12rem 0.16rem; }


/* ---- \pages\search\search.wxss ---- */
/* pages/search/search.wxss */
[data-page="pages/search/search"] .page-search {
  min-height: 100vh;
}/* 搜索栏 */
[data-page="pages/search/search"] .search-bar-wrap {
  padding: 0.2rem 0.32rem;
  background: #fff;
  position: sticky;
  top: 0;
  z-index: 10;
}[data-page="pages/search/search"] .search-bar {
  display: flex;
  align-items: center;
  background: var(--gray-100);
  border-radius: 0.4rem;
  padding: 0.16rem 0.28rem;
}[data-page="pages/search/search"] .search-icon {
  font-size: 0.28rem;
  margin-right: 0.12rem;
  opacity: 0.5;
}[data-page="pages/search/search"] .search-input {
  flex: 1;
  font-size: 0.28rem;
  color: var(--gray-800);
}[data-page="pages/search/search"] .clear-btn {
  font-size: 0.28rem;
  color: var(--gray-400);
  padding: 0 0.08rem;
}/* 物业/楼栋筛选栏 */
[data-page="pages/search/search"] .filter-bar {
  display: flex;
  gap: 0.16rem;
  padding: 0.12rem 0.32rem 0.16rem;
  background: #fff;
  border-bottom: 0.01rem solid var(--gray-100);
}[data-page="pages/search/search"] .filter-chip {
  display: inline-flex;
  align-items: center;
  background: var(--gray-100);
  border-radius: 0.28rem;
  padding: 0.1rem 0.22rem;
  max-width: 3.2rem;
}[data-page="pages/search/search"] .chip-label {
  font-size: 0.24rem;
  color: var(--gray-400);
  margin-right: 0.08rem;
}[data-page="pages/search/search"] .chip-value {
  font-size: 0.26rem;
  color: var(--gray-800);
  font-weight: 500;
  max-width: 2rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}[data-page="pages/search/search"] .chip-arrow {
  font-size: 0.2rem;
  color: var(--gray-400);
  margin-left: 0.08rem;
}/* 业主列表 */
[data-page="pages/search/search"] .owner-list {
  padding: 0.16rem 0 0.2rem;
}[data-page="pages/search/search"] .owner-card {
  background: #fff;
  border-radius: 0.24rem;
  margin: 0.16rem 0.32rem;
  padding: 0.28rem;
  box-shadow: 0 0.02rem 0.06rem rgba(0,0,0,0.08);
}[data-page="pages/search/search"] .owner-card:active {
  transform: scale(0.98);
}[data-page="pages/search/search"] .oc-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 0.2rem;
}[data-page="pages/search/search"] .oc-info {
  display: flex;
  align-items: center;
}[data-page="pages/search/search"] .oc-avatar {
  width: 0.76rem;
  height: 0.76rem;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.28rem;
  font-weight: 600;
  margin-right: 0.2rem;
  flex-shrink: 0;
}[data-page="pages/search/search"] .oc-name {
  font-size: 0.3rem;
  font-weight: 600;
  color: var(--gray-800);
}[data-page="pages/search/search"] .oc-room {
  font-size: 0.24rem;
  color: var(--gray-500);
  margin-top: 0.04rem;
}[data-page="pages/search/search"] .oc-status {
  font-size: 0.22rem;
  padding: 0.06rem 0.2rem;
  border-radius: 0.24rem;
  font-weight: 600;
  flex-shrink: 0;
}[data-page="pages/search/search"] .oc-body {
  display: flex;
  gap: 0.24rem;
  padding-top: 0.2rem;
  border-top: 0.01rem solid var(--gray-100);
}[data-page="pages/search/search"] .oc-stat {
  flex: 1;
}[data-page="pages/search/search"] .oc-stat-right {
  text-align: right;
}[data-page="pages/search/search"] .oc-stat .label {
  font-size: 0.22rem;
  color: var(--gray-500);
  display: block;
}[data-page="pages/search/search"] .oc-stat .val {
  font-size: 0.32rem;
  font-weight: 600;
  font-family: "DIN Alternate", sans-serif;
  display: block;
  margin-top: 0.04rem;
}[data-page="pages/search/search"] .oc-stat .val.success { color: var(--success); }[data-page="pages/search/search"] .oc-stat .val.danger { color: var(--danger); }[data-page="pages/search/search"] .oc-stat .val.phone {
  font-size: 0.26rem;
  color: var(--gray-600);
  font-weight: 400;
}/* 加载更多 */
[data-page="pages/search/search"] .load-more {
  text-align: center;
  padding: 0.24rem;
  font-size: 0.26rem;
  color: var(--gray-500);
}/* 多业主联系方式：逐行对齐 */
[data-page="pages/search/search"] .phone-lines {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
}/* 楼栋双栏选择弹层 */
[data-page="pages/search/search"] .bld-mask {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 100;
  display: flex;
  align-items: flex-start;
  justify-content: center;
}[data-page="pages/search/search"] .bld-panel {
  margin-top: 2rem;
  width: 86%;
  max-height: 60vh;
  background: #fff;
  border-radius: 0.2rem;
  overflow: hidden;
  display: flex;
}[data-page="pages/search/search"] .bld-left {
  width: 2.2rem;
  background: var(--gray-100);
  max-height: 60vh;
  overflow-y: auto;
}[data-page="pages/search/search"] .bld-left-item {
  padding: 0.26rem 0.24rem;
  font-size: 0.28rem;
  color: var(--gray-700);
  border-left: 0.06rem solid transparent;
}[data-page="pages/search/search"] .bld-left-item.active {
  background: #fff;
  color: var(--primary, #2f6fed);
  font-weight: 600;
  border-left-color: var(--primary, #2f6fed);
}[data-page="pages/search/search"] .bld-right {
  flex: 1;
  max-height: 60vh;
  overflow-y: auto;
  padding: 0.08rem 0;
}[data-page="pages/search/search"] .bld-right-item {
  padding: 0.24rem 0.28rem;
  font-size: 0.28rem;
  color: var(--gray-800);
}[data-page="pages/search/search"] .bld-right-item.active {
  color: var(--primary, #2f6fed);
  font-weight: 600;
}[data-page="pages/search/search"] .bld-right-tip {
  padding: 0.4rem 0.28rem;
  font-size: 0.26rem;
  color: var(--gray-400);
  text-align: center;
}


/* ---- \pages\workbench\workbench.wxss ---- */
/* pages/workbench/workbench.wxss */
[data-page="pages/workbench/workbench"] .page-workbench {
  min-height: 100vh;
  padding-bottom: 0.2rem;
}/* 顶部问候栏 */
[data-page="pages/workbench/workbench"] .greeting-bar {
  background: linear-gradient(135deg, #2B6CB0 0%, #3182CE 100%);
  padding: 0.2rem 0.32rem 0.56rem;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
}[data-page="pages/workbench/workbench"] .manager-info {
  display: flex;
  align-items: center;
  flex: 1;
  min-width: 0;
}[data-page="pages/workbench/workbench"] .avatar {
  width: 0.84rem;
  height: 0.84rem;
  border-radius: 50%;
  background: rgba(255,255,255,0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.36rem;
  font-weight: 600;
  margin-right: 0.24rem;
  border: 0.04rem solid rgba(255,255,255,0.3);
}[data-page="pages/workbench/workbench"] .manager-text {
  min-width: 0;
}[data-page="pages/workbench/workbench"] .manager-text .name {
  font-size: 0.32rem;
  font-weight: 600;
}[data-page="pages/workbench/workbench"] .manager-text .name .arrow {
  font-size: 0.28rem;
  opacity: 0.8;
  margin-left: 0.04rem;
}[data-page="pages/workbench/workbench"] .manager-text .sub {
  font-size: 0.24rem;
  opacity: 0.85;
  margin-top: 0.06rem;
}[data-page="pages/workbench/workbench"] .switch-hint {
  display: inline-block;
  margin-left: 0.12rem;
  padding: 0.02rem 0.12rem;
  background: rgba(255,255,255,0.2);
  border-radius: 0.2rem;
  font-size: 0.2rem;
}[data-page="pages/workbench/workbench"] .greeting {
  font-size: 0.26rem;
  opacity: 0.9;
  flex-shrink: 0;
  margin-left: 0.16rem;
}/* 统计卡片（整体下移，不再覆盖蓝色顶栏） */
[data-page="pages/workbench/workbench"] .stat-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.2rem;
  padding: 0 0.32rem;
  margin-top: 0.24rem;
  position: relative;
  z-index: 1;
}[data-page="pages/workbench/workbench"] .stat-card {
  background: #fff;
  border-radius: 0.24rem;
  padding: 0.28rem;
  box-shadow: 0 0.02rem 0.06rem rgba(0,0,0,0.08);
  position: relative;
  overflow: hidden;
}[data-page="pages/workbench/workbench"] .stat-label {
  font-size: 0.24rem;
  color: var(--gray-500);
}[data-page="pages/workbench/workbench"] .stat-value {
  font-size: 0.48rem;
  font-weight: 700;
  margin-top: 0.12rem;
  font-family: "DIN Alternate", "Helvetica Neue", sans-serif;
}[data-page="pages/workbench/workbench"] .stat-value.success { color: var(--success); }[data-page="pages/workbench/workbench"] .stat-value.warning { color: var(--warning); }[data-page="pages/workbench/workbench"] .stat-value.danger { color: var(--danger); }[data-page="pages/workbench/workbench"] .stat-unit {
  font-size: 0.24rem;
  color: var(--gray-500);
  font-weight: 400;
  margin-left: 0.04rem;
}[data-page="pages/workbench/workbench"] .stat-trend {
  font-size: 0.22rem;
  margin-top: 0.08rem;
  color: var(--gray-500);
}[data-page="pages/workbench/workbench"] .stat-trend.success { color: var(--success); }[data-page="pages/workbench/workbench"] .stat-trend.danger { color: var(--danger); }[data-page="pages/workbench/workbench"] .stat-icon {
  position: absolute;
  right: 0.24rem;
  top: 0.24rem;
  width: 0.56rem;
  height: 0.56rem;
  border-radius: 0.16rem;
  display: flex;
  align-items: center;
  justify-content: center;
}[data-page="pages/workbench/workbench"] .stat-icon .iconfont {
  font-size: 0.28rem;
  font-weight: 700;
}/* 收缴率 */
[data-page="pages/workbench/workbench"] .collection-rate {
  margin-top: 0.24rem;
}[data-page="pages/workbench/workbench"] .cr-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.28rem;
}[data-page="pages/workbench/workbench"] .cr-title {
  font-size: 0.3rem;
  font-weight: 600;
  color: var(--gray-800);
}[data-page="pages/workbench/workbench"] .cr-month {
  font-size: 0.24rem;
  color: var(--gray-500);
  background: var(--gray-100);
  padding: 0.04rem 0.2rem;
  border-radius: 0.2rem;
}[data-page="pages/workbench/workbench"] .rate-ring-wrap {
  display: flex;
  align-items: center;
}[data-page="pages/workbench/workbench"] .rate-ring {
  width: 1.8rem;
  height: 1.8rem;
  position: relative;
  margin-right: 0.4rem;
  flex-shrink: 0;
}[data-page="pages/workbench/workbench"] .ring-bg {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: #F0F0F0;
}[data-page="pages/workbench/workbench"] .ring-progress {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 50%;
}/* 白色内圆叠加成环（不依赖 CSS mask，真机兼容） */
[data-page="pages/workbench/workbench"] .ring-hole {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 1.24rem;
  height: 1.24rem;
  border-radius: 50%;
  background: #fff;
}[data-page="pages/workbench/workbench"] .ring-inner {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  /* 确保文字位于最上层 */
  z-index: 2;
  width: 1.24rem;
}[data-page="pages/workbench/workbench"] .ring-num {
  font-size: 0.3rem;
  font-weight: 700;
  color: var(--primary);
  display: block;
  line-height: 1.1;
  white-space: nowrap;
}[data-page="pages/workbench/workbench"] .ring-label {
  font-size: 0.2rem;
  color: var(--gray-500);
}[data-page="pages/workbench/workbench"] .rate-detail {
  flex: 1;
}[data-page="pages/workbench/workbench"] .rd-item {
  display: flex;
  justify-content: space-between;
  font-size: 0.26rem;
  padding: 0.06rem 0;
}[data-page="pages/workbench/workbench"] .rd-label {
  color: var(--gray-600);
  display: flex;
  align-items: center;
}[data-page="pages/workbench/workbench"] .rd-dot {
  width: 0.16rem;
  height: 0.16rem;
  border-radius: 50%;
  margin-right: 0.12rem;
}[data-page="pages/workbench/workbench"] .rd-val {
  font-weight: 600;
}/* 快捷功能 */
[data-page="pages/workbench/workbench"] .quick-actions {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.16rem;
  padding: 0 0.32rem;
  margin-top: 0.08rem;
}[data-page="pages/workbench/workbench"] .qa-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0.16rem 0;
}[data-page="pages/workbench/workbench"] .qa-icon {
  width: 0.88rem;
  height: 0.88rem;
  border-radius: 0.24rem;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 0.12rem;
}[data-page="pages/workbench/workbench"] .qa-icon .iconfont {
  font-size: 0.4rem;
}[data-page="pages/workbench/workbench"] .qa-label {
  font-size: 0.22rem;
  color: var(--gray-700);
}/* 最近动态 */
[data-page="pages/workbench/workbench"] .recent-card {
  margin-top: 0.08rem;
  padding: 0.16rem 0.32rem;
}[data-page="pages/workbench/workbench"] .recent-item {
  display: flex;
  align-items: center;
  padding: 0.24rem 0;
  border-bottom: 0.01rem solid var(--gray-100);
}[data-page="pages/workbench/workbench"] .recent-item:last-child {
  border-bottom: none;
}[data-page="pages/workbench/workbench"] .ri-icon {
  width: 0.72rem;
  height: 0.72rem;
  border-radius: 0.16rem;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-right: 0.24rem;
  flex-shrink: 0;
}[data-page="pages/workbench/workbench"] .ri-icon.ri-pay {
  background: var(--success-bg);
}[data-page="pages/workbench/workbench"] .ri-icon.ri-pay .iconfont {
  color: var(--success);
}[data-page="pages/workbench/workbench"] .ri-icon.ri-alert {
  background: var(--warning-bg);
}[data-page="pages/workbench/workbench"] .ri-icon.ri-alert .iconfont {
  color: var(--warning);
}[data-page="pages/workbench/workbench"] .ri-icon .iconfont {
  font-size: 0.32rem;
  font-weight: 700;
}[data-page="pages/workbench/workbench"] .ri-content {
  flex: 1;
  min-width: 0;
}[data-page="pages/workbench/workbench"] .ri-title {
  font-size: 0.28rem;
  color: var(--gray-800);
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}[data-page="pages/workbench/workbench"] .ri-sub {
  font-size: 0.24rem;
  color: var(--gray-500);
  margin-top: 0.04rem;
}[data-page="pages/workbench/workbench"] .ri-amount {
  font-size: 0.28rem;
  font-weight: 600;
  font-family: "DIN Alternate", sans-serif;
  flex-shrink: 0;
  margin-left: 0.16rem;
}[data-page="pages/workbench/workbench"] .ri-amount.success { color: var(--success); }[data-page="pages/workbench/workbench"] .ri-amount.danger { color: var(--danger); }


/* ---- manager-h5.wxss (H5 管家端专属) ---- */
/* manager-h5.wxss —— 管家端 H5 专属补充样式
 * 这些类在小程序端没有对应元素（H5 用原生 select/input[type=date]，以及骨架屏、
 * 时间轴内容包裹、详情头部信息等），故不放小程序 wxss，集中在这里，由 build-css.js 追加。
 */

/* 详情页头部信息包裹：dh-top 已是 flex，dh-info 需撑开剩余空间（否则姓名/标签不占位） */
.dh-info { flex: 1; min-width: 0; }

/* 报修详情时间轴：tl-item 是 flex，tl-content 需占剩余空间 */
.tl-content { flex: 1; min-width: 0; }

/* 报修列表：照片张数徽标 */
.rc-imgs { font-size: 0.22rem; color: var(--gray-400); margin-left: 0.08rem; }

/* H5 原生 select（替换小程序 picker） */
.fu-select {
  width: 100%; box-sizing: border-box;
  font-size: 0.28rem; color: var(--gray-800);
  height: 0.64rem; line-height: 0.64rem;
  border: 0.01rem solid var(--gray-300, #e5e7eb); border-radius: 0.12rem;
  background: #fff; padding: 0 0.16rem;
}
.fu-select.is-empty { color: #999; }

/* H5 原生 date 输入 */
.fu-date-input {
  width: 100%; box-sizing: border-box;
  font-size: 0.28rem; color: var(--gray-800);
  height: 0.64rem; line-height: 0.64rem;
  border: 0.01rem solid var(--gray-300, #e5e7eb); border-radius: 0.12rem;
  background: #fff; padding: 0 0.16rem;
}
/* 日期选择行：清除按钮（原生日期控件误选当天时可一键清除） */
.fu-date-wrap { display: flex; align-items: center; gap: 0.16rem; width: 100%; }
.fu-date-wrap .fu-date-input { flex: 1; min-width: 0; }
.fu-date-clear {
  flex-shrink: 0; font-size: 0.26rem; color: var(--gray-500, #6b7280);
  padding: 0.08rem 0.2rem; border: 0.01rem solid var(--gray-300, #e5e7eb); border-radius: 0.12rem;
  background: #fff;
}
/* 时间线每条记录的“编辑”入口 */
.tl-actions { margin-top: 0.12rem; }
.tl-edit {
  display: inline-block; font-size: 0.24rem; color: var(--primary, #2563eb);
  padding: 0.04rem 0.24rem; border: 0.01rem solid var(--primary, #2563eb); border-radius: 0.24rem;
  background: #fff;
}

/* 工作台：加载骨架屏（statsLoading 时显示） */
.sk {
  background: linear-gradient(90deg, #eee 25%, #f5f5f5 37%, #eee 63%);
  background-size: 400% 100%;
  animation: sk-shine 1.2s ease-in-out infinite;
  border-radius: 0.08rem;
}
.sk-val { height: 0.6rem; }
.sk-line { height: 0.32rem; margin: 0.12rem 0; }
.sk-row { display: flex; align-items: center; gap: 0.16rem; margin-bottom: 0.2rem; }
.sk-ico { width: 0.8rem; height: 0.8rem; border-radius: 50%; flex-shrink: 0; }
.sk-main { flex: 1; }
@keyframes sk-shine { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }


/* ---- owner (pages/owner, ow- prefixed) ---- */
.ow-card {
  background: #fff;
  border-radius: var(--radius);
  margin: 24rpx 32rpx;
  padding: 32rpx;
  box-shadow: var(--shadow);
}
.ow-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 120rpx 0;
  color: var(--gray-400);
}
.ow-empty-text {
  font-size: 26rpx;
}
.ow-section-title {
  font-size: 30rpx;
  font-weight: 600;
  color: var(--gray-800);
  margin: 32rpx 32rpx 16rpx;
  display: flex;
  align-items: center;
}

/* \pages\owner\bills\bills.wxss */
/* pages/owner/bills/bills.ow-wxss */
.ow-bills-page { padding: 0.24rem 0.3rem 0.4rem; }
.ow-grp { margin-bottom: 0.24rem; }
.ow-grp-head {
  display: flex; justify-content: space-between; align-items: center;
  background: #EBF4FF; color: #2B6CB0; font-weight: 600; font-size: 0.28rem;
  padding: 0.16rem 0.24rem; border-radius: 0.12rem; margin-bottom: 0.12rem;
}
.ow-grp-sub { color: #E53E3E; }
.ow-d-card { background: #fff; border-radius: 0.16rem; padding: 0.08rem 0.24rem; box-shadow: 0 0.04rem 0.12rem rgba(15,23,42,.05); }
.ow-bill-line { display: flex; justify-content: space-between; padding: 0.24rem 0; border-bottom: 0.01rem solid #f0f2f5; }
.ow-bill-line:last-child { border-bottom: none; }
.ow-bill-fee { font-size: 0.28rem; color: #374151; }
.ow-bill-amt { font-size: 0.28rem; color: #E53E3E; font-weight: 600; }
.ow-empty { text-align: center; color: #9aa3b2; padding: 1.2rem 0; }
.ow-loading { text-align: center; padding: 2rem 0; color: #999; }

/* H5 二级页自建返回头部（小程序用原生导航栏，此处供 H5 经 ow- 化复用） */
.ow-page-bar { background: linear-gradient(135deg,#2B6CB0,#3182CE); color:#fff; padding: 0.9rem 0.3rem 0.24rem; display:flex; align-items:center; font-size:0.34rem; font-weight:600; }
.ow-page-back { font-size:0.48rem; margin-right:0.14rem; line-height:1; }


/* \pages\owner\home\home.wxss */
/* pages/owner/home/home.ow-wxss —— 列表式首页（对齐管家端现代化视觉） */
.ow-home { background: #F5F6FA; min-height: 100vh; }
.ow-hero {
  background: linear-gradient(135deg, #2B6CB0 0%, #3182CE 60%, #4299E1 100%);
  padding: 1rem 0.4rem 1.2rem;
}
.ow-hero-top { display: flex; align-items: center; }
.ow-avatar {
  width: 0.96rem; height: 0.96rem; border-radius: 50%;
  background: rgba(255,255,255,.25); border: 0.03rem solid rgba(255,255,255,.85);
  display: flex; align-items: center; justify-content: center;
  font-size: 0.4rem; color: #fff; font-weight: 700;
}
.ow-hero-info { margin-left: 0.24rem; }
.ow-hello { font-size: 0.36rem; font-weight: 600; color: #fff; }
.ow-sub { font-size: 0.24rem; color: rgba(255,255,255,.85); margin-top: 0.1rem; display: flex; align-items: center; }
.ow-badge {
  background: rgba(255,255,255,.22); border: 0.01rem solid rgba(255,255,255,.5);
  padding: 0.02rem 0.14rem; border-radius: 9.99rem; font-size: 0.2rem; margin-left: 0.12rem;
}

.ow-body { margin-top: -0.8rem; padding: 0 0.3rem 0.4rem; }

/* 待缴主卡 */
.ow-pay-card {
  background: #fff; border-radius: 0.2rem; padding: 0.36rem;
  box-shadow: 0 0.08rem 0.24rem rgba(43,108,176,.16); margin-bottom: 0.24rem;
}
.ow-pay-label { font-size: 0.24rem; color: #8a94a6; }
.ow-pay-row { display: flex; align-items: flex-end; justify-content: space-between; margin-top: 0.1rem; }
.ow-amount { font-size: 0.52rem; font-weight: 700; color: #E53E3E; line-height: 1; letter-spacing: -0.01rem; }
.ow-pay-detail-entry { font-size: 0.24rem; color: #3182CE; font-weight: 600; }
.ow-pay-sub {
  display: flex; justify-content: space-between; margin-top: 0.24rem;
  padding-top: 0.24rem; border-top: 0.01rem solid #f0f2f5;
}
.ow-pay-sub .ow-item { font-size: 0.24rem; color: #6b7280; }
.ow-pay-sub .ow-item b { display: block; color: #1f2937; font-weight: 600; font-size: 0.28rem; margin-top: 0.06rem; }

/* 功能列表卡 */
.ow-menu-card {
  background: #fff; border-radius: 0.2rem; overflow: hidden;
  box-shadow: 0 0.06rem 0.18rem rgba(15,23,42,.06);
}
.ow-menu-item { display: flex; align-items: center; padding: 0.3rem 0.32rem; position: relative; }
.ow-menu-item::after {
  content: ''; position: absolute; left: 1.16rem; right: 0; bottom: 0;
  height: 0.01rem; background: #f0f2f5;
}
.ow-menu-item:last-child::after { display: none; }
.ow-m-icon {
  width: 0.72rem; height: 0.72rem; border-radius: 0.2rem; margin-right: 0.24rem;
  display: flex; align-items: center; justify-content: center; font-size: 0.38rem; flex-shrink: 0;
}
.ow-icon-blue { background: #EBF4FF; }
.ow-icon-red { background: #FFF0F0; }
.ow-icon-orange { background: #FFFAF0; }
.ow-icon-green { background: #F0FFF4; }
.ow-m-icon svg { width: 58%; height: 58%; }
.ow-m-text { flex: 1; }
.ow-m-title { font-size: 0.32rem; color: #1f2937; font-weight: 600; }
.ow-m-sub { font-size: 0.24rem; color: #9aa3b2; margin-top: 0.06rem; }
.ow-m-arrow { color: #c4ccd8; font-size: 0.34rem; }
.ow-dot { width: 0.16rem; height: 0.16rem; border-radius: 50%; background: #E53E3E; margin-right: 0.14rem; }

.ow-logout {
  margin-top: 0.4rem; text-align: center; color: #E53E3E; font-size: 0.3rem; font-weight: 600;
  background: #fff; border-radius: 0.14rem; padding: 0.28rem; box-shadow: 0 0.04rem 0.12rem rgba(15,23,42,.05);
}

.ow-loading { text-align: center; padding: 2rem 0; color: #999; }


/* \pages\owner\login\login.wxss */
.ow-login-wrap {
  min-height: 100vh;
  background: linear-gradient(180deg, #2B6CB0 0%, #EBF2FA 55%);
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-top: 1.6rem;
  box-sizing: border-box;
}
.ow-brand { font-size: 1.2rem; line-height: 1; }
.ow-brand-title { font-size: 0.44rem; font-weight: 700; color: #fff; margin-top: 0.3rem; }
.ow-brand-sub { font-size: 0.26rem; color: rgba(255,255,255,0.9); margin-top: 0.16rem; padding: 0 0.6rem; text-align: center; }
.ow-form { width: 6.2rem; margin-top: 0.8rem; background: #fff; border-radius: 0.24rem; padding: 0.4rem 0.36rem; box-sizing: border-box; box-shadow: 0 0.08rem 0.3rem rgba(0,0,0,0.12); }
.ow-field { display: flex; align-items: center; border-bottom: 0.01rem solid #EEE; padding: 0.24rem 0; }
.ow-field .ow-label { width: 1.1rem; font-size: 0.28rem; color: #333; flex-shrink: 0; }
.ow-field .ow-input { flex: 1; font-size: 0.28rem; }
.ow-code-btn { font-size: 0.24rem; color: #2B6CB0; flex-shrink: 0; padding-left: 0.16rem; }
.ow-code-btn.ow-disabled { color: #BBB; }
.ow-login-btn { margin-top: 0.4rem; width: 100%; height: 0.88rem; line-height: 0.88rem; background: #2B6CB0; color: #fff; font-size: 0.32rem; font-weight: 600; border-radius: 0.44rem; }
.ow-login-btn::after { border: none; }
.ow-row { margin-top: 0.24rem; text-align: center; }
.ow-link { font-size: 0.26rem; color: #2B6CB0; }
.ow-hint { margin-top: 0.12rem; font-size: 0.24rem; color: #999; text-align: center; }
.ow-wx-btn { margin-top: 0.3rem; width: 100%; height: 0.8rem; line-height: 0.8rem; background: #07C160; color: #fff; font-size: 0.3rem; border-radius: 0.4rem; text-align: center; }
.ow-tip { margin-top: 0.4rem; font-size: 0.26rem; color: #E53E3E; padding: 0 0.8rem; text-align: center; }


/* \pages\owner\pwd\pwd.wxss */
/* pages/owner/pwd/pwd.ow-wxss */
.ow-pwd-page { padding: 0.3rem; }
.ow-tip { font-size: 0.24rem; color: #9aa3b2; margin-bottom: 0.2rem; padding: 0 0.08rem; }
.ow-card { background: #fff; border-radius: 0.16rem; padding: 0.1rem 0.3rem; box-shadow: 0 0.04rem 0.12rem rgba(15,23,42,.05); }
.ow-field { display: flex; align-items: center; padding: 0.28rem 0; border-bottom: 0.01rem solid #f0f2f5; }
.ow-field:last-child { border-bottom: none; }
.ow-label { width: 2rem; font-size: 0.3rem; color: #333; }
.ow-input { flex: 1; font-size: 0.3rem; color: #1f2937; }
.ow-submit-btn {
  background: #2B6CB0; color: #fff; text-align: center; height: 0.92rem; line-height: 0.92rem;
  border-radius: 0.46rem; font-size: 0.32rem; font-weight: 600; margin-top: 0.5rem;
}
.ow-submit-btn.ow-disabled { opacity: .6; }

/* H5 二级页自建返回头部 */
.ow-page-bar { background: linear-gradient(135deg,#2B6CB0,#3182CE); color:#fff; padding: 0.9rem 0.3rem 0.24rem; display:flex; align-items:center; font-size:0.34rem; font-weight:600; }
.ow-page-back { font-size:0.48rem; margin-right:0.14rem; line-height:1; }


/* \pages\owner\repair\detail.wxss */
/* pages/owner/repair/detail.ow-wxss */


.ow-detail-page { padding: 0.24rem; padding-bottom: 0.6rem; }

.ow-card {
  background: #fff;
  border-radius: 0.16rem;
  padding: 0.28rem;
  margin-bottom: 0.24rem;
  box-shadow: 0 0.02rem 0.08rem rgba(0, 0, 0, 0.04);
}

.ow-empty-state { padding: 1.2rem 0; text-align: center; }
.ow-empty-text { color: #999; font-size: 0.28rem; }

.ow-d-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.2rem;
}
.ow-d-no { font-size: 0.3rem; font-weight: 600; color: #333; }
.ow-d-status {
  font-size: 0.24rem;
  padding: 0.06rem 0.18rem;
  border-radius: 9.99rem;
  color: #fa8c16;
  background: #fff7e6;
}
.ow-d-status.ow-doing { color: #1890ff; background: #e6f7ff; }
.ow-d-status.ow-done { color: #52c41a; background: #f6ffed; }

.ow-d-row {
  display: flex;
  margin-bottom: 0.14rem;
  font-size: 0.28rem;
  color: #333;
  line-height: 1.5;
}
.ow-d-label { color: #999; width: 1.2rem; flex-shrink: 0; }

.ow-field-label {
  font-size: 0.28rem;
  color: #333;
  font-weight: 600;
  margin-bottom: 0.18rem;
}

.ow-img-grid { display: flex; flex-wrap: wrap; gap: 0.16rem; }
.ow-img-grid .ow-img { width: 2rem; height: 2rem; border-radius: 0.12rem; }

/* 时间轴 */
.ow-timeline { padding-left: 0.08rem; }
.ow-tl-item {
  position: relative;
  padding: 0 0 0.32rem 0.4rem;
  border-left: 0.02rem solid #e5e6eb;
  margin-left: 0.1rem;
}
.ow-tl-item:last-child { padding-bottom: 0.04rem; border-left-color: transparent; }
.ow-tl-dot {
  position: absolute;
  left: -0.11rem;
  top: 0.04rem;
  width: 0.18rem;
  height: 0.18rem;
  border-radius: 50%;
  background: #d9dbe3;
}
.ow-tl-item.ow-done .ow-tl-dot { background: #1890ff; }
.ow-tl-title { font-size: 0.28rem; color: #999; }
.ow-tl-item.ow-done .ow-tl-title { color: #333; }
.ow-tl-time { font-size: 0.24rem; color: #bbb; margin-top: 0.04rem; }


/* \pages\owner\repair\list.wxss */
.ow-repair-page { padding: 0.24rem 0.24rem 1.6rem; }
.ow-repair-card {
  background: #fff;
  border-radius: 0.2rem;
  padding: 0.28rem;
  margin-bottom: 0.24rem;
  box-shadow: 0 0.04rem 0.16rem rgba(0,0,0,0.05);
}
.ow-rc-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.16rem; }
.ow-rc-no { font-size: 0.3rem; font-weight: 700; color: #1a1a1a; }
.ow-rc-status { font-size: 0.24rem; padding: 0.04rem 0.16rem; border-radius: 0.2rem; }
.ow-rc-status.ow-pending { background: #FEF3C7; color: #B7791F; }
.ow-rc-status.ow-doing { background: #EBF4FF; color: #2B6CB0; }
.ow-rc-status.ow-done { background: #F0FFF4; color: #38A169; }
.ow-rc-body { font-size: 0.27rem; color: #555; }
.ow-rc-row { padding: 0.08rem 0; }
.ow-tag { background: #EDF2F7; color: #4A5568; font-size: 0.24rem; padding: 0.04rem 0.14rem; border-radius: 0.08rem; margin-right: 0.14rem; }
.ow-rc-room { color: #333; font-weight: 600; }
.ow-rc-foot { display: flex; justify-content: space-between; color: #999; font-size: 0.24rem; margin-top: 0.08rem; }
.ow-rc-imgs { color: #2B6CB0; }

.ow-empty-state { text-align: center; padding: 1.2rem 0; color: #999; }
.ow-empty-text { font-size: 0.28rem; }
.ow-empty-btn { margin-top: 0.24rem; color: #2B6CB0; font-size: 0.28rem; }

.ow-fab {
  position: fixed;
  /* 对齐到 750 列右缘（桌面预览与手机统一），并抬高以避开底部 tabbar */
  right: calc(50% - 3.75rem + 0.4rem);
  bottom: calc(var(--tabbar-h, 0rem) + 0.6rem);
  background: #2B6CB0;
  color: #fff;
  height: 0.92rem;
  line-height: 0.92rem;
  padding: 0 0.44rem;
  border-radius: 0.46rem;
  font-size: 0.3rem;
  font-weight: 600;
  box-shadow: 0 0.08rem 0.24rem rgba(43,108,176,0.4);
  z-index: 60;
}


/* \pages\owner\repair\submit.wxss */
.ow-submit-page { padding: 0.24rem 0.24rem calc(0.6rem + env(safe-area-inset-bottom)); }
.ow-card { background: #fff; border-radius: 0.2rem; padding: 0.28rem; margin-bottom: 0.24rem; }
.ow-field-label { font-size: 0.27rem; color: #666; margin: 0.08rem 0 0.16rem; }
.ow-field-label:first-child { margin-top: 0; }

.ow-seg { display: flex; background: #EDF2F7; border-radius: 0.12rem; padding: 0.06rem; margin-bottom: 0.08rem; }
.ow-seg-item { flex: 1; text-align: center; height: 0.72rem; line-height: 0.72rem; font-size: 0.28rem; color: #555; border-radius: 0.1rem; }
.ow-seg-item.ow-active { background: #2B6CB0; color: #fff; font-weight: 600; }

.ow-picker-field {
  display: flex; justify-content: space-between; align-items: center;
  background: #F7FAFC; border-radius: 0.12rem; padding: 0.22rem 0.24rem; margin-bottom: 0.16rem;
  font-size: 0.28rem; color: #333;
}
.ow-picker-field:last-child { margin-bottom: 0; }
.ow-placeholder { color: #aaa; }
.ow-arrow { color: #bbb; font-size: 0.36rem; }

.ow-textarea {
  width: 100%; box-sizing: border-box; min-height: 1.6rem;
  background: #F7FAFC; border-radius: 0.12rem; padding: 0.2rem; font-size: 0.28rem;
}

.ow-img-grid { display: flex; flex-wrap: wrap; }
.ow-img-item, .ow-img-add {
  width: 1.6rem; height: 1.6rem; margin: 0 0.16rem 0.16rem 0; border-radius: 0.12rem; position: relative;
}
.ow-img { width: 1.6rem; height: 1.6rem; border-radius: 0.12rem; }
.ow-img-del {
  position: absolute; top: -0.12rem; right: -0.12rem; width: 0.4rem; height: 0.4rem;
  background: rgba(0,0,0,0.6); color: #fff; border-radius: 50%; text-align: center; line-height: 0.4rem; font-size: 0.24rem;
}
.ow-img-add {
  border: 0.02rem dashed #CBD5E0; color: #CBD5E0; font-size: 0.64rem; text-align: center; line-height: 1.56rem;
}

.ow-input {
  background: #F7FAFC; border-radius: 0.12rem; padding: 0.22rem 0.24rem; font-size: 0.28rem; margin-bottom: 0.16rem;
}
.ow-input:last-child { margin-bottom: 0; }

.ow-submit-btn {
  margin: 0.16rem 0.16rem 0;
  background: #2B6CB0; color: #fff; text-align: center; height: 0.92rem; line-height: 0.92rem;
  border-radius: 0.46rem; font-size: 0.32rem; font-weight: 600;
  box-shadow: 0 0.08rem 0.24rem rgba(43,108,176,0.4);
}
.ow-submit-btn.ow-disabled { opacity: 0.6; }

.ow-mask { position: fixed; inset: 0; background: rgba(0,0,0,0.45); opacity: 0; visibility: hidden; transition: opacity 0.2s; z-index: 100; }
.ow-mask.ow-show { opacity: 1; visibility: visible; }
.ow-sheet {
  position: fixed; left: 0; right: 0; bottom: 0; background: #fff;
  border-radius: 0.24rem 0.24rem 0 0; transform: translateY(100%); transition: transform 0.25s; z-index: 101;
  max-height: 70vh; display: flex; flex-direction: column;
}
.ow-sheet.ow-show { transform: translateY(0); }
.ow-sheet-head { display: flex; justify-content: space-between; align-items: center; padding: 0.3rem; border-bottom: 0.01rem solid #f0f0f0; }
.ow-sheet-title { font-size: 0.3rem; font-weight: 600; }
.ow-sheet-close { color: #999; font-size: 0.36rem; }
.ow-sheet-body { padding: 0.1rem 0.3rem 0.4rem; }
.ow-sheet-item { padding: 0.28rem 0; border-bottom: 0.01rem solid #f0f0f0; font-size: 0.29rem; display: flex; justify-content: space-between; align-items: center; }
.ow-sheet-item.ow-active { color: #2B6CB0; font-weight: 600; }
.ow-sheet-sub { font-size: 0.24rem; color: #999; }


/* \pages\owner\rooms\rooms.wxss */
/* pages/owner/rooms/rooms.ow-wxss */
.ow-rooms-page { padding: 0.24rem 0.3rem 0.4rem; }
.ow-d-card { background: #fff; border-radius: 0.16rem; padding: 0.3rem 0.24rem; margin-bottom: 0.16rem; box-shadow: 0 0.04rem 0.12rem rgba(15,23,42,.05); }
.ow-room-no { font-size: 0.32rem; font-weight: 600; color: #1f2937; }
.ow-room-sub { font-size: 0.26rem; color: #9aa3b2; margin-top: 0.08rem; }
.ow-empty { text-align: center; color: #9aa3b2; padding: 1.2rem 0; }
.ow-loading { text-align: center; padding: 2rem 0; color: #999; }

/* H5 二级页自建返回头部 */
.ow-page-bar { background: linear-gradient(135deg,#2B6CB0,#3182CE); color:#fff; padding: 0.9rem 0.3rem 0.24rem; display:flex; align-items:center; font-size:0.34rem; font-weight:600; }
.ow-page-back { font-size:0.48rem; margin-right:0.14rem; line-height:1; }


/* ---- owner-h5.wxss (H5 业主端专属) ---- */
/* ============================================================
 * 业主端 H5 专属样式
 * 仅放与管家端同名类会冲突的样式（此处是详情页时间轴，用 od- 前缀隔离）。
 * 其余业主端样式由 build-css.js 从 miniprogram/pages/owner/*.wxss 自动转换并入 css/all.css。
 * 本文件用 rpx 书写，build-css.js 会统一转 rem。
 * ============================================================ */

/* 业主报修详情时间轴（od- 前缀，避免与管家端 .tl-* 冲突） */
.od-timeline { padding-left: 0.08rem; }
.od-tl-item {
  position: relative;
  padding: 0 0 0.32rem 0.4rem;
  border-left: 0.02rem solid #e5e6eb;
  margin-left: 0.1rem;
}
.od-tl-item:last-child { padding-bottom: 0.04rem; border-left-color: transparent; }
.od-tl-dot {
  position: absolute; left: -0.11rem; top: 0.04rem;
  width: 0.18rem; height: 0.18rem; border-radius: 50%; background: #d9dbe3;
}
.od-tl-item.done .od-tl-dot { background: #1890ff; }
.od-tl-head { display: flex; justify-content: space-between; align-items: baseline; }
.od-tl-label { font-size: 0.28rem; color: #999; }
.od-tl-item.done .od-tl-label { color: #333; }
.od-tl-time { font-size: 0.24rem; color: #bbb; margin-top: 0.04rem; }
.od-tl-time.pending { color: #bbb; }

/* 业主端「新建报修」悬浮按钮（H5 模板用 ow-fab）：对齐 750 列右缘 + 避让底部 tabbar */
.ow-fab {
  position: fixed;
  right: calc(50% - 3.75rem + 0.4rem);
  bottom: calc(var(--tabbar-h, 0rem) + 0.6rem);
  background: #2B6CB0;
  color: #fff;
  height: 0.92rem;
  line-height: 0.92rem;
  padding: 0 0.44rem;
  border-radius: 0.46rem;
  font-size: 0.3rem;
  font-weight: 600;
  box-shadow: 0 0.08rem 0.24rem rgba(43,108,176,0.4);
  z-index: 60;
}


