/* t-job — T4 upcoming job. Layout only; hero, visit block, rows, money and sheets are shared components. Tokens only. */
.t-job { gap: 0; padding-bottom: var(--space-40); }
.t-job__note { margin: 0; text-wrap: pretty; }
.t-job__rule { margin: var(--space-8) 0 0; text-wrap: pretty; }   /* K-41: the reminder rule line under the title */
.t-job .heading-row__trail .more-btn { margin-right: 0; }   /* the ••• sits at the title row's right end (D-195); the row pulls it 12 into the gutter */
.t-job__money { margin-top: var(--rhythm-section); }
.t-job__money .money-row:only-child { padding-block: 0; min-height: 0; }   /* a single total row has nothing above it */
.t-job__money .money-row:only-child + .stitch, .t-job__money .stitch:first-child { display: none; }
.t-job__fine { margin: var(--space-8) 0 0; }

/* sheets */
.t-job-sheet { display: flex; flex-direction: column; gap: var(--space-16); width: 100%; }
.t-job-sheet p { margin: 0; }
.t-job-sheet__actions { display: flex; flex-direction: column; gap: var(--space-8); margin-top: var(--space-8); }

/* M4 — the job after the visit starts. The bar is a sibling of main (shared .action-bar); layout only. */
.t-job.body--with-bar { padding-bottom: var(--space-32); }
/* K-17: the one quote sits under the header row (page-head) */
.t-job__quote .note-quote { margin-top: 0; }
.t-job .sec > .courier-card { margin: 0; }
/* R4-2-T-09: a return block's address sits on the place name's text edge (glyph column 20 + gap 8), regular weight */
.t-job__payout { gap: 0; margin-top: var(--rhythm-block); }   /* K-20 flat hero: YOUR PAYOUT, the figure, its state (+ ⓘ), her rating once she rated, then the breakdown */
.t-job__payout p { margin: 0; }
.t-job__payout-amt { font-variant-numeric: lining-nums tabular-nums; color: var(--ink); }
.t-job__payout .t-job__fine { margin-top: var(--space-8); }

/* mark-ready sheet */
.t-job-sheet__ways { display: flex; flex-direction: column; gap: var(--space-4); margin: 0; padding: 0; border: 0; min-width: 0; }
.t-job-sheet__ways legend { padding: 0; margin-bottom: var(--space-8); }
.t-job__summary { margin: 0 0 var(--space-8); }

/* D-169: the due date leads once the visit is behind her; within a day it turns warning ink */
.t-job__due--soon { color: var(--warning-ink); }
/* D-172: the transfer's state under the take-home figure — a pill, then its line (error ink when the bank sent it back) */
.t-job__payout-state { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-8); margin-top: var(--space-4); }
.t-job__err { color: var(--error-ink); font-weight: 600; }
.t-job-sheet__intro { text-wrap: pretty; }
.t-job__unsent { margin: 0; text-wrap: pretty; }

/* ---------- K-20 (A2b) the completed job: the linen stage (shared linenStage + tagRail) ends just under the tags ---------- */
.t-job .linen-stage { padding-bottom: var(--space-8); }
.t-job .linen-stage .tag-rail { padding-bottom: var(--space-20); }
.t-job .linen-stage .tag-rail--slide { padding-bottom: var(--space-16); }
.t-job__payout .t-job__payout-amt { margin-top: var(--space-4); }
.t-job__payout-state .info-btn { margin-block: calc(-1 * var(--space-12)); margin-left: calc(-1 * var(--space-8)); color: var(--neutral-700); }
.t-job__payout .t-job__payout-err { margin-top: var(--space-4); text-wrap: pretty; }
.t-job__payout-fix { margin-top: var(--rhythm-group); }
.t-job__payout-rows { margin-top: var(--rhythm-group); padding-top: var(--space-4); box-shadow: inset 0 1px 0 var(--neutral-200); }
.t-job__payout + .sec { margin-top: var(--rhythm-section); }
/* Sarah's rating, one flat row: no box, no heading — only once she has rated */
.t-job__rev { display: flex; flex-direction: column; gap: var(--space-4); margin-top: var(--rhythm-group); }
.t-job__rev-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-4) var(--space-8); }
.t-job__rev-by { color: var(--neutral-700); white-space: nowrap; }
.t-job__rev-quote { color: var(--ink); text-wrap: pretty; }
/* the figure settles after the tags; her rating lands (stars one by one, then her line); a failed payout never moves */
@media (prefers-reduced-motion: no-preference) {
  @keyframes t-job-count { from { opacity: 0; transform: translateY(var(--space-8)); } to { opacity: 1; transform: none; } }
  @keyframes t-job-star { 0% { transform: scale(0.6); opacity: 0; } 60% { transform: scale(1.15); opacity: 1; } 100% { transform: none; opacity: 1; } }
  html:not(.is-test) .t-job__payout--live .t-job__payout-amt { animation: t-job-count 500ms var(--ease-out) 1000ms both; }
  html:not(.is-test) .t-job__rev .stars__star { display: inline-block; animation: t-job-star 420ms var(--ease-out) 1200ms both; }
  html:not(.is-test) .t-job__rev .stars__star:nth-child(2) { animation-delay: 1280ms; }
  html:not(.is-test) .t-job__rev .stars__star:nth-child(3) { animation-delay: 1360ms; }
  html:not(.is-test) .t-job__rev .stars__star:nth-child(4) { animation-delay: 1440ms; }
  html:not(.is-test) .t-job__rev .stars__star:nth-child(5) { animation-delay: 1520ms; }
  html:not(.is-test) .t-job__rev-quote { animation: t-job-count 500ms var(--ease-out) 1600ms both; }
}
/* Study-1 A3: the handoff notes under the header (countdown, unclaimed capture); K-37: the Delivered sheet is gone */
.t-job__handoff { display: flex; flex-direction: column; gap: var(--space-12); }
/* K-40: only Sarah sets the handoff time — the line and its Message link under the place block */
.t-job__only { margin: var(--rhythm-group) 0 0; text-wrap: pretty; }
.t-job__only .text-link { display: inline-flex; align-items: center; min-height: 44px; vertical-align: middle; }
.t-job-sheet__actions .text-link { align-self: center; }
/* Study-1 B1: the edit waiting on Sarah (her reason, the photo) */
.t-job__edit-photo { margin-top: var(--rhythm-group); }
