/* 独立计薪页：参考大字金额与轻量统计卡的层级，不复制桌面窗口或图标。 */
.wage-page {
  --wage-ink: #191b21;
  --wage-muted: #657184;
  --wage-hairline: #e1e6ec;
  --wage-wash: #f4f7fa;
  --wage-input: #f9fbfd;
  --wage-card: #fff;
  --wage-track: #e2e8ef;
  --wage-accent: #637992;
  --wage-focus: #155eac;
  max-width: 560px;
  margin: 0 auto;
  padding: 14px 20px calc(32px + env(safe-area-inset-bottom));
  color: var(--wage-ink);
  font-family: ui-rounded, system-ui, -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei UI", sans-serif;
  font-variant-numeric: tabular-nums lining-nums;
  -webkit-font-smoothing: antialiased;
}
/* 薪动是独立全屏页，抵消 main-view 的左右 padding，铺满应用外壳并保持比例。 */
#main-view:has(.wage-page) { padding: 0; }
.wage-page *, .wage-page *::before, .wage-page *::after { box-sizing: border-box; }
.wage-page button, .wage-page input, .wage-page select { font: inherit; }
.wage-page button { touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.wage-page ::selection { background: #c7dbec; color: #13263a; }
.wage-page button:focus-visible, .wage-page input:focus-visible, .wage-page a:focus-visible {
  outline: 2px solid var(--wage-focus);
  outline-offset: 3px;
}
.wage-header { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 44px; margin: 0 0 6px; }
.wage-header h1 { margin: 0; color: var(--wage-muted); font-size: 16px; font-weight: 650; line-height: 1.25; letter-spacing: -.015em; }
.wage-mascot { position: absolute; top: 50%; left: 50%; display: block; width: 48px; height: 48px; transform: translate(-50%, -50%); pointer-events: none; }
.wage-settings-button {
  display: grid; place-items: center; flex: none; width: 44px; height: 44px;
  border: 0; border-radius: 50%; color: var(--wage-muted);
  background: transparent;
}
.wage-settings-button svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; }
.wage-settings-button:hover { background: var(--wage-wash); color: var(--wage-ink); }
.wage-settings-button:active { transform: scale(.97); }
.wage-stage { display: flex; flex-direction: column; align-items: center; padding: 0 0 16px; }
.wage-stage-top { display: flex; align-self: stretch; align-items: center; justify-content: space-between; gap: 12px; min-height: 25px; }
.wage-status { position: relative; display: inline-flex; align-items: center; color: var(--wage-muted); font-size: 13px; font-weight: 600; }
.wage-status::before { content: ''; position: absolute; top: 50%; left: -14px; width: 8px; height: 8px; border-radius: 50%; background: #9199a7; transform: translateY(-50%); }
.wage-status[data-status="working"]::before { background: #5579a2; }
.wage-status[data-status="break"]::before { background: #ac8556; }
.wage-countdown { display: flex; align-items: baseline; gap: 5px; min-width: 0; color: var(--wage-muted); font-size: 12px; text-align: right; white-space: nowrap; }
.wage-countdown strong { color: var(--wage-ink); font-size: 12px; font-weight: 650; }
.wage-amount-label { margin: 36px 0 6px; color: var(--wage-muted); font-size: 18px; font-weight: 700; line-height: 1.3; letter-spacing: .005em; text-align: center; }
.wage-amount { display: flex; align-items: baseline; justify-content: center; max-width: 100%; min-width: 0; gap: 4px; overflow-x: auto; scrollbar-width: none; white-space: nowrap; }
.wage-amount::-webkit-scrollbar { display: none; }
.wage-amount > span { flex: none; color: var(--wage-muted); font-size: clamp(24px, 8vw, 39px); font-weight: 650; }
.wage-amount strong {
  flex: none; font-size: clamp(51px, 13.5vw, 77px); line-height: 1.14;
  font-weight: 740; letter-spacing: -.032em;
}
.wage-digit { position: relative; display: inline-block; height: 1em; line-height: 1; overflow: hidden; vertical-align: -.02em; }
.wage-digit-value { display: block; line-height: 1; }
.wage-digit.is-rolling::before { position: absolute; inset: 0; content: attr(data-previous); animation: wage-digit-out 260ms cubic-bezier(.22,1,.36,1) both; }
.wage-digit.is-rolling .wage-digit-value { animation: wage-digit-in 260ms cubic-bezier(.22,1,.36,1) both; }
@keyframes wage-digit-out { to { transform: translateY(-105%); } }
@keyframes wage-digit-in { from { transform: translateY(105%); } to { transform: translateY(0); } }
.wage-week-total { display: inline-flex; align-items: baseline; justify-content: center; gap: 7px; max-width: 100%; min-width: 0; margin-top: 17px; padding: 7px 13px; border-radius: 999px; background: var(--wage-wash); }
.wage-week-total span { color: var(--wage-muted); font-size: 12px; }
.wage-week-total strong { min-width: 0; color: var(--wage-ink); font-size: 13px; font-weight: 680; }
.wage-estimate-note { margin: 8px 0 0; color: var(--wage-muted); font-size: 12px; line-height: 1.35; text-align: center; }
.wage-summary-card { margin: 3px 0 0; padding: 21px 18px 17px; border-radius: 19px; background: var(--wage-card); box-shadow: 0 14px 34px rgba(22, 36, 55, .075); }
.wage-track { height: 9px; margin-top: 29px; border-radius: 99px; background: var(--wage-track); }
.wage-track-fill { position: relative; width: 0; height: 100%; border-radius: inherit; background: var(--wage-accent); transition: width 450ms ease-out; }
.wage-track-fill::after {
  content: ''; position: absolute; top: 50%; right: -5px; width: 11px; height: 11px;
  border: 2px solid var(--wage-card); border-radius: 50%; background: var(--wage-accent);
  transform: translateY(-50%);
}
.wage-track-labels { display: flex; justify-content: space-between; align-items: baseline; gap: 6px; margin-top: 10px; color: var(--wage-muted); font-size: 12px; }
.wage-track-labels span:nth-child(2) { text-align: center; }
.wage-track-labels strong { color: var(--wage-ink); font-weight: 600; }
.wage-unset { max-width: 33ch; margin: 15px auto 0; color: var(--wage-muted); font-size: 13px; line-height: 1.55; text-align: center; }
.wage-stage:has(.wage-unset) { min-height: 215px; }
.wage-stage:has(.wage-unset) .wage-amount-label,
.wage-stage:has(.wage-unset) .wage-amount,
.wage-stage:has(.wage-unset) .wage-week-total { display: none; }
.wage-facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); }
.wage-facts > div { min-width: 0; padding-inline: 7px; text-align: center; }
.wage-facts > div:first-child { padding-left: 0; }
.wage-facts > div:last-child { padding-right: 0; }
.wage-facts > div + div { border-left: 1px solid var(--wage-hairline); }
.wage-facts span { display: block; color: var(--wage-muted); font-size: 12px; font-weight: 600; line-height: 1.35; }
.wage-facts strong { display: block; margin-top: 8px; overflow-wrap: anywhere; font-size: clamp(14px, 4.2vw, 18px); line-height: 1.3; font-weight: 700; }
.wage-schedule { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; margin-top: 12px; padding: 0 2px; color: var(--wage-muted); font-size: 12px; line-height: 1.55; }
.wage-schedule > * { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.wage-schedule > :last-child { text-align: right; }
.wage-schedule span { font-size: 12px; }
.wage-schedule small { color: var(--wage-muted); font-size: 12px; text-align: right; line-height: 1.55; }
.wage-schedule strong { color: var(--wage-ink); font-size: 14px; font-weight: 720; }
.wage-rate-trigger {
  display: block; min-width: 110px; min-height: 44px; margin: 2px auto 0; padding: 0 10px;
  border: 0; border-radius: 10px; background: transparent; color: var(--wage-ink);
  font-family: inherit; font-variant-numeric: inherit; font-size: 13px; font-weight: 720;
  letter-spacing: .01em; cursor: pointer; transition: color 150ms ease, transform 150ms ease;
}
.wage-rate-trigger:hover { color: var(--wage-accent); }
.wage-rate-trigger:active { transform: scale(.97); }
.wage-rate-scrim {
  position: fixed; z-index: 44; inset: 0; background: rgba(15, 25, 38, .38);
  -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px);
}
.wage-rate-dialog {
  position: fixed; z-index: 45; top: 50%; left: 50%;
  width: min(440px, calc(100vw - 28px)); max-height: min(86dvh, 520px); overflow: auto;
  padding: 20px; border: 1px solid rgba(255,255,255,.7); border-radius: 21px;
  background: rgba(250,252,254,.97); color: var(--wage-ink);
  -webkit-backdrop-filter: blur(18px) saturate(120%); backdrop-filter: blur(18px) saturate(120%);
  box-shadow: 0 24px 64px rgba(15,25,38,.22), inset 0 1px 0 rgba(255,255,255,.75);
  transform: translate(-50%, -50%); overscroll-behavior: contain;
}
.wage-rate-scrim[hidden], .wage-rate-dialog[hidden] { display: none; }
.wage-rate-dialog-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.wage-rate-dialog-head h2 { margin: 0; font-size: 20px; line-height: 1.35; font-weight: 760; letter-spacing: -.02em; }
#wage-rate-context { display: block; margin: 4px 0 0; color: var(--wage-muted); font-size: 12px; line-height: 1.4; }
#wage-rate-close {
  display: grid; place-items: center; flex: none; width: 44px; height: 44px;
  margin: -8px -8px 0 0; padding: 0; border: 0; border-radius: 50%;
  background: transparent; color: var(--wage-muted); font-size: 25px; font-weight: 350;
  cursor: pointer; transition: background 150ms ease, transform 150ms ease;
}
#wage-rate-close:hover { background: var(--wage-wash); color: var(--wage-ink); }
#wage-rate-close:active { transform: scale(.94); }
.wage-rate-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 17px 0 0; }
.wage-rate-grid > div { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; min-width: 0; padding: 11px 0; border-top: 1px solid var(--wage-hairline); }
.wage-rate-grid span { color: var(--wage-muted); font-size: 12px; white-space: nowrap; }
.wage-rate-grid strong { overflow: hidden; color: var(--wage-ink); font-size: 14px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; font-variant-numeric: tabular-nums; }
.wage-rate-grid > .wage-rate-cell {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  min-height: 118px; padding: 14px 7px; border: 1px solid var(--wage-hairline);
  border-radius: 15px; background: var(--wage-card); text-align: center;
}
.wage-rate-icon { display: block; width: 25px; height: 25px; margin-bottom: 7px; color: var(--wage-muted); fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.wage-rate-cell span:not(.wage-rate-icon) { color: var(--wage-muted); font-size: 13px; font-weight: 650; }
.wage-rate-cell strong { display: block; max-width: 100%; margin-top: 6px; font-size: clamp(15px, 4.2vw, 20px); font-weight: 740; }

/* 每日收获按实际数据呈现；日历日格沿用阅读页的克制色系。 */
.wage-harvest { margin-top: 4px; padding: 8px 0 calc(72px + env(safe-area-inset-bottom)); }
.wage-harvest-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.wage-harvest-head h2 { margin: 0; font-size: 20px; line-height: 1.35; font-weight: 760; letter-spacing: -.02em; }
.wage-harvest-month { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 17px 0 11px; }
.wage-harvest-month strong { font-size: 15px; font-weight: 700; }
.wage-harvest-month button { display: grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0 9px; border: 0; border-radius: 13px; background: var(--wage-wash); color: var(--wage-ink); font-size: 17px; }
.wage-harvest-calendar { min-width: 0; }
.wage-harvest-weekdays, .wage-harvest-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.wage-harvest-weekdays { margin-bottom: 6px; }
.wage-harvest-weekdays span { padding: 6px 0; color: var(--wage-muted); font-size: 12px; text-align: center; }
.wage-harvest-day { display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 0; min-height: 51px; padding: 5px 2px; border: 1px solid transparent; border-radius: 11px; background: transparent; color: var(--wage-ink); text-align: center; }
button.wage-harvest-day { cursor: pointer; }
.wage-harvest-day.is-workday { background: var(--wage-wash); }
.wage-harvest-day.is-adjacent { color: var(--wage-muted); opacity: .6; }
.wage-harvest-day.is-future small { display: none; }
.wage-harvest-day.is-today { border-color: var(--wage-accent); }
.wage-harvest-day.is-selected { border-color: var(--wage-ink); background: var(--wage-ink); color: var(--wage-card); }
.wage-harvest-day.is-override:not(.is-selected)::after { content: ''; width: 4px; height: 4px; margin-top: 2px; border-radius: 50%; background: var(--wage-accent); }
.wage-harvest-day span { font-size: 12px; line-height: 1.25; font-weight: 620; }
.wage-harvest-day small { max-width: 100%; margin-top: 2px; overflow: hidden; color: var(--wage-muted); font-size: 12px; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }
.wage-harvest-day .wage-harvest-festival { display: block; max-width: 100%; margin-top: 2px; overflow: hidden; color: var(--wage-accent); font-size: 12px; line-height: 1.15; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.wage-harvest-day.is-selected .wage-harvest-festival { color: inherit; }
.wage-harvest-day.is-selected small { color: inherit; opacity: .8; }
/* 选日与月累计共用两行排版，日期在左、金额在右，字体和数字边线保持一致。 */
.wage-harvest-footer { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; margin-top: 16px; padding: 13px 12px; border-radius: 12px; background: var(--wage-wash); }
.wage-harvest-selected, .wage-harvest-month-summary { display: flex; align-items: baseline; justify-content: space-between; min-width: 0; gap: 12px; }
.wage-harvest-selected > span, .wage-harvest-month-summary > span { min-width: 0; color: var(--wage-muted); font-size: 12px; line-height: 1.4; overflow-wrap: anywhere; }
.wage-harvest-selected > strong, .wage-harvest-month-summary > strong { flex: none; color: var(--wage-ink); font-size: 16px; line-height: 1.35; font-weight: 740; letter-spacing: -.015em; font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; }
.wage-settings-panel { margin-top: 23px; }
.wage-settings-scrim {
  position: fixed; z-index: 42; inset: 0; width: 100%; padding: 0;
  border: 0; background: rgba(17, 27, 39, .32);
  -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
}
.wage-settings-scrim[hidden], .wage-settings-panel[hidden] { display: none; }
.wage-settings-panel.is-sheet {
  position: fixed; z-index: 43; left: 50%; bottom: 0; box-sizing: border-box;
  width: min(100%, 560px); max-height: min(90dvh, 850px); overflow: auto;
  margin: 0; padding: 13px 18px calc(22px + env(safe-area-inset-bottom));
  border: 0; border-radius: 20px 20px 0 0;
  background: rgba(249, 251, 253, .96); color: var(--wage-ink);
  -webkit-backdrop-filter: blur(18px) saturate(125%); backdrop-filter: blur(18px) saturate(125%);
  box-shadow: 0 -14px 46px rgba(13, 28, 47, .18), inset 0 1px 0 rgba(255,255,255,.9);
  overscroll-behavior: contain; animation: wage-sheet-enter 260ms cubic-bezier(.2,.8,.2,1) both;
}
.wage-settings-panel.is-sheet::before {
  content: ''; display: block; width: 36px; height: 4px; margin: 0 auto 18px;
  border-radius: 99px; background: #b7c4d0;
}
@keyframes wage-sheet-enter {
  from { opacity: .86; transform: translate(-50%, 14px); }
  to { opacity: 1; transform: translate(-50%, 0); }
}
.wage-form-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 17px; }
.wage-form-heading h2 { margin: 0; font-size: 19px; line-height: 1.35; letter-spacing: -.02em; }
.wage-form-heading span { color: var(--wage-muted); font-size: 12px; }
.wage-settings-group, .wage-exception-fieldset { min-width: 0; margin: 0 0 13px; padding: 17px 15px 3px; border: 1px solid var(--wage-hairline); border-radius: 16px; background: var(--wage-card); }
.wage-settings-group > h3 { margin: 0 0 14px; font-size: 14px; line-height: 1.35; font-weight: 720; }
.wage-fieldset { min-width: 0; margin: 0 0 16px; padding: 0; border: 0; }
.wage-fieldset legend, .wage-field > span { display: block; margin-bottom: 8px; color: var(--wage-ink); font-size: 13px; font-weight: 680; }
.wage-mode-group { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 3px; padding: 4px; border-radius: 13px; background: var(--wage-wash); }
.wage-mode, .wage-day { position: relative; display: block; min-width: 0; }
.wage-mode input, .wage-day input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.wage-mode span, .wage-day span { display: grid; place-items: center; width: 100%; min-height: 43px; border-radius: 10px; background: transparent; color: var(--wage-muted); font-size: 13px; font-weight: 690; }
.wage-mode input:checked + span { background: var(--wage-card); color: var(--wage-ink); box-shadow: 0 2px 7px rgba(20,34,52,.08); }
.wage-day input:checked + span { border-color: var(--wage-accent); background: var(--wage-wash); color: var(--wage-ink); }
.wage-mode input:focus-visible + span, .wage-day input:focus-visible + span { outline: 2px solid var(--wage-focus); outline-offset: 3px; }
.wage-field { display: block; min-width: 0; margin-bottom: 16px; }
.wage-field[hidden] { display: none; }
.wage-field input {
  display: block; width: 100%; min-width: 0; min-height: 40px; padding: 6px 2px;
  border: none; border-bottom: 1px solid var(--wage-hairline); border-radius: 0; background: transparent; color: var(--wage-ink);
  font-size: 15px;
}
.wage-field input::placeholder { color: #738292; opacity: 1; }
.wage-field input:focus { background: transparent; }
.wage-currency-field input { max-width: 150px; }
.wage-currency-field small { display: block; margin-top: 7px; color: var(--wage-muted); font-size: 12px; line-height: 1.45; }
.wage-days { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 4px; }
.wage-day span { min-height: 43px; border: 1px solid var(--wage-hairline); border-radius: 10px; font-size: 12px; }
.wage-time-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.wage-check { display: flex; align-items: center; gap: 11px; min-height: 44px; margin: -3px 0 13px; color: var(--wage-ink); font-size: 14px; font-weight: 600; }
.wage-check input { width: 18px; height: 18px; margin: 0; accent-color: var(--wage-accent); }
.wage-break-grid { margin-top: 7px; }
.wage-form-error { margin: 0 0 13px; color: #a72737; font-size: 13px; line-height: 1.5; }
.wage-form-actions { display: flex; align-items: center; gap: 9px; margin-top: 8px; }
.wage-save, .wage-cancel { min-height: 46px; border-radius: 12px; font-size: 14px; font-weight: 700; }
.wage-save { flex: 1; border: 0; background: var(--wage-accent); color: white; }
.wage-save:active { filter: brightness(.93); }
.wage-cancel { padding: 0 17px; border: 1px solid var(--wage-hairline); background: transparent; color: var(--wage-ink); }
.wage-exception-fieldset { padding-top: 28px; }
.wage-exception-fieldset legend { float: left; width: 100%; margin-bottom: 4px; padding: 0 4px; color: var(--wage-ink); font-size: 14px; font-weight: 720; }
.wage-exception-fieldset > p { clear: both; margin: 3px 0 12px; color: var(--wage-muted); font-size: 12px; line-height: 1.45; }
.wage-exception-form { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; gap: 12px 10px; margin: 3px 0 11px; }
.wage-exception-form label { min-width: 0; color: var(--wage-muted); font-size: 12px; }
.wage-exception-form label:last-of-type { grid-column: 1 / -1; }
.wage-exception-form label > span { display: block; margin-bottom: 5px; }
.wage-exception-form input, .wage-exception-form select { display: block; width: 100%; min-width: 0; min-height: 40px; padding: 6px 2px; border: none; border-bottom: 1px solid var(--wage-hairline); border-radius: 0; background: transparent; color: var(--wage-ink); font-size: 15px; }
.wage-exception-form input[type="date"], .wage-exception-form select { height: 40px; line-height: 40px; box-sizing: border-box; padding-block: 0; }
.wage-exception-form select { text-align: center; text-align-last: center; -webkit-appearance: none; appearance: none; }
.wage-exception-festival-line { display: block; margin: -6px 0 0; color: var(--wage-muted); font-size: 12px; line-height: 1.35; overflow-wrap: anywhere; }
.wage-exception-form button, .wage-exception-row button { min-width: 44px; min-height: 44px; padding: 0 10px; border: 1px solid var(--wage-hairline); border-radius: 11px; background: var(--wage-wash); color: var(--wage-ink); font-size: 12px; font-weight: 670; }
.wage-exception-form button { grid-column: 1 / -1; justify-self: end; }
.wage-exception-list { display: grid; gap: 7px; margin: 0 0 13px; padding: 0; list-style: none; }
.wage-exception-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 44px; padding: 4px 0; border-top: 1px solid var(--wage-hairline); color: var(--wage-ink); font-size: 12px; }
.wage-exception-row button { flex: none; }
.wage-exception-empty { margin: 0 0 12px; color: var(--wage-muted); font-size: 12px; }
html[data-theme="dark"] .wage-page {
  --wage-ink: #f1f3f7; --wage-muted: #b6c0cd; --wage-hairline: #3d444e;
  --wage-wash: #303741; --wage-input: #242a32; --wage-card: #272c33;
  --wage-track: #414a55; --wage-accent: #a6bbd3; --wage-focus: #a9d2ff;
  color-scheme: dark;
}
html[data-theme="dark"] .wage-page ::selection { background: #506b88; color: #fff; }
html[data-theme="dark"] .wage-settings-button { color: var(--wage-muted); }
html[data-theme="dark"] .wage-settings-button:hover { color: var(--wage-ink); background: var(--wage-wash); }
html[data-theme="dark"] .wage-summary-card { box-shadow: 0 16px 40px rgba(0,0,0,.16); }
html[data-theme="dark"] .wage-harvest-day.is-selected { border-color: #9fb5ce; background: #394b60; color: #fff; }
html[data-theme="dark"] .wage-rate-dialog { border-color: rgba(255,255,255,.13); background: rgba(37,43,51,.97); box-shadow: 0 24px 64px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.08); }
html[data-theme="dark"] .wage-settings-panel.is-sheet { background: rgba(34, 39, 47, .97); box-shadow: 0 -14px 46px rgba(0,0,0,.42), inset 0 1px 0 rgba(255,255,255,.1); }
html[data-theme="dark"] .wage-settings-panel.is-sheet::before { background: #72808d; }
html[data-theme="dark"] .wage-field input::placeholder { color: #b1bdc9; }
html[data-theme="dark"] .wage-form-error { color: #ffacb4; }
html[data-theme="dark"] .wage-save { color: #10253a; }
@media (max-width: 719px) {
  #main-view:has(.wage-page) { min-height: 100dvh; padding: 0; }
  .wage-page {
    width: 100%; max-width: none; min-height: 100dvh; margin: 0;
    padding: max(14px, env(safe-area-inset-top)) 20px calc(96px + env(safe-area-inset-bottom));
  }
  .wage-harvest { padding-bottom: 0; }
}
@media (max-width: 359px) {
  .wage-amount-label { margin-top: 37px; }
  .wage-amount strong { font-size: clamp(42px, 14vw, 50px); }
  .wage-summary-card { padding-inline: 12px; }
  .wage-days { gap: 3px; }
  .wage-day span { font-size: 12px; }
  .wage-facts > div { padding-inline: 4px; }
  .wage-facts strong { font-size: 14px; }
  .wage-schedule { gap: 8px; }
  .wage-schedule > * { font-size: 12px; }
  .wage-rate-dialog { width: calc(100vw - 20px); padding: 16px; }
  .wage-rate-grid { gap: 8px; }
  .wage-rate-grid strong { font-size: 14px; }
  .wage-harvest-weekdays, .wage-harvest-days { gap: 3px; }
  .wage-harvest-day { min-height: 49px; }
  .wage-harvest-day small { font-size: 12px; }
  .wage-harvest-day .wage-harvest-festival { font-size: 12px; }
  .wage-harvest-footer { gap: 9px; padding-inline: 10px; }
  .wage-settings-panel.is-sheet { padding-inline: 12px; }
  .wage-settings-group, .wage-exception-fieldset { padding-inline: 11px; }
  .wage-exception-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .wage-exception-form button { grid-column: 1 / -1; }
}
@media (prefers-reduced-motion: reduce) {
  .wage-track-fill, .wage-settings-button, .wage-rate-trigger, #wage-rate-close { transition: none; }
  .wage-rate-dialog { transform: translate(-50%, -50%); }
  .wage-settings-panel.is-sheet { animation: none; transform: translateX(-50%); }
  .wage-digit.is-rolling::before { content: none; animation: none; }
  .wage-digit.is-rolling .wage-digit-value { animation: none; }
}
@media (prefers-reduced-transparency: reduce) {
  .wage-settings-panel.is-sheet { background: #fafcff; -webkit-backdrop-filter: none; backdrop-filter: none; }
  html[data-theme="dark"] .wage-settings-panel.is-sheet { background: #22262d; }
  .wage-settings-scrim { -webkit-backdrop-filter: none; backdrop-filter: none; }
  .wage-rate-dialog { background: #fafcff; -webkit-backdrop-filter: none; backdrop-filter: none; }
  html[data-theme="dark"] .wage-rate-dialog { background: #252b33; }
  .wage-rate-scrim { -webkit-backdrop-filter: none; backdrop-filter: none; }
}

/* 窄屏：时间/日期/下拉输入框收缩，避免两列布局超界或重叠 */
.wage-field input[type="time"],
.wage-field input[type="date"],
.wage-exception-form input,
.wage-exception-form select {
  min-width: 0;
  padding-inline: 9px;
}
@media (max-width: 400px) {
  .wage-field input { font-size: 15px; padding-inline: 10px; }
  .wage-time-grid { gap: 8px; }
  .wage-exception-form { gap: 10px 6px; }
  .wage-exception-form input, .wage-exception-form select { font-size: 15px; padding-inline: 8px; }
}
