/* 预约 H5 · 样式对齐 idrakyAppointment 小程序（rpx → --rpx） */
:root {
  --rpx: calc(100vw / 750);
  --green: #07c160;
  --text: #1a1a1a;
  --muted: #808080;
  --danger: #e64340;
  --page-max: 480px;
}
@media (min-width: 480px) {
  :root { --rpx: calc(var(--page-max) / 750); }
}

* { box-sizing: border-box; }
html, body {
  margin: 0;
  padding: 0;
  height: 100%;
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue",
    "Microsoft YaHei", sans-serif;
  background: #f0f0f0;
  color: var(--text);
  -webkit-tap-highlight-color: transparent;
}
button, input, select {
  font: inherit;
  appearance: none;
  -webkit-appearance: none;
  border: 0;
  background: none;
}
button { cursor: pointer; }
a { color: inherit; text-decoration: none; }

.app-shell {
  max-width: var(--page-max);
  margin: 0 auto;
  min-height: 100%;
  background: #fff;
  position: relative;
  padding-bottom: calc(110 * var(--rpx) + env(safe-area-inset-bottom));
}
.app-shell.is-notab { padding-bottom: env(safe-area-inset-bottom); }
.boot {
  padding: calc(120 * var(--rpx));
  text-align: center;
  color: #999;
  font-size: calc(28 * var(--rpx));
}

/* ---------- Tab bar ---------- */
.tab-bar {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: var(--page-max);
  bottom: 0;
  z-index: 999;
  display: flex;
  align-items: stretch;
  height: calc(110 * var(--rpx) + env(safe-area-inset-bottom));
  padding-bottom: env(safe-area-inset-bottom);
  background: #fff;
  border-top: 1px solid #e8e8e8;
}
.tab-item {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(34 * var(--rpx));
  font-weight: 600;
  color: #808080;
  line-height: 1.2;
}
.tab-item.is-on {
  color: var(--green);
  font-weight: 700;
}

/* ---------- Shared ---------- */
.page { min-height: 100%; background: #fff; }
.page-flex {
  height: 100vh;
  max-height: 100dvh;
  display: flex;
  flex-direction: column;
  background: #fff;
}
.empty, .v2-empty {
  padding: calc(80 * var(--rpx)) calc(40 * var(--rpx));
  text-align: center;
  font-size: calc(28 * var(--rpx));
  color: #999;
}
.rel {
  margin-left: calc(10 * var(--rpx));
  font-size: calc(20 * var(--rpx));
  color: #808080;
  border: 1px solid #e0e0e0;
  border-radius: calc(6 * var(--rpx));
  padding: calc(2 * var(--rpx)) calc(8 * var(--rpx));
}

/* ---------- Toast / Modal ---------- */
.yy-toast {
  position: fixed;
  left: 50%;
  top: 45%;
  transform: translate(-50%, -50%);
  z-index: 3000;
  max-width: 70%;
  padding: calc(20 * var(--rpx)) calc(32 * var(--rpx));
  background: rgba(0, 0, 0, 0.75);
  color: #fff;
  border-radius: calc(12 * var(--rpx));
  font-size: calc(26 * var(--rpx));
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s;
}
.yy-toast.is-show { opacity: 1; }
.yy-modal-mask {
  position: fixed; inset: 0; z-index: 2500;
  background: rgba(0, 0, 0, 0.45);
  display: flex; align-items: center; justify-content: center;
  padding: calc(40 * var(--rpx));
}
.yy-modal {
  width: 100%; max-width: 320px;
  background: #fff;
  border-radius: calc(16 * var(--rpx));
  overflow: hidden;
}
.yy-modal-title {
  padding: calc(36 * var(--rpx)) calc(32 * var(--rpx)) calc(12 * var(--rpx));
  text-align: center;
  font-size: calc(32 * var(--rpx));
  font-weight: 700;
}
.yy-modal-body {
  padding: calc(8 * var(--rpx)) calc(32 * var(--rpx)) calc(28 * var(--rpx));
  text-align: center;
  font-size: calc(26 * var(--rpx));
  color: #666;
  line-height: 1.5;
}
.yy-modal-input {
  width: 100%;
  border: 1px solid #e8e8e8;
  border-radius: calc(8 * var(--rpx));
  padding: calc(16 * var(--rpx));
  font-size: calc(28 * var(--rpx));
  text-align: left;
}
.yy-modal-foot {
  display: flex;
  border-top: 1px solid #f0f0f0;
}
.yy-modal-btn {
  flex: 1;
  padding: calc(28 * var(--rpx));
  font-size: calc(30 * var(--rpx));
  color: #666;
}
.yy-modal-btn.is-primary {
  color: var(--green);
  font-weight: 700;
  border-left: 1px solid #f0f0f0;
}

/* ---------- Sheet ---------- */
.mask {
  position: fixed; inset: 0;
  /* 必须高于底栏 .tab-bar(999)，否则保存按钮会被挡住 */
  z-index: 1200;
  background: rgba(0, 0, 0, 0.45);
  display: flex; align-items: flex-end;
  justify-content: center;
}
.mask .sheet {
  width: 100%;
  max-width: var(--page-max);
  max-height: 70vh;
  display: flex; flex-direction: column;
  background: #fff;
  border-radius: calc(24 * var(--rpx)) calc(24 * var(--rpx)) 0 0;
  padding-bottom: env(safe-area-inset-bottom);
  position: relative;
  z-index: 1;
}
.sheet-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(28 * var(--rpx)) calc(32 * var(--rpx));
  border-bottom: 1px solid #f0f0f0;
}
.sheet-title { font-size: calc(31 * var(--rpx)); font-weight: 700; }
.sheet-close { font-size: calc(32 * var(--rpx)); color: #b2b2b2; padding: 0 calc(10 * var(--rpx)); }
.sheet-body { max-height: 50vh; overflow-y: auto; }
.sheet-item {
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(26 * var(--rpx)) calc(32 * var(--rpx));
  border-bottom: 1px solid #f0f0f0;
}
.sheet-item-name { font-size: calc(29 * var(--rpx)); font-weight: 700; }
.sheet-item-sub { margin-top: calc(8 * var(--rpx)); font-size: calc(23 * var(--rpx)); color: #808080; }
.sheet-pick, .sheet-check {
  font-size: calc(25 * var(--rpx)); color: var(--green); font-weight: 600;
  padding: calc(6 * var(--rpx)) calc(18 * var(--rpx));
}
.sheet-pick { border: 1px solid var(--green); border-radius: calc(8 * var(--rpx)); }
.sheet-note {
  padding: calc(18 * var(--rpx)) calc(32 * var(--rpx)) 0;
  font-size: calc(23 * var(--rpx)); color: #999; line-height: 1.5;
}
.sheet-foot { padding: calc(26 * var(--rpx)) calc(32 * var(--rpx)) calc(40 * var(--rpx)); }

/* ---------- Index ---------- */
.top-nav {
  flex-shrink: 0;
  background: #fff;
  border-bottom: 1px solid #f0f0f0;
  padding-top: env(safe-area-inset-top);
}
.top-nav-home {
  overflow: hidden;
  max-height: calc(120 * var(--rpx));
  transition: max-height 0.28s ease, opacity 0.22s ease, border-color 0.22s ease;
}
.top-nav-home.is-hidden {
  max-height: 0;
  opacity: 0;
  border-bottom-color: transparent;
  pointer-events: none;
}
.top-nav-inner {
  display: flex; align-items: center; justify-content: center;
  min-height: calc(88 * var(--rpx));
  padding: 0 calc(28 * var(--rpx));
  box-sizing: border-box;
}
.top-nav-title {
  flex: 1; min-width: 0;
  text-align: center;
  font-size: calc(34 * var(--rpx));
  font-weight: 700; color: #111;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.v2-dept-scroll {
  flex: 1; min-height: 0; overflow-y: auto;
  padding: 0 0 calc(48 * var(--rpx));
  background: #f5f6f8;
}
.v2-banner {
  position: relative;
  width: 100%;
  height: calc(400 * var(--rpx));
  overflow: hidden;
  background: #dfe6ee;
}
.v2-banner-track {
  display: flex;
  height: 100%;
  transition: transform .4s ease;
}
.v2-banner-slide {
  flex: 0 0 100%;
  height: 100%;
}
.v2-banner-img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.v2-banner-fallback {
  width: 100%; height: 100%;
  display: flex; align-items: flex-end;
  padding: calc(28 * var(--rpx));
  background: linear-gradient(145deg, #2f80ed 0%, #07c160 100%);
  color: #fff;
  font-size: calc(32 * var(--rpx));
  font-weight: 700;
}
.v2-banner-dots {
  position: absolute; left: 0; right: 0; bottom: calc(16 * var(--rpx));
  display: flex; justify-content: center; gap: calc(10 * var(--rpx));
}
.v2-banner-dots span {
  width: calc(12 * var(--rpx)); height: calc(12 * var(--rpx));
  border-radius: 50%;
  background: rgba(255,255,255,.45);
}
.v2-banner-dots span.is-on { background: #fff; }
.v2-section-title {
  padding: calc(28 * var(--rpx)) calc(28 * var(--rpx)) calc(16 * var(--rpx));
  font-size: calc(28 * var(--rpx));
  font-weight: 700;
}
.v2-dept-grid {
  display: flex; flex-wrap: wrap;
  padding: 0 calc(16 * var(--rpx));
}
.v2-dept-cell {
  width: 33.33%;
  padding: calc(12 * var(--rpx)) calc(10 * var(--rpx)) calc(24 * var(--rpx));
  display: flex; flex-direction: column; align-items: center;
  cursor: pointer;
}
.v2-dept-icon, .v2-dept-icon-img {
  width: calc(168 * var(--rpx));
  height: calc(168 * var(--rpx));
  min-width: calc(168 * var(--rpx));
  min-height: calc(168 * var(--rpx));
  max-width: calc(168 * var(--rpx));
  max-height: calc(168 * var(--rpx));
  aspect-ratio: 1 / 1;
  flex: 0 0 auto;
  border-radius: calc(45 * var(--rpx));
  margin-bottom: calc(14 * var(--rpx));
  overflow: hidden;
}
.v2-dept-icon {
  display: flex; align-items: center; justify-content: center;
  font-size: calc(102 * var(--rpx));
  font-weight: 700; line-height: 1;
}
.v2-dept-icon-img {
  display: block;
  object-fit: cover;
  object-position: center;
  background: #f0f0f0;
}
.v2-dept-icon.tone-red { background: #ffe8e8; color: #e54d4d; }
.v2-dept-icon.tone-blue { background: #e8f1ff; color: #2f80ed; }
.v2-dept-icon.tone-orange { background: #fff1e6; color: #e67e22; }
.v2-dept-icon.tone-purple { background: #f3e8ff; color: #8b5cf6; }
.v2-dept-icon.tone-teal { background: #e6faf6; color: #0d9488; }
.v2-dept-icon.tone-green { background: #e8f8ef; color: #07c160; }
.v2-dept-icon.tone-pink { background: #ffeaf3; color: #db2777; }
.v2-dept-icon.tone-brown { background: #f3ebe4; color: #a16207; }
.v2-dept-icon.tone-cyan { background: #e6f7fb; color: #0891b2; }
.v2-dept-icon.tone-amber { background: #fff7e0; color: #d97706; }
.v2-dept-icon.tone-gray { background: #f0f0f0; color: #666; }
.v2-dept-name {
  font-size: calc(28 * var(--rpx));
  font-weight: 700;
  text-align: center;
  max-width: 100%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* ---------- Dept ---------- */
.dept-bar {
  flex-shrink: 0;
  padding: calc(20 * var(--rpx)) calc(28 * var(--rpx)) calc(12 * var(--rpx));
  border-bottom: 1px solid #f0f0f0;
}
.dept-name { font-size: calc(32 * var(--rpx)); font-weight: 700; }
.week-bar {
  flex-shrink: 0;
  overflow-x: auto;
  white-space: nowrap;
  padding: calc(16 * var(--rpx)) calc(16 * var(--rpx)) calc(8 * var(--rpx));
  border-bottom: 1px solid #f0f0f0;
  -webkit-overflow-scrolling: touch;
}
.week-item {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: calc(112 * var(--rpx));
  margin-right: calc(12 * var(--rpx));
  padding: calc(14 * var(--rpx)) 0;
  border-radius: calc(12 * var(--rpx));
  border: 1px solid #e8e8e8;
  background: #fafafa;
  cursor: pointer;
}
.week-item.is-active { background: var(--green); border-color: var(--green); }
.week-text { font-size: calc(26 * var(--rpx)); color: #666; }
.day-text { margin-top: calc(6 * var(--rpx)); font-size: calc(28 * var(--rpx)); font-weight: 700; }
.week-item.is-active .week-text,
.week-item.is-active .day-text { color: #fff; }
.patient-bar {
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(18 * var(--rpx)) calc(28 * var(--rpx));
  border-bottom: 1px solid #f0f0f0;
}
.quota-bar {
  flex-shrink: 0;
  padding: calc(10 * var(--rpx)) calc(28 * var(--rpx)) calc(14 * var(--rpx));
  font-size: calc(22 * var(--rpx));
  color: var(--green);
  background: #f7fbf8;
  border-bottom: 1px solid #eef5f0;
}
.patient-label { font-size: calc(27 * var(--rpx)); color: #808080; }
.patient-value {
  display: flex; align-items: center; gap: calc(8 * var(--rpx));
  font-size: calc(28 * var(--rpx));
}
.patient-empty { color: #b2b2b2; }
.pick-btn {
  margin-left: calc(12 * var(--rpx));
  padding: calc(6 * var(--rpx)) calc(20 * var(--rpx));
  font-size: calc(24 * var(--rpx));
  color: var(--green);
  border: 1px solid var(--green);
  border-radius: calc(8 * var(--rpx));
}
.doc-scroll {
  flex: 1; min-height: 0; overflow-y: auto;
  padding: calc(8 * var(--rpx)) 0 calc(40 * var(--rpx));
}
.doc-card {
  margin: calc(16 * var(--rpx)) calc(24 * var(--rpx)) 0;
  border: 1px solid #ebebeb;
  border-radius: calc(12 * var(--rpx));
  overflow: hidden;
  background: #fff;
}
.doc-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(26 * var(--rpx)) calc(24 * var(--rpx));
  cursor: pointer;
}
.doc-info { display: flex; flex-direction: column; gap: calc(8 * var(--rpx)); }
.doc-name { font-size: calc(30 * var(--rpx)); font-weight: 700; }
.doc-title { font-size: calc(24 * var(--rpx)); color: #808080; }
.doc-meta { display: flex; align-items: center; gap: calc(12 * var(--rpx)); }
.doc-remain { font-size: calc(24 * var(--rpx)); color: var(--green); }
.doc-remain.is-none { color: #b2b2b2; }
.doc-arrow { font-size: calc(26 * var(--rpx)); color: #c0c0c0; }
.slot-list {
  border-top: 1px solid #f0f0f0;
  background: #fafafa;
  padding: calc(8 * var(--rpx)) calc(12 * var(--rpx)) calc(16 * var(--rpx));
}
.slot-empty {
  padding: calc(24 * var(--rpx)) calc(8 * var(--rpx));
  font-size: calc(26 * var(--rpx)); color: #999; text-align: center;
}
.slot-grid { display: flex; flex-wrap: wrap; margin: 0 calc(-6 * var(--rpx)); }
.slot-period {
  width: 100%;
  padding: calc(16 * var(--rpx)) calc(8 * var(--rpx)) calc(10 * var(--rpx));
  font-size: calc(24 * var(--rpx));
  color: var(--green); font-weight: 700;
}
.slot-cell {
  width: 33.33%;
  padding: calc(6 * var(--rpx));
  cursor: pointer;
}
.slot-inner {
  background: #fff;
  border: 1px solid var(--green);
  border-radius: calc(10 * var(--rpx));
  padding: calc(16 * var(--rpx)) calc(4 * var(--rpx));
  min-height: calc(88 * var(--rpx));
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
}
.slot-time {
  font-size: calc(22 * var(--rpx));
  font-weight: 700; color: var(--green);
  text-align: center;
}
.slot-state {
  margin-top: calc(6 * var(--rpx));
  font-size: calc(20 * var(--rpx));
  color: var(--green);
}
.slot-cell.is-full .slot-inner {
  border-color: #e5e5e5; background: #f3f3f3; cursor: default;
}
.slot-cell.is-full .slot-time,
.slot-cell.is-full .slot-state { color: #c0c0c0; }
.slot-cell.is-busy .slot-inner { opacity: .55; }

/* ---------- Confirm ---------- */
.confirm-page {
  min-height: 100%;
  padding: calc(60 * var(--rpx)) calc(32 * var(--rpx)) calc(env(safe-area-inset-bottom) + 80 * var(--rpx));
  background: #fff;
}
.ok-icon {
  width: calc(120 * var(--rpx)); height: calc(120 * var(--rpx));
  margin: calc(20 * var(--rpx)) auto 0;
  border-radius: 50%;
  background: rgba(7, 193, 96, 0.08);
  border: 2px solid var(--green);
  color: var(--green);
  display: flex; align-items: center; justify-content: center;
  font-size: calc(60 * var(--rpx)); font-weight: 700;
}
.ok-title {
  margin-top: calc(26 * var(--rpx));
  text-align: center;
  font-size: calc(40 * var(--rpx)); font-weight: 700;
}
.ok-sub {
  margin-top: calc(12 * var(--rpx));
  text-align: center;
  font-size: calc(25 * var(--rpx)); color: #808080;
}
.ok-sub-remind { color: var(--green); }
.order-card {
  margin-top: calc(40 * var(--rpx));
  padding: calc(28 * var(--rpx));
  border-radius: calc(12 * var(--rpx));
  border: 1px solid #ebebeb;
}
.order-head {
  display: flex; align-items: center; justify-content: space-between;
  padding-bottom: calc(16 * var(--rpx));
}
.order-no {
  font-size: calc(28 * var(--rpx)); font-weight: 700;
  word-break: break-all; flex: 1; padding-right: calc(16 * var(--rpx));
}
.order-copy { font-size: calc(24 * var(--rpx)); color: var(--green); flex-shrink: 0; cursor: pointer; }
.qr-wrap {
  padding: calc(16 * var(--rpx)) 0 calc(24 * var(--rpx));
  border-bottom: 1px dashed #e0e0e0;
  display: flex; flex-direction: column; align-items: center;
}
.qr-img {
  background: #fff;
  border-radius: calc(8 * var(--rpx));
  max-width: 62vw;
}
.qr-tip {
  margin-top: calc(12 * var(--rpx));
  font-size: calc(22 * var(--rpx));
  color: var(--green);
}
.order-row {
  display: flex; justify-content: space-between;
  padding: calc(18 * var(--rpx)) 0;
}
.order-label { font-size: calc(26 * var(--rpx)); color: #808080; }
.order-value { font-size: calc(27 * var(--rpx)); font-weight: 700; }
.btn-row { display: flex; gap: calc(20 * var(--rpx)); margin-top: calc(40 * var(--rpx)); }
.btn {
  flex: 1; margin: 0;
  border-radius: calc(10 * var(--rpx));
  font-size: calc(29 * var(--rpx));
  padding: calc(22 * var(--rpx));
  text-align: center;
}
.btn.primary { background: var(--green); color: #fff; }
.btn.ghost {
  background: #fff; color: #666;
  border: 1px solid #d9d9d9;
}

/* ---------- Mine ---------- */
.mine-page {
  padding: 0 calc(28 * var(--rpx)) calc(env(safe-area-inset-bottom) + 60 * var(--rpx));
  background: #fff;
  min-height: 100%;
}
.sub-nav {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: calc(96 * var(--rpx));
  border-bottom: 1px solid #f0f0f0;
  margin: 0 calc(-28 * var(--rpx));
  padding: 0 calc(28 * var(--rpx));
  box-sizing: border-box;
}
.sub-nav-back {
  position: absolute;
  left: calc(28 * var(--rpx));
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: calc(4 * var(--rpx));
  min-width: calc(140 * var(--rpx));
  min-height: calc(76 * var(--rpx));
  padding: calc(12 * var(--rpx)) calc(20 * var(--rpx));
  border-radius: calc(10 * var(--rpx));
  font-size: calc(30 * var(--rpx));
  font-weight: 600;
  color: #1a1a1a;
  line-height: 1;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0.06);
}
.sub-nav-back:active {
  background: #f2f2f2;
}
.sub-nav-back-icon {
  font-size: calc(56 * var(--rpx));
  font-weight: 500;
  line-height: 1;
  margin-top: calc(-4 * var(--rpx));
}
.sub-nav-back-text {
  font-size: calc(30 * var(--rpx));
  font-weight: 600;
}
.sub-nav-title {
  max-width: 60%;
  text-align: center;
  font-size: calc(34 * var(--rpx));
  font-weight: 700;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tabs {
  display: flex; gap: calc(48 * var(--rpx));
  margin-bottom: calc(8 * var(--rpx));
  border-bottom: 1px solid #f0f0f0;
}
.tab {
  padding: calc(24 * var(--rpx)) calc(4 * var(--rpx));
  position: relative;
  font-size: calc(28 * var(--rpx)); color: #808080;
  cursor: pointer;
}
.tab.is-active { color: #1a1a1a; font-weight: 700; }
.tab.is-active::after {
  content: '';
  position: absolute; left: 50%; bottom: 0;
  width: calc(40 * var(--rpx)); height: calc(6 * var(--rpx));
  margin-left: calc(-20 * var(--rpx));
  border-radius: calc(3 * var(--rpx));
  background: var(--green);
}
.empty-block { padding: calc(120 * var(--rpx)) 0; text-align: center; }
.empty-text { font-size: calc(27 * var(--rpx)); color: #b2b2b2; }
.empty-btn {
  margin: calc(30 * var(--rpx)) auto 0;
  width: calc(260 * var(--rpx));
  background: var(--green); color: #fff;
  border-radius: calc(10 * var(--rpx));
  font-size: calc(28 * var(--rpx));
  padding: calc(18 * var(--rpx));
}
.rec-card {
  padding: calc(26 * var(--rpx)) calc(4 * var(--rpx));
  border-bottom: 1px solid #ebebeb;
  cursor: pointer;
}
.rec-top { display: flex; align-items: center; justify-content: space-between; }
.rec-no {
  font-size: calc(36 * var(--rpx));
  font-weight: 700; letter-spacing: 1px;
}
.rec-dept { margin-top: calc(12 * var(--rpx)); font-size: calc(28 * var(--rpx)); font-weight: 600; }
.rec-status { font-size: calc(24 * var(--rpx)); flex-shrink: 0; margin-left: calc(16 * var(--rpx)); }
.rec-status.booked { color: var(--green); }
.rec-status.expired { color: #d48806; }
.rec-status.canceled { color: #b2b2b2; }
.rec-doc { margin-top: calc(10 * var(--rpx)); font-size: calc(26 * var(--rpx)); color: #808080; }
.rec-row { margin-top: calc(10 * var(--rpx)); }
.rec-time { font-size: calc(26 * var(--rpx)); color: #808080; }
.rec-foot {
  margin-top: calc(18 * var(--rpx));
  display: flex; align-items: center; justify-content: space-between;
}
.rec-patient { font-size: calc(25 * var(--rpx)); color: #808080; }
.rec-cancel {
  font-size: calc(24 * var(--rpx)); color: var(--danger);
  border: 1px solid rgba(230, 67, 64, 0.4);
  border-radius: calc(8 * var(--rpx));
  padding: calc(8 * var(--rpx)) calc(20 * var(--rpx));
}

/* ---------- Detail ---------- */
.detail-page {
  padding: calc(24 * var(--rpx)) calc(28 * var(--rpx)) calc(env(safe-area-inset-bottom) + 60 * var(--rpx));
  background: #fff; min-height: 100%;
}
.status-bar { padding: calc(8 * var(--rpx)) calc(4 * var(--rpx)) calc(28 * var(--rpx)); }
.status-text { font-size: calc(36 * var(--rpx)); font-weight: 700; }
.status-text.booked { color: var(--green); }
.status-text.expired { color: #d48806; }
.status-text.canceled { color: #b2b2b2; }
.status-sub { margin-top: calc(10 * var(--rpx)); font-size: calc(25 * var(--rpx)); color: #808080; }
.detail-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(26 * var(--rpx)) calc(4 * var(--rpx));
  border-bottom: 1px solid #f5f5f5;
}
.detail-label { font-size: calc(26 * var(--rpx)); color: #808080; flex-shrink: 0; }
.detail-value { font-size: calc(27 * var(--rpx)); font-weight: 700; text-align: right; }
.value-row { display: flex; align-items: center; gap: calc(16 * var(--rpx)); max-width: 70%; }
.copy { font-size: calc(23 * var(--rpx)); color: var(--green); cursor: pointer; }
.cancel-btn {
  margin-top: calc(48 * var(--rpx));
  width: 100%;
  background: #fff; color: var(--danger);
  border: 1px solid rgba(230, 67, 64, 0.4);
  border-radius: calc(10 * var(--rpx));
  font-size: calc(29 * var(--rpx));
  padding: calc(22 * var(--rpx));
}

/* ---------- Patient ---------- */
.patient-page {
  padding: calc(24 * var(--rpx)) calc(28 * var(--rpx)) calc(env(safe-area-inset-bottom) + 80 * var(--rpx));
  background: #fff; min-height: 100%;
}
.empty-tip {
  font-size: calc(26 * var(--rpx)); color: #b2b2b2;
  padding: calc(60 * var(--rpx)) 0; text-align: center;
}
.p-card {
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(28 * var(--rpx)) calc(4 * var(--rpx));
  border-bottom: 1px solid #ebebeb;
}
.p-main { flex: 1; min-width: 0; padding-right: calc(24 * var(--rpx)); }
.p-name { font-size: calc(30 * var(--rpx)); font-weight: 700; }
.p-sub { margin-top: calc(8 * var(--rpx)); font-size: calc(24 * var(--rpx)); color: #808080; }
.p-edit {
  flex-shrink: 0;
  font-size: calc(26 * var(--rpx));
  color: var(--green); font-weight: 600;
  padding: calc(16 * var(--rpx)) calc(22 * var(--rpx));
  background: rgba(7, 193, 96, 0.08);
  border-radius: calc(8 * var(--rpx));
}
.add-btn {
  margin-top: calc(32 * var(--rpx));
  width: 100%;
  background: #fff; color: var(--green);
  border: 1px solid var(--green);
  border-radius: calc(10 * var(--rpx));
  font-size: calc(29 * var(--rpx));
  padding: calc(22 * var(--rpx));
}
.form { padding: calc(12 * var(--rpx)) calc(32 * var(--rpx)) 0; }
.field {
  display: flex; align-items: center;
  padding: calc(24 * var(--rpx)) 0;
  border-bottom: 1px solid #f0f0f0;
}
.field-label {
  width: calc(160 * var(--rpx));
  font-size: calc(27 * var(--rpx)); color: #808080; flex-shrink: 0;
}
.field-input, .field-select {
  flex: 1;
  font-size: calc(28 * var(--rpx)); color: #1a1a1a;
  min-width: 0;
}
.field-select { background: transparent; }
.save-btn {
  width: 100%;
  background: var(--green); color: #fff;
  border-radius: calc(10 * var(--rpx));
  font-size: calc(30 * var(--rpx));
  padding: calc(22 * var(--rpx));
}
.del-wrap {
  margin-top: calc(48 * var(--rpx));
  padding-top: calc(28 * var(--rpx));
  border-top: 1px solid #f0f0f0;
  text-align: center;
}
.del-link {
  display: inline-block;
  padding: calc(20 * var(--rpx)) calc(40 * var(--rpx));
  font-size: calc(26 * var(--rpx));
  color: var(--danger);
  cursor: pointer;
}

/* ---------- Profile ---------- */
.profile-page {
  min-height: 100%;
  padding: calc(8 * var(--rpx)) 0 calc(env(safe-area-inset-bottom) + 48 * var(--rpx));
  background: #f7f8fa;
}
.user-card {
  display: flex; align-items: center; gap: calc(28 * var(--rpx));
  margin: 0 calc(24 * var(--rpx));
  padding: calc(36 * var(--rpx)) calc(28 * var(--rpx)) calc(40 * var(--rpx));
  background: #fff;
  border-radius: calc(16 * var(--rpx));
}
.avatar-img {
  width: calc(112 * var(--rpx)); height: calc(112 * var(--rpx));
  border-radius: 50%; object-fit: cover; flex-shrink: 0;
}
.user-main { flex: 1; min-width: 0; }
.name-row { display: flex; align-items: baseline; gap: calc(16 * var(--rpx)); }
.user-name {
  font-size: calc(40 * var(--rpx)); font-weight: 700; line-height: 1.2;
  max-width: 70%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.edit-link { font-size: calc(24 * var(--rpx)); color: var(--green); cursor: pointer; }
.phone-row {
  margin-top: calc(18 * var(--rpx));
  display: flex; align-items: center; min-height: calc(48 * var(--rpx));
  cursor: pointer;
}
.phone-text { font-size: calc(26 * var(--rpx)); color: #666; }
.phone-row.is-none .phone-text { color: var(--green); }
.phone-tag {
  margin-left: calc(12 * var(--rpx));
  padding: calc(2 * var(--rpx)) calc(12 * var(--rpx));
  font-size: calc(20 * var(--rpx));
  color: var(--green);
  background: rgba(7, 193, 96, 0.1);
  border-radius: calc(6 * var(--rpx));
}
.phone-arrow {
  margin-left: auto; padding-left: calc(12 * var(--rpx));
  font-size: calc(30 * var(--rpx)); color: #c8c8c8;
}
.stats {
  display: flex; align-items: stretch;
  margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0;
  padding: calc(28 * var(--rpx)) 0;
  background: #fff;
  border-radius: calc(16 * var(--rpx));
}
.stat { flex: 1; text-align: center; padding: calc(8 * var(--rpx)) 0; cursor: pointer; }
.stat-line { width: 1px; background: #eee; align-self: stretch; margin: calc(8 * var(--rpx)) 0; }
.stat-num { font-size: calc(40 * var(--rpx)); font-weight: 700; line-height: 1.2; }
.stat-label { margin-top: calc(10 * var(--rpx)); font-size: calc(22 * var(--rpx)); color: #8a8a8a; }
.menu {
  margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0;
  background: #fff;
  border-radius: calc(16 * var(--rpx));
  overflow: hidden;
}
.cell {
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(32 * var(--rpx)) calc(28 * var(--rpx));
  border-bottom: 1px solid #f0f0f0;
  cursor: pointer;
}
.cell:last-child { border-bottom: none; }
.cell-label { flex: 1; font-size: calc(30 * var(--rpx)); font-weight: 600; }
.cell-arrow { font-size: calc(34 * var(--rpx)); color: #c8c8c8; }
.code-btn {
  flex-shrink: 0;
  background: #fff; color: var(--green);
  border: 1px solid var(--green);
  border-radius: calc(8 * var(--rpx));
  font-size: calc(24 * var(--rpx));
  padding: 0 calc(20 * var(--rpx));
  line-height: 2.2;
}
.code-btn:disabled {
  background: #f7f7f7; color: #b2b2b2; border-color: #e0e0e0;
}
.verify-btn {
  width: 100%;
  background: var(--green); color: #fff;
  border-radius: calc(10 * var(--rpx));
  font-size: calc(30 * var(--rpx));
  padding: calc(22 * var(--rpx));
}
.profile-guest {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: calc(100vh - 110 * var(--rpx) - env(safe-area-inset-bottom));
  padding: calc(40 * var(--rpx)) calc(32 * var(--rpx));
  box-sizing: border-box;
}
.guest-card {
  width: 100%;
  max-width: 360px;
  background: #fff;
  border-radius: calc(16 * var(--rpx));
  padding: calc(48 * var(--rpx)) calc(36 * var(--rpx)) calc(40 * var(--rpx));
  text-align: center;
  box-sizing: border-box;
}
.guest-title {
  font-size: calc(40 * var(--rpx));
  font-weight: 700;
  color: #1a1a1a;
}
.guest-sub {
  margin-top: calc(16 * var(--rpx));
  margin-bottom: calc(40 * var(--rpx));
  font-size: calc(26 * var(--rpx));
  color: #808080;
  line-height: 1.5;
}
.guest-btn {
  display: block;
  width: 100%;
  margin: 0 0 calc(20 * var(--rpx));
  padding: calc(22 * var(--rpx));
  border-radius: calc(10 * var(--rpx));
  font-size: calc(30 * var(--rpx));
  font-weight: 600;
}
.guest-btn.primary {
  background: var(--green);
  color: #fff;
}
.guest-btn.ghost {
  background: #fff;
  color: var(--green);
  border: 1px solid var(--green);
  margin-bottom: 0;
}
.guest-form {
  text-align: left;
}
.guest-field {
  margin-bottom: calc(20 * var(--rpx));
}
.guest-input {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid #e5e5e5;
  border-radius: calc(10 * var(--rpx));
  padding: calc(20 * var(--rpx)) calc(22 * var(--rpx));
  font-size: calc(28 * var(--rpx));
  background: #fafafa;
  outline: none;
}
.guest-input:focus {
  border-color: var(--green);
  background: #fff;
}
.guest-code-row {
  display: flex;
  gap: calc(16 * var(--rpx));
  align-items: stretch;
}
.guest-code-row .guest-input {
  flex: 1;
  min-width: 0;
}
.guest-code-btn {
  flex: 0 0 auto;
  white-space: nowrap;
  padding: 0 calc(22 * var(--rpx));
  border-radius: calc(10 * var(--rpx));
  border: 1px solid var(--green);
  color: var(--green);
  background: #fff;
  font-size: calc(24 * var(--rpx));
  font-weight: 600;
}
.guest-code-btn:disabled {
  opacity: 0.55;
  color: #999;
  border-color: #ddd;
}
.guest-form .guest-btn {
  margin-top: calc(12 * var(--rpx));
  margin-bottom: 0;
}

/* ---------- Admin ---------- */
.admin-page {
  min-height: 100%;
  padding-bottom: calc(env(safe-area-inset-bottom) + 40 * var(--rpx));
  background: #f7f8fa;
}
.admin-tip {
  margin: calc(16 * var(--rpx)) calc(24 * var(--rpx));
  font-size: calc(24 * var(--rpx));
  color: #999;
  line-height: 1.5;
}
.admin-form { background: #fff; margin: 0 calc(24 * var(--rpx)); border-radius: calc(12 * var(--rpx)); padding: 0 calc(24 * var(--rpx)); }
.admin-pad { padding: calc(24 * var(--rpx)); }
.export-formats {
  display: flex;
  gap: calc(16 * var(--rpx));
  padding: calc(8 * var(--rpx)) calc(32 * var(--rpx)) calc(8 * var(--rpx));
}
.export-fmt {
  flex: 1;
  padding: calc(18 * var(--rpx)) calc(8 * var(--rpx));
  border-radius: calc(10 * var(--rpx));
  background: #f4f4f4;
  color: #333;
  font-size: calc(26 * var(--rpx));
  font-weight: 700;
}
.export-fmt.on { background: var(--green); color: #fff; }
.admin-hosp {
  display: flex; align-items: center; justify-content: space-between;
  margin: calc(16 * var(--rpx)) calc(24 * var(--rpx)) 0;
  padding: calc(28 * var(--rpx));
  background: #fff;
  border-radius: calc(16 * var(--rpx));
}
.admin-hosp-name { font-size: calc(32 * var(--rpx)); font-weight: 700; flex: 1; }
.admin-hosp-edit { color: var(--green); font-size: calc(26 * var(--rpx)); }
.admin-inp {
  width: 100%;
  border: 1px solid #e8e8e8;
  border-radius: calc(8 * var(--rpx));
  padding: calc(18 * var(--rpx));
  font-size: calc(28 * var(--rpx));
}
.hours-block { margin-bottom: calc(20 * var(--rpx)); }
.hours-label { font-size: calc(26 * var(--rpx)); font-weight: 700; margin-bottom: calc(10 * var(--rpx)); }
.hours-row { display: flex; align-items: center; gap: calc(16 * var(--rpx)); }
.hours-row input[type="time"] {
  border: 1px solid #e8e8e8;
  border-radius: calc(8 * var(--rpx));
  padding: calc(12 * var(--rpx));
  font-size: calc(26 * var(--rpx));
}
.stat-page { background: #f5f6f8; }
.stat-card {
  background: #fff;
  border-radius: calc(16 * var(--rpx));
  padding: calc(24 * var(--rpx));
  margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0;
}
.stat-card-title { font-size: calc(28 * var(--rpx)); font-weight: 700; color: #1a1a1a; margin-bottom: calc(16 * var(--rpx)); }
.stat-card-tip { margin-left: calc(12 * var(--rpx)); font-size: calc(22 * var(--rpx)); font-weight: 400; color: #999; }
.stat-chip {
  display: inline-block;
  margin: 0 0 calc(12 * var(--rpx));
  padding: calc(8 * var(--rpx)) calc(18 * var(--rpx));
  border-radius: 999px;
  background: #f4f4f4;
  font-size: calc(24 * var(--rpx));
  color: #666;
}
.stat-chip.on { background: #07c160; color: #fff; }
.stat-day-grid { display: flex; flex-wrap: wrap; gap: calc(12 * var(--rpx)); }
.stat-day {
  width: calc(25% - 9 * var(--rpx));
  box-sizing: border-box;
  padding: calc(16 * var(--rpx)) calc(8 * var(--rpx));
  border-radius: calc(12 * var(--rpx));
  background: #f4f4f4;
  text-align: center;
}
.stat-day.on { background: #07c160; }
.stat-day-rel { display: block; font-size: calc(24 * var(--rpx)); color: #666; }
.stat-day.on .stat-day-rel { color: rgba(255,255,255,0.9); }
.stat-day-md { display: block; margin-top: calc(4 * var(--rpx)); font-size: calc(28 * var(--rpx)); font-weight: 700; color: #1a1a1a; }
.stat-day.on .stat-day-md { color: #fff; }
.stat-acts { display: flex; gap: calc(28 * var(--rpx)); margin-top: calc(20 * var(--rpx)); }
.stat-detail .stat-acts { margin-top: 0; margin-bottom: calc(12 * var(--rpx)); }
.stat-act { font-size: calc(26 * var(--rpx)); color: #07c160; font-weight: 600; }
.stat-summary { display: flex; gap: calc(16 * var(--rpx)); margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0; }
.stat-sum {
  flex: 1;
  background: #fff;
  border-radius: calc(16 * var(--rpx));
  padding: calc(24 * var(--rpx)) calc(12 * var(--rpx));
  text-align: center;
}
.stat-sum-num { font-size: calc(40 * var(--rpx)); font-weight: 700; color: #07c160; }
.stat-sum-num.muted { color: #999; }
.stat-sum-lab { margin-top: calc(6 * var(--rpx)); font-size: calc(22 * var(--rpx)); color: #808080; }
.stat-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: calc(16 * var(--rpx));
  padding: calc(14 * var(--rpx)) 0;
  border-bottom: 1px solid #f3f3f3;
}
.stat-row:last-child { border-bottom: none; }
.stat-row-left { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.stat-row-name { font-size: calc(28 * var(--rpx)); color: #1a1a1a; }
.stat-row-sub { display: block; margin-top: calc(4 * var(--rpx)); font-size: calc(22 * var(--rpx)); color: #999; }
.stat-row-val { flex-shrink: 0; font-size: calc(26 * var(--rpx)); color: #07c160; font-weight: 600; }
.stat-row.is-active .stat-row-name,
.stat-row.is-active .stat-row-val { color: #07c160; font-weight: 700; }
.stat-empty { padding: calc(80 * var(--rpx)); text-align: center; color: #999; }
.stat-empty-inline { padding: calc(24 * var(--rpx)) 0; text-align: center; color: #bbb; font-size: calc(26 * var(--rpx)); }
.stat-title-row { display: flex; align-items: baseline; justify-content: space-between; gap: calc(16 * var(--rpx)); margin-bottom: calc(16 * var(--rpx)); }
.stat-title-row .stat-card-title { margin-bottom: 0; }
.stat-count { font-size: calc(22 * var(--rpx)); color: #999; }
.stat-hint { margin: calc(-8 * var(--rpx)) 0 calc(8 * var(--rpx)); font-size: calc(22 * var(--rpx)); color: #07c160; line-height: 1.4; }
.stat-detail { padding-bottom: calc(12 * var(--rpx)); }
.stat-table-scroll { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.stat-table { display: inline-block; min-width: 100%; border: 1px solid #eef0f2; border-radius: calc(10 * var(--rpx)); overflow: hidden; }
.stat-tr { display: flex; align-items: stretch; border-bottom: 1px solid #f0f0f0; }
.stat-tr:last-child { border-bottom: none; }
.stat-tr.th { background: #f7f8fa; }
.stat-td {
  flex-shrink: 0;
  padding: calc(14 * var(--rpx)) calc(12 * var(--rpx));
  font-size: calc(22 * var(--rpx));
  color: #333;
  line-height: 1.35;
  box-sizing: border-box;
  border-right: 1px solid #f0f0f0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.stat-tr.th .stat-td { font-weight: 700; color: #666; }
.stat-td:last-child { border-right: none; }
.stat-td.td-no { width: calc(240 * var(--rpx)); }
.stat-td.td-st { width: calc(90 * var(--rpx)); text-align: center; }
.stat-td.td-st.is-ok { color: #07c160; font-weight: 600; }
.stat-td.td-st.is-cancel { color: #999; }
.stat-td.td-name { width: calc(140 * var(--rpx)); }
.stat-td.td-phone { width: calc(160 * var(--rpx)); }
.stat-td.td-dept { width: calc(120 * var(--rpx)); }
.stat-td.td-doc { width: calc(160 * var(--rpx)); }
.stat-td.td-time { width: calc(240 * var(--rpx)); }
.stat-td.td-opname { width: calc(280 * var(--rpx)); overflow: visible; text-overflow: clip; }
.stat-td.td-opphone { width: calc(160 * var(--rpx)); }
.stat-td.td-at { width: calc(240 * var(--rpx)); color: #808080; }
.stat-tr.empty-tr .empty-td {
  width: 100%;
  min-width: calc(680 * var(--rpx));
  text-align: center;
  color: #bbb;
  padding: calc(28 * var(--rpx)) calc(12 * var(--rpx));
  border-right: none;
}
.admin-card {
  margin: calc(16 * var(--rpx)) calc(24 * var(--rpx)) 0;
  padding: calc(24 * var(--rpx));
  background: #fff;
  border-radius: calc(16 * var(--rpx));
}
.admin-card-title { font-size: calc(28 * var(--rpx)); font-weight: 700; margin-bottom: calc(12 * var(--rpx)); }
.admin-row {
  display: flex; align-items: flex-start; justify-content: space-between;
  padding: calc(16 * var(--rpx)) 0;
  border-bottom: 1px solid #f5f5f5;
  font-size: calc(26 * var(--rpx));
  gap: calc(16 * var(--rpx));
}
.admin-row:last-child { border-bottom: 0; }
.admin-row .row-sub { margin-top: calc(6 * var(--rpx)); font-size: calc(22 * var(--rpx)); color: #808080; }
.empty-inline { padding: calc(20 * var(--rpx)) 0; color: #999; font-size: calc(24 * var(--rpx)); }
.admin-step-row {
  display: flex; align-items: center;
  padding: calc(12 * var(--rpx)) 0;
  gap: calc(12 * var(--rpx));
}
.admin-step-row .lab { width: calc(80 * var(--rpx)); font-size: calc(26 * var(--rpx)); color: #666; }
.stepper { display: flex; align-items: center; gap: calc(8 * var(--rpx)); }
.stepper .step {
  width: calc(56 * var(--rpx)); height: calc(56 * var(--rpx));
  border: 1px solid #e0e0e0; border-radius: calc(8 * var(--rpx));
  font-size: calc(32 * var(--rpx)); color: #333;
}
.stepper .num {
  width: calc(88 * var(--rpx));
  text-align: center;
  border: 1px solid #e8e8e8;
  border-radius: calc(8 * var(--rpx));
  padding: calc(10 * var(--rpx));
  font-size: calc(28 * var(--rpx));
}
.admin-step-row .unit { font-size: calc(24 * var(--rpx)); color: #999; }
.admin-hint { margin-top: calc(12 * var(--rpx)); font-size: calc(22 * var(--rpx)); color: #999; line-height: 1.45; }
.admin-link-btn {
  margin-top: calc(16 * var(--rpx));
  color: var(--green);
  font-size: calc(26 * var(--rpx));
}
.day-block { padding: calc(16 * var(--rpx)) 0; border-top: 1px solid #f0f0f0; }
.day-head { font-size: calc(26 * var(--rpx)); font-weight: 700; margin-bottom: calc(8 * var(--rpx)); }
.admin-text-btn { color: var(--green); font-size: calc(26 * var(--rpx)); font-weight: 600; }
.admin-danger {
  margin-top: calc(12 * var(--rpx));
  color: var(--danger);
  font-size: calc(24 * var(--rpx));
}
.admin-dept-bar {
  display: flex; gap: calc(12 * var(--rpx));
  overflow-x: auto;
  padding: calc(16 * var(--rpx)) calc(24 * var(--rpx));
  white-space: nowrap;
}
.dept-chip {
  padding: calc(10 * var(--rpx)) calc(22 * var(--rpx));
  border: 1px solid #e0e0e0;
  border-radius: calc(999 * var(--rpx));
  font-size: calc(24 * var(--rpx));
  color: #666;
  background: #fff;
}
.dept-chip.on { background: var(--green); border-color: var(--green); color: #fff; }
.admin-sec-head {
  display: flex; justify-content: space-between; align-items: center;
  margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) calc(8 * var(--rpx));
  font-size: calc(28 * var(--rpx)); font-weight: 700;
}
.admin-banner-preview {
  width: 100%;
  height: calc(200 * var(--rpx));
  object-fit: cover;
  border-radius: calc(8 * var(--rpx));
  margin: calc(12 * var(--rpx)) 0;
  background: #f0f0f0;
}
.admin-acts { display: flex; flex-wrap: wrap; gap: calc(16 * var(--rpx)); margin-top: calc(8 * var(--rpx)); }
.on-tag { color: var(--green); font-size: calc(22 * var(--rpx)); }
.off { color: #999; font-size: calc(22 * var(--rpx)); }
.tag {
  display: inline-block;
  margin-top: calc(8 * var(--rpx));
  padding: calc(2 * var(--rpx)) calc(12 * var(--rpx));
  font-size: calc(20 * var(--rpx));
  border-radius: calc(6 * var(--rpx));
  background: #f0f0f0; color: #999;
}
.tag.on { background: rgba(7,193,96,.12); color: var(--green); }
.admin-page .menu { margin: calc(16 * var(--rpx)) calc(24 * var(--rpx)) 0; }
.admin-page .tabs {
  margin: 0 calc(24 * var(--rpx));
  background: #fff;
  border-radius: calc(12 * var(--rpx)) calc(12 * var(--rpx)) 0 0;
  padding: 0 calc(24 * var(--rpx));
}

/* 医生排班弹层（对齐小程序） */
.admin-mask { z-index: 2000; }
.sheet-tall {
  height: 88vh;
  max-height: 88vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 0 calc(28 * var(--rpx));
  box-sizing: border-box;
}
.sheet-tall .sheet-head {
  flex-shrink: 0;
  padding: calc(28 * var(--rpx)) 0 calc(12 * var(--rpx));
  border-bottom: 0;
}
.sheet-tall .sheet-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding-bottom: calc(16 * var(--rpx));
}
.sheet-tall .sheet-foot {
  flex-shrink: 0;
  padding: calc(16 * var(--rpx)) 0 calc(env(safe-area-inset-bottom) + 20 * var(--rpx));
  background: #fff;
  border-top: 1px solid #f0f0f0;
}
.sheet-tall .field { padding: calc(20 * var(--rpx)) 0; }
.sheet-tall .field-label { width: calc(120 * var(--rpx)); }
.doc-admin-card { padding: calc(24 * var(--rpx)); }
.doc-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: calc(24 * var(--rpx));
}
.doc-info { flex: 1; min-width: 0; }
.doc-name { font-size: calc(30 * var(--rpx)); font-weight: 700; }
.doc-sub { margin-top: calc(6 * var(--rpx)); font-size: calc(24 * var(--rpx)); color: #808080; }
.doc-edit-btn {
  flex-shrink: 0;
  font-size: calc(26 * var(--rpx));
  color: var(--green);
  font-weight: 600;
  padding: calc(12 * var(--rpx)) calc(20 * var(--rpx));
  background: rgba(7, 193, 96, 0.08);
  border-radius: calc(8 * var(--rpx));
}
.days { margin-top: calc(16 * var(--rpx)); }
.days-title { font-size: calc(24 * var(--rpx)); color: #808080; margin-bottom: calc(8 * var(--rpx)); }
.days-empty { font-size: calc(26 * var(--rpx)); color: #b2b2b2; }
.days-line {
  font-size: calc(26 * var(--rpx));
  color: var(--green);
  line-height: 1.55;
  padding: calc(4 * var(--rpx)) 0;
}
.doc-foot {
  margin-top: calc(20 * var(--rpx));
  padding-top: calc(16 * var(--rpx));
  border-top: 1px solid #f3f3f3;
}
.sched-head {
  margin-top: calc(20 * var(--rpx));
  margin-bottom: calc(8 * var(--rpx));
  font-size: calc(26 * var(--rpx));
  color: #808080;
  font-weight: 700;
}
.sched-tip {
  font-size: calc(22 * var(--rpx));
  color: #999;
  margin-bottom: calc(8 * var(--rpx));
  line-height: 1.4;
}
.sched-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: calc(16 * var(--rpx));
  padding: calc(18 * var(--rpx)) 0;
  border-bottom: 1px solid #f3f3f3;
}
.sched-row.is-on .sched-rel { color: var(--green); }
.sched-date {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: calc(10 * var(--rpx));
  min-width: 0;
  flex: 0 0 calc(160 * var(--rpx));
  padding-top: calc(10 * var(--rpx));
}
.sched-rel { font-size: calc(28 * var(--rpx)); font-weight: 700; color: #1a1a1a; }
.sched-md { font-size: calc(26 * var(--rpx)); color: #333; }
.sched-wk { font-size: calc(24 * var(--rpx)); color: #999; }
.period-col {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: calc(12 * var(--rpx));
}
.period-line {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: calc(10 * var(--rpx));
}
.period {
  min-width: calc(88 * var(--rpx));
  text-align: center;
  padding: calc(10 * var(--rpx)) calc(16 * var(--rpx));
  border-radius: calc(8 * var(--rpx));
  background: #f4f4f4;
  font-size: calc(26 * var(--rpx));
  color: #666;
}
.period.on { background: var(--green); color: #fff; }
.period.is-past,
.period:disabled {
  background: #f0f0f0;
  color: #c8c8c8;
}
.time-chip {
  display: inline-flex;
  align-items: center;
  gap: calc(6 * var(--rpx));
  padding: calc(6 * var(--rpx)) calc(12 * var(--rpx));
  border-radius: calc(8 * var(--rpx));
  background: #f0faf4;
  color: var(--green);
  font-size: calc(22 * var(--rpx));
  font-weight: 600;
}
.time-chip input[type="time"] {
  border: 0;
  background: transparent;
  color: var(--green);
  font-size: calc(22 * var(--rpx));
  font-weight: 600;
  max-width: calc(140 * var(--rpx));
  padding: 0;
}
