/* Polish round (design review, 5 Nov 2026): loaded after app.css. Values come from tokens.css only.
   Type rule kept: page/hero headline Bold 700; other headings, job titles, pay, counts, buttons SemiBold 600;
   labels/body Regular 400. */

/* ---------- type: Plus Jakarta Sans sets its spaces tight at small sizes ---------- */
:root { --content-max: 80rem; --gutter: 1.5rem; --list-gap: 1.25rem; }
body { word-spacing: 0.06em; }
.meta, .job-meta, .job-co, .chip, .pill, .badge, .btn, .field > span, small, th, td, .crumbs, .popular, .summary { word-spacing: 0.08em; }
h2, h3, h4, .job-title, .results-count, .empty-title, .stat { letter-spacing: 0; }
.hero h1, .page-head h1, .job-head h1 { letter-spacing: -0.01em; }

/* ---------- one button system: primary marigold, secondary navy outline, tertiary text ---------- */
.btn, .btn-secondary, .btn-outline { background: transparent; border: 1.5px solid var(--color-text); color: var(--color-text); }
.btn:hover, .btn-secondary:hover, .btn-outline:hover { background: var(--color-surface-2); border-color: var(--color-text); opacity: 1; }
.btn-primary, .btn-primary:hover { border-color: var(--color-primary); color: var(--color-accent-text); }
.btn-primary { background: var(--color-primary); }
.btn-primary:hover { background: var(--color-primary-hover); border-color: var(--color-primary-hover); }
.btn-ghost, .btn-ghost:hover { border-color: transparent; }
.btn-ghost { background: transparent; color: var(--color-text); }
.btn-ghost:hover { background: var(--color-surface-2); }
.btn-danger { border-color: var(--color-danger); color: var(--color-danger); }
.btn-sm { min-height: 36px; border-width: 1.5px; }
.btn-icon { width: 44px; min-height: 44px; }
.btn:disabled, .btn[disabled] { opacity: 1; cursor: not-allowed; background: var(--color-surface-2); border-color: var(--color-line-strong); color: var(--color-text-muted); }
.btn-primary:disabled { background: var(--color-surface-2); border-color: var(--color-line-strong); color: var(--color-text-muted); }
/* one link style: accent colour, thin underline */
a:not(.btn):not(.filters a):not(.nav-link):not(.side-link):not(.tab):not(.brand):not(.stretch):not(.avatar):not(.popular-chip):not(.strong-link):not(.side-brand):not(.app-top-brand):not(.side-user):not(.stat-card):not(.save-btn) { color: var(--color-accent); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.18em; }
.panel-sub a, .line-list a { color: var(--color-accent) !important; font-weight: var(--weight-regular); }
.link-btn { color: var(--color-accent); text-decoration-thickness: 1px; }

/* ---------- counts: one small pill everywhere ---------- */
.count { display: inline-flex; align-items: center; justify-content: center; min-width: 1.6rem; height: 1.4rem; padding: 0 0.45rem; margin-left: var(--space-2); border-radius: var(--radius-full); background: var(--color-surface-2); color: var(--color-text); font-size: var(--text-xs); line-height: 1; font-weight: var(--weight-semibold); vertical-align: 0.15em; white-space: nowrap; }
.panel-sub .count, .line-list .count { margin-left: 0; }
.filters-btn .count { background: var(--color-text); color: var(--color-surface); margin-left: 0; }

/* ---------- badges: one system (same shape, different colour) ---------- */
.badge { display: inline-flex; align-items: center; height: 1.375rem; padding: 0 var(--space-2); border: 0; border-radius: var(--radius-sm); font-size: var(--text-xs); line-height: 1; font-weight: var(--weight-semibold); vertical-align: middle; white-space: nowrap; }
.badge-featured { background: var(--pill-brand-bg); color: var(--pill-brand-text); }
.badge-urgent { background: var(--pill-bad-bg); color: var(--pill-bad-text); border: 0; }
.job-title .badge { margin-left: var(--space-2); position: relative; top: -1px; }
.job-head-co .badge { margin: 0; }

/* ---------- header ---------- */
.logo { height: 46px; }
.head-row { min-height: 76px; }
.main-nav { align-self: stretch; align-items: center; }
.main-nav .nav-link { min-height: 44px; }
.main-nav .nav-link[aria-current="page"]::after { bottom: 10px; left: var(--space-1); right: var(--space-1); height: 3px; border-radius: var(--radius-full); }
.main-nav .nav-link { position: relative; }
.theme-menu summary.btn-icon { width: 44px; min-height: 44px; }

/* ---------- hero search: one grid with the header and body ---------- */
.hero { padding: var(--space-7) 0 var(--space-6); }
.hero .wrap > h1 { text-align: center; }
.search { max-width: none; margin: var(--space-6) 0 0; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) minmax(0, 1fr) auto; }
.search-field { position: relative; }
.search-field > span { font-weight: var(--weight-medium); color: var(--color-text-muted); }
/* every empty default reads the same: muted (Any role, Anywhere, Any date) */
.search-field select:has(option[value=""]:checked) { color: var(--color-text-muted); }
.search-field select option { color: var(--color-text); }
/* the date field matches the Role select: same field, a quiet calendar icon where the chevron is, "Any date" when empty */
.search-date input[type=date] { appearance: none; -webkit-appearance: none; position: relative; padding-right: 1.5rem !important; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235B6575' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5' width='17' height='15' rx='2'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important; background-position: right 0 center !important; background-size: 1rem !important; }
.search-date input[type=date]::-webkit-calendar-picker-indicator { position: absolute; inset: 0; width: auto; height: auto; opacity: 0; cursor: pointer; }
.search-date input[type=date]::-webkit-inner-spin-button { display: none; }
.search-date:has(input[data-empty]:not(:focus)) input::-webkit-datetime-edit { color: transparent; }
.search-date:has(input[data-empty]:not(:focus))::after { content: attr(data-any); position: absolute; left: var(--space-4); bottom: calc(var(--space-1) + 4px); color: var(--color-text-muted); pointer-events: none; font-size: var(--text-md); line-height: 24px; }
.search .btn-primary { margin-left: var(--space-2); min-width: 9.5rem; }
/* Popular: pills on the same left edge as the search bar */
.popular { max-width: none; margin: var(--space-5) 0 0; display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); line-height: 1.2; }
.popular-label { color: var(--color-band-text); font-weight: var(--weight-semibold); margin-right: var(--space-1); }
.popular-chip { display: inline-flex; align-items: center; min-height: 34px; padding: 0 var(--space-3); border-radius: var(--radius-full); border: 1px solid rgb(250 247 241 / 0.32); color: var(--color-band-text); text-decoration: none; font-size: var(--text-sm); transition: background var(--duration-fast), border-color var(--duration-fast); }
.popular-chip:hover { background: rgb(250 247 241 / 0.1); border-color: rgb(250 247 241 / 0.6); text-decoration: none; }
.popular-chip[aria-current] { background: var(--color-band-text); color: var(--color-band); border-color: var(--color-band-text); font-weight: var(--weight-semibold); }

/* ---------- results: filters | results | employer card ---------- */
.results-layout { grid-template-columns: 15rem minmax(0, 1fr) 17rem; gap: var(--gutter); padding-top: var(--space-6); }
.results-layout.no-aside { grid-template-columns: 15rem minmax(0, 1fr); max-width: var(--content-max); }
.results-aside { padding-top: 0; position: sticky; top: var(--space-5); }
.filters-col { position: sticky; top: var(--space-5); max-height: calc(100vh - 2 * var(--space-5)); overflow-y: auto; scrollbar-width: thin; }
.filters-form { display: flex; flex-direction: column; gap: var(--space-4); }
.filter-group { background: var(--color-surface); border: 1px solid var(--color-line); border-radius: var(--radius-lg); padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-1); }
.filter-group legend { float: left; width: 100%; padding: 0; margin-bottom: var(--space-2); font-size: var(--text-md); font-weight: var(--weight-semibold); }
.filter-group .choice { min-height: 36px; font-size: var(--text-sm); cursor: pointer; gap: var(--space-3); align-items: flex-start; padding: 6px 0; line-height: 1.45; }
.filter-group .choice input { margin-top: 1px; }
.pay-label { font-size: var(--text-sm); margin-bottom: var(--space-1); }
.filter-group .choice > span:nth-child(2) { flex: 1; }
.choice-n { color: var(--color-text-muted); font-size: var(--text-sm); font-variant-numeric: tabular-nums; min-width: 1.5rem; text-align: right; }
.pick-dates { display: none; grid-template-columns: 1fr; gap: var(--space-2); margin-top: var(--space-2); }
.filter-group:has(input[value="dates"]:checked) .pick-dates { display: grid; }
.pick-dates input, .pay-filter input, .pay-filter select { min-height: 40px; font-size: var(--text-sm); }
.pay-filter { display: grid; grid-template-columns: minmax(0, 1fr) 5.5rem; gap: var(--space-2); }
.filter-group .meta { font-size: var(--text-xs); line-height: var(--lh-xs); margin-top: var(--space-2); }
.filters-actions { display: flex; flex-direction: column; gap: var(--space-2); }
.sheet-head, .sheet-scrim { display: none; }
.filters-btn { display: none; }
.js .filters-actions [data-filters-apply] { display: none; }   /* choices apply as you make them */
.results-bar { align-items: center; margin-bottom: var(--space-3); }
.results-tools { gap: var(--space-3); }
.sort { display: inline-flex; align-items: center; gap: var(--space-2); }
.sort > span { color: var(--color-text-muted); }
.sort select { min-height: 40px; width: auto; font-size: var(--text-sm); font-weight: var(--weight-semibold); padding-left: var(--space3, 0.75rem); background-color: var(--color-surface); }
.tools-rule { width: 1px; height: 1.5rem; background: var(--color-line-strong); }
.results-clear { font-size: var(--text-sm); margin: 0 0 var(--space-3); }
.results-note { margin: 0 0 var(--space-3); }

/* ---------- result cards: one anatomy ---------- */
.job-list { gap: var(--list-gap); }
.job-card { grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-5); padding: var(--space-5); align-items: stretch; min-height: 9.25rem; }
.job-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.job-title { font-size: var(--text-lg); line-height: var(--lh-lg); }
.job-co { margin-top: 2px; }
.job-meta { margin-top: var(--space-2); }
.job-side { justify-content: flex-start; min-width: 10rem; gap: var(--space-2); }
.job-side-top { display: flex; align-items: center; gap: var(--space-2); }
.job-pay { font-size: var(--text-lg); line-height: var(--lh-lg); }
.job-ext { margin-top: auto; display: inline-flex; align-items: center; gap: 0.35rem; color: var(--color-accent); font-weight: var(--weight-semibold); font-size: var(--text-sm); }
.job-ext .i { width: 1em; height: 1em; }
.job-card.is-imported .job-meta li:nth-child(2) { color: var(--color-text-muted); }
.chip { background: var(--color-surface-2); max-width: 12rem; overflow: hidden; text-overflow: ellipsis; }
/* the save heart: above the card's stretched link so it gets its own clicks */
.save-form { display: inline-flex; margin: 0; position: relative; z-index: 2; }
.save-btn { position: relative; z-index: 2; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; margin: -8px -8px -8px 0; border: 0; border-radius: var(--radius-full); background: transparent; color: var(--color-text); cursor: pointer; text-decoration: none; }
.save-btn .i { width: 22px; height: 22px; stroke-width: 1.8; }
.save-btn:hover { background: var(--color-surface-2); }
.save-btn[aria-pressed="true"] { color: var(--color-danger); }
.save-btn[aria-pressed="true"] .i { fill: currentColor; }
.save-btn-lg { width: 100%; height: auto; margin: 0; border-radius: var(--radius-md); border: 1.5px solid var(--color-text); min-height: 48px; font-size: var(--text-md); gap: var(--space-2); }
.save-btn-lg .i { width: 20px; height: 20px; }
.save-btn-lg[aria-pressed="true"] { color: var(--color-text); }
.save-btn-lg[aria-pressed="true"] .i { color: var(--color-danger); }
.cta-card { position: static; }
.cta-card .btn-block { margin-top: 0; }

/* ---------- job page ---------- */
.job-page .crumbs { margin-bottom: var(--space-4); }
.job-head-co { gap: var(--space-3); }
.summary { gap: var(--space-3) 0; margin: var(--space-5) 0 0; }
.summary li { padding: 0 var(--space-5); }
.summary-quiet { color: var(--color-text-muted); }
.job-layout { gap: var(--gutter); margin-top: var(--space-6); grid-template-columns: minmax(0, 1fr) 22rem; }
.job-body { gap: var(--gutter); }
.job-body .card, .apply-card { padding: var(--space-5) var(--space-6); }
.job-body .card > h2 + * { margin-top: var(--space-4); }
.job-body .prose { max-width: 70ch; }
.apply-panel { position: sticky; top: var(--space-5); align-self: start; }
.apply-card { gap: var(--space-3); }
.apply-pay { font-size: var(--text-xl); }
.apply-by { margin-top: calc(-1 * var(--space-2)); margin-bottom: var(--space-2); }
.apply-more { display: flex; flex-direction: column; gap: var(--space-2); padding-top: var(--space-3); margin-top: var(--space-1); border-top: 1px solid var(--color-line); }
.apply-more form { display: block; }
.apply-more .save-form { display: flex; }
.apply-more .btn { width: 100%; min-height: 44px; }
/* tables inside a card: no box inside the box */
.card .table-wrap { border: 0; border-radius: 0; overflow-x: auto; }
.shifts-table, .flat-table { table-layout: fixed; }
.shifts-table th, .flat-table th { background: transparent; color: var(--color-text-muted); font-weight: var(--weight-semibold); font-size: var(--text-xs); text-transform: none; border-bottom: 1px solid var(--color-line-strong); padding-top: var(--space-2); padding-bottom: var(--space-2); }
.shifts-table th:first-child, .shifts-table td:first-child, .flat-table th:first-child, .flat-table td:first-child { padding-left: 0; }
.shifts-table th:last-child, .shifts-table td:last-child, .flat-table th:last-child, .flat-table td:last-child { padding-right: 0; }
.shifts-table td { padding-top: var(--space-3); padding-bottom: var(--space-3); font-size: var(--text-md); }
.shifts-table col.col-check { width: 2.5rem; }
.shifts-table col.col-date { width: auto; }
.shifts-table col.col-time { width: 34%; }
.shifts-table col.col-places { width: 22%; }
.shifts-table col.col-rate { width: 22%; }
.shifts-table td.col-check, .shifts-table th.col-check { width: 2.5rem; padding-right: 0; }
/* a full shift stays readable and says so in words, not only in colour */
tr.is-full td { color: var(--color-text); }
tr.is-full td:not(.num) { color: var(--color-text-muted); }
.pill-full { background: var(--pill-quiet-bg); color: var(--color-text); border: 1px solid var(--color-line-strong); }
.tick-list { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-2); max-width: 70ch; }
.tick-list li { display: flex; gap: var(--space-3); align-items: flex-start; line-height: 1.6; }
.tick-list .i { color: var(--color-success); margin-top: 0.2em; }
.claim-line { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--color-line); font-size: var(--text-sm); }

/* ---------- footer ---------- */
.site-foot { margin-top: var(--space-6); padding: var(--space-8) 0 var(--space-6); background: var(--color-surface); border-top: 1px solid var(--color-line); }
.foot-grid { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr)); gap: var(--space-6); }
.foot-brand .meta { margin-top: var(--space-3); max-width: 22rem; }
.foot-brand .logo { height: 40px; }
.foot-title { font-size: var(--text-sm); line-height: var(--lh-sm); font-weight: var(--weight-semibold); margin-bottom: var(--space-3); }
.foot-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-2); }
.site-foot .foot-col a, .site-foot .foot-legal a { color: var(--color-text-muted); text-decoration: none; font-size: var(--text-sm); }
.site-foot .foot-col a:hover, .site-foot .foot-legal a:hover { color: var(--color-text); text-decoration: underline; }
.foot-legal { display: flex; justify-content: space-between; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-7); padding-top: var(--space-5); border-top: 1px solid var(--color-line); color: var(--color-text-muted); font-size: var(--text-sm); }
.foot-legal-links { display: flex; gap: var(--space-5); flex-wrap: wrap; }

/* ---------- employer app ---------- */
.side { padding: var(--space-5) var(--space-4); height: 100vh; height: 100dvh; }
.side-brand .logo { height: 42px; }
.side-rule, .side-foot { margin-left: 0; margin-right: 0; }
.side-rule { margin: var(--space-1) 0; }
.side-foot { margin-top: auto; padding-top: var(--space-4); }
.side-link { padding: 0 var(--space-3) 0 var(--space-4); overflow: hidden; }
.side-link[aria-current="page"]::before { left: 6px; top: 12px; bottom: 12px; width: 3px; border-radius: var(--radius-full); }
.side-user { padding: 0 var(--space-2); }
.side-tools { padding: 0; gap: var(--space-1); }
.side-tools .btn-ghost, .side-tools summary.btn-ghost { color: var(--color-side-text); min-height: 44px; }
.side-tools .btn-ghost:hover { background: var(--color-side-active); }
.app-content, .app-content.is-wide { padding: var(--space-6); }
.app-content.is-wide { max-width: calc(80rem + 2 * var(--space-6)); }
.app-content { max-width: calc(64rem + 2 * var(--space-6)); }
.dash-grid { align-items: start; gap: var(--gutter); margin-bottom: var(--gutter); }
.app-content > .panel + .panel, .app-content > .panel-plain, .app-content > .panel-plain + .panel { margin-top: var(--gutter); }
.panel { padding: var(--space-5) var(--space-5); }
.panel h2 .count, .section-title .count { vertical-align: 0.12em; }
.panel-sub { align-items: center; }
.today-shift + .today-shift { margin-top: var(--space-6); padding-top: var(--space-5); border-top: 1px solid var(--color-line); }
.today-table col:nth-child(1) { width: 34%; }
.today-table td { padding-top: var(--space-2); padding-bottom: var(--space-2); height: 52px; }
.today-table th.actions, .today-table td.actions { text-align: right; width: 12.5rem; }
.today-table td.actions { white-space: nowrap; }
.today-table td.actions > * + * { margin-left: var(--space-2); }
.status-cell { display: inline-flex; align-items: center; gap: var(--space-3); }
.status-cell .tabular { font-variant-numeric: tabular-nums; }
tr.is-late td { background: color-mix(in srgb, var(--pill-bad-bg) 35%, transparent); }
tr.is-late td:first-child { box-shadow: inset 3px 0 0 var(--color-danger); padding-left: var(--space-3) !important; }
.sent-note { display: inline-flex; align-items: center; gap: var(--space-1); color: var(--color-success); font-size: var(--text-sm); font-weight: var(--weight-semibold); }
.sent-note .i { width: 1em; height: 1em; }
.sent-note-quiet { display: block; font-size: var(--text-xs); }
.apps-panel .stat { margin: var(--space-2) 0 var(--space-3); }
.apps-panel .line-list li { min-height: 2.75rem; }
.apps-panel .panel-btn { align-self: flex-start; margin-top: var(--space-4); }
.panel .panel-head-row .row { gap: var(--space-2); }
.sheet-table col.col-num { width: 5.5rem; }
.sheet-table col.col-hours { width: 6.5rem; }
.sheet-table col.col-act { width: 11rem; }
.sheet-table td, .sheet-table th { padding-top: var(--space-3); padding-bottom: var(--space-3); }
.sheet-table td.num, .sheet-table th.num, .today-table .tabular { font-variant-numeric: tabular-nums; text-align: right; }
.sheet-table td.actions { text-align: right; }
.sheet-table td.actions > * + * { margin-left: var(--space-2); }
.section-head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-3); flex-wrap: wrap; margin-bottom: var(--space-3); }
.section-head .section-title { margin: 0; }
.inline-setting { display: flex; align-items: center; gap: var(--space-2); font-size: var(--text-sm); }
.inline-setting select { width: auto; min-height: 36px; font-size: var(--text-sm); }
.field-wide select { max-width: 22rem; }
.company-form .grid-2 { margin-top: var(--space-3); }

/* ---------- worker: today card ---------- */
.today-pills { display: flex; gap: var(--space-2); }
.today-card .btn-xl { min-height: 52px; font-size: var(--text-lg); }
.today-card.is-late::before { background: var(--color-danger); }
.late-note, .early-note { display: flex; gap: var(--space-2); align-items: flex-start; align-self: stretch; margin-top: var(--space-2); font-size: var(--text-sm); line-height: 1.55; }
.late-note { padding: var(--space-3) var(--space-3); border-radius: var(--radius-md); background: var(--pill-bad-bg); color: var(--pill-bad-text); }
.late-note .i, .early-note .i { margin-top: 0.15em; flex: none; }
.early-note { color: var(--color-text-muted); margin-top: var(--space-1); }
.qr-hint { border: 0; padding: 0; margin-top: var(--space-1); color: var(--color-text-muted); font-size: var(--text-sm); gap: var(--space-2); align-items: center; }
.qr-hint .i { width: 1.25em; height: 1.25em; }
.date-block .dow { font-size: var(--text-xs); letter-spacing: 0; color: var(--color-text-muted); }
.date-block span { letter-spacing: 0; }
.saved-page { display: flex; flex-direction: column; gap: var(--space-6); max-width: 56rem; }

/* claim pages */
.claim-summary p + p { margin-top: var(--space-1); }

/* feedback: the edge tab on desktop; on a phone it lives in the top bar instead (never over content) */
.help-tab { min-height: 44px; padding: 0 var(--space-4); font-size: var(--text-sm); display: inline-flex; align-items: center; }
.show-phone { display: none !important; }

/* ---------- tablet ---------- */
@media (max-width: 1180px) {
  .results-layout { grid-template-columns: 14rem minmax(0, 1fr); }
  .results-aside { grid-column: 2; order: 0; position: static; }
  .foot-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .foot-brand { grid-column: 1 / -1; }
}
@media (min-width: 761px) and (max-width: 1100px) { .job-layout { grid-template-columns: minmax(0, 1fr) 19rem; } }

/* ---------- phone ---------- */
@media (max-width: 760px) {
  .show-phone { display: inline-flex !important; }
  .help-tab { display: none !important; }
  :root { --gutter: 1rem; --list-gap: 0.875rem; }
  .logo { height: 36px; }
  .head-row { min-height: 64px; }
  .hero .wrap > h1 { text-align: left; }
  .search { grid-template-columns: minmax(0, 1fr); margin-top: var(--space-4); }
  .search .btn-primary { margin: var(--space-2) 0 var(--space-1); width: 100%; }
  .search-date:has(input[data-empty]:not(:focus))::after { left: var(--space-1); bottom: calc(var(--space-2) + 4px); }
  .popular { gap: var(--space-2); }
  .popular-chip { min-height: 36px; }

  .results-layout, .results-layout.no-aside { grid-template-columns: minmax(0, 1fr); padding-top: var(--space-4); }
  .results-aside { grid-column: auto; order: 3; }
  .results-bar { flex-direction: column; align-items: stretch; }
  .results-tools { justify-content: space-between; flex-wrap: wrap; }
  .tools-rule { display: none; }
  .results-tools > form, .results-tools > a { flex-basis: 100%; }
  .filters-btn { display: inline-flex; min-height: 44px; }
  .sort select { min-height: 44px; }
  /* filters become a bottom sheet */
  .filters-col { position: static; max-height: none; overflow: visible; order: 0; }
  .filter-sheet { position: fixed; left: 0; right: 0; bottom: 0; z-index: 75; max-height: 85vh; max-height: 85dvh; overflow-y: auto; background: var(--color-canvas); border-radius: var(--radius-lg) var(--radius-lg) 0 0; box-shadow: var(--shadow-panel); padding: 0 var(--space-4) calc(var(--space-4) + env(safe-area-inset-bottom)); transform: translateY(105%); transition: transform var(--duration-base); visibility: hidden; }
  .sheet-open .filter-sheet { transform: none; visibility: visible; }
  .sheet-scrim { display: block; position: fixed; inset: 0; z-index: 74; background: var(--color-scrim); opacity: 0; pointer-events: none; transition: opacity var(--duration-base); }
  .sheet-open .sheet-scrim { opacity: 1; pointer-events: auto; }
  .sheet-open { overflow: hidden; }
  .sheet-head { display: flex; align-items: center; justify-content: space-between; position: sticky; top: 0; z-index: 1; background: var(--color-canvas); padding: var(--space-3) 0; margin-bottom: var(--space-1); border-bottom: 1px solid var(--color-line); }
  .sheet-head h2 { font-size: var(--text-lg); }
  .sheet-head .btn-icon { font-size: var(--text-xl); }
  .filters-actions { position: sticky; bottom: calc(-1 * (var(--space-4) + env(safe-area-inset-bottom))); background: var(--color-canvas); padding: var(--space-3) 0 var(--space-4); }
  .js .filters-actions [data-filters-apply] { display: inline-flex; }
  .filter-group .choice { min-height: 44px; }
  .pick-dates { grid-template-columns: 1fr 1fr; }
  .pick-dates input, .pay-filter input, .pay-filter select { min-height: 44px; font-size: var(--text-md); }

  .job-card { grid-template-columns: minmax(0, 1fr); padding: var(--space-4); min-height: 0; gap: var(--space-3); }
  .job-side { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; min-width: 0; gap: var(--space-2) var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--color-line); }
  .job-side-top { order: 0; }
  .job-ext { margin-top: 0; flex-basis: 100%; }
  .save-btn { width: 44px; height: 44px; margin: -10px -10px -10px 0; }
  .job-title { font-size: var(--text-md); }
  .job-title .badge { margin-left: var(--space-1); }

  .job-body .card, .apply-card { padding: var(--space-4); }
  .summary li { padding: 0; }
  .shifts-table col.col-time { width: 36%; }
  .shifts-table col.col-places { width: 26%; }
  .shifts-table td { font-size: var(--text-sm); }

  .site-foot { padding: var(--space-6) 0 var(--space-5); }
  .foot-grid { grid-template-columns: 1fr 1fr; gap: var(--space-5); }
  .foot-legal { margin-top: var(--space-5); flex-direction: column; }

  /* signed-in phone: readable logo + screen title, solid bottom nav that never covers content */
  .app-top { min-height: 60px; gap: var(--space-1); padding: 0 var(--space-3) 0 var(--space-4); }
  .logo-symbol { width: 34px; height: 34px; margin-left: -2px; }
  .app-top-title { font-size: var(--text-lg); margin-left: var(--space-2); }
  .app-top .avatar { margin-left: var(--space-1); }
  .title-in-top .page-head-text > h1 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .title-in-top .page-head-text:not(:has(.page-sub)) { display: contents; }
  .tabbar { background: var(--color-surface); border-top: 1px solid var(--color-line-strong); box-shadow: 0 -4px 16px rgb(19 35 58 / 0.06); padding-bottom: env(safe-area-inset-bottom); }
  .tab { min-height: 60px; padding-top: 6px; color: var(--color-text-muted); }
  .tab[aria-current="page"] { color: var(--color-text); }
  .tab[aria-current="page"]::before { top: 4px; width: 40px; height: 32px; border-radius: var(--radius-full); background: var(--pill-brand-bg); opacity: 0.28; z-index: 0; }
  .tab > * { position: relative; z-index: 1; }
  .tab[aria-current="page"] .i { stroke-width: 2.1; }
  .app-content, .app-content.is-wide { padding: var(--space-4) var(--space-4) calc(60px + var(--space-7) + env(safe-area-inset-bottom)); }
  body[data-role] .site-main { padding-bottom: calc(60px + var(--space-7) + env(safe-area-inset-bottom)); }
  body[data-role] .site-foot { padding-bottom: calc(60px + var(--space-5) + env(safe-area-inset-bottom)); }
  body[data-role] .apply-bar { bottom: calc(60px + env(safe-area-inset-bottom)); }
  .today-card .btn-xl { min-height: 52px; }
  .today-table td.actions { width: auto; }
  .stack-table tr.is-late td:first-child { box-shadow: none; padding-left: 0 !important; }
  .stack-table tr.is-late { box-shadow: inset 3px 0 0 var(--color-danger); background: color-mix(in srgb, var(--pill-bad-bg) 35%, transparent); }
  .stack-table tr.is-late td { background: transparent; }
  .flat-table.stack-table tr { padding-left: 0; padding-right: 0; }
  .flat-table.stack-table tr.is-late { padding-left: var(--space-3); padding-right: var(--space-3); }
  .stack-table td.actions { justify-content: flex-start; }
  .section-head { flex-direction: column; align-items: flex-start; }
}

/* ---------- QA round 2 ---------- */
.summary li { white-space: nowrap; max-width: none; }
.summary li:last-child { padding-right: 0; }
.apply-more { padding-top: var(--space-4); margin-top: var(--space-2); gap: var(--space-3); }
.apply-more .btn, .apply-more .save-btn-lg { font-size: var(--text-md); min-height: 48px; }
.pill-full { background: transparent; border: 0; padding: 0; color: var(--color-text); font-size: var(--text-md); font-weight: var(--weight-semibold); height: auto; }
.pill-full::before { content: ""; display: inline-block; width: 0.55rem; height: 0.55rem; margin-right: 0.4rem; border-radius: var(--radius-full); background: var(--color-text-muted); vertical-align: 0.1em; }
.shifts-table col.col-date { width: 40%; }
.shifts-table col.col-time { width: 30%; }
.shifts-table col.col-places { width: auto; }
.shifts-table th { font-size: var(--text-sm); }
.shifts-table td.tabular, .tabular { font-variant-numeric: tabular-nums; }
.employer-about { align-items: center; }
.employer-about > div { padding-left: 0; border-left: 0; }
.foot-grid { align-items: start; }
.foot-brand .brand { display: inline-flex; margin-top: -6px; }
@media (max-width: 760px) {
  .summary li { white-space: normal; }
  .shifts-table col.col-date { width: auto; }
  .shifts-table col.col-time { width: 34%; }
  .shifts-table col.col-places { width: 28%; }
  .pill-full { font-size: var(--text-sm); }
}

.search-date:not([data-any="Any dates"]):has(input[data-empty]:not(:focus))::after { color: var(--color-text); }
@media (min-width: 1181px) { .results-layout { grid-template-columns: 16rem minmax(0, 1fr) 17rem; } .results-layout.no-aside { grid-template-columns: 16rem minmax(0, 1fr); } }
.filter-group .meta { font-size: 0.8125rem; line-height: 1.45; }
.filters-clear { align-self: flex-start; font-size: var(--text-sm); }
.js .filters-actions:not(:has(.filters-clear)) { display: none; }
p, .cta-card p { text-wrap: pretty; }
@media (min-width: 761px) { .js .filters-actions .filters-clear { display: none; } .js .filters-actions { display: none; } }
@media (max-width: 760px) { .filters-actions { flex-direction: row-reverse; align-items: center; gap: var(--space-4); } .filters-actions .btn-block { flex: 1; } .filters-clear { align-self: center; } }

/* ---------- QA round 3 ---------- */
tr.is-late td { background: transparent; }
tr.is-late td:first-child { box-shadow: none; padding-left: 0 !important; }
.sheet-table col.col-name { width: 11rem; }
.sheet-table .shift-cell > span { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.app-top .btn-icon .i, .app-top summary .i, .head-row .btn-icon .i { width: 22px; height: 22px; }
@media (max-width: 760px) {
  .logo-symbol { width: 46px; height: 46px; margin: 0 -6px 0 -10px; }
  .app-top-title { margin-left: var(--space-1); }
  .stack-table tr.is-late, .stack-table tr.is-late td { background: transparent; box-shadow: none; }
  .flat-table.stack-table tr.is-late { padding-left: 0; padding-right: 0; }
  .stack-table td.actions:empty { display: none; }
  .today-table tr { padding-top: var(--space-2); padding-bottom: var(--space-2); }
  .today-table td.lead-cell { padding-bottom: 0; }
  /* timesheets on a phone: name and shift, then In / Out / Break / Hours in one row, then the actions */
  .sheet-table tr { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--space-2); row-gap: 2px; }
  .sheet-table td.lead-cell, .sheet-table td.shift-cell, .sheet-table td.actions { grid-column: 1 / -1; }
  .sheet-table td.shift-cell::before { display: none; }
  .sheet-table td.shift-cell > span { text-align: left !important; color: var(--color-text-muted); font-size: var(--text-sm); }
  .sheet-table td.num { flex-direction: column; align-items: flex-start; gap: 0; padding-top: var(--space-2); font-variant-numeric: tabular-nums; }
  .sheet-table td.num::before { font-size: var(--text-xs); }
  .sheet-table td.actions { padding-top: var(--space-3); gap: var(--space-2); }
  .sheet-table td.actions .btn { min-height: 44px; }
  .sheet-table td.actions .btn:first-child, .sheet-table td.actions form:first-child { flex: 1; }
  .sheet-table td.actions form:first-child .btn { width: 100%; }
  .panel-head-row .row .btn-ghost { padding-left: 0; }
}
@media (max-width: 760px) {
  .app-top-brand, .logo-symbol { flex: none; }
  /* today's shifts on a phone: name and status on one line, the reminder under them */
  .today-table tr { display: grid !important; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: var(--space-3); }
  .today-table td { padding: 0 !important; height: auto; }
  .today-table td[data-label]::before { display: none; }
  .today-table td.actions { grid-column: 1 / -1; padding-top: var(--space-2) !important; }
  .today-table .status-cell { gap: var(--space-2); }
  .today-table tr.is-late .status-cell .meta { display: none; }
  .sheet-table tr { row-gap: 0; }
  .sheet-table td.actions .btn-ghost { flex: none; }
}
@media (max-width: 760px) { .app-top-brand { display: inline-flex; min-width: 36px; } .logo-symbol { max-width: none; } }

/* ---------- QA round 4 ---------- */
@media (max-width: 760px) {
  .job-layout { grid-template-columns: minmax(0, 1fr); margin-top: var(--space-4); }
  .apply-panel { position: static; order: 2; }
  .employer-about { align-items: flex-start; }
  .job-side-top { flex-basis: 100%; justify-content: space-between; }
  .filters-actions { border-top: 1px solid var(--color-line); box-shadow: 0 -8px 16px rgb(19 35 58 / 0.06); margin: 0 calc(-1 * var(--space-4)); padding-left: var(--space-4); padding-right: var(--space-4); }
}
.saved-page { max-width: none; }
.stat-row { grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); }
.auth { gap: var(--space-4); }
.auth .field small.meta { font-size: var(--text-sm); line-height: var(--lh-sm); }
.claim-page textarea { min-height: 5.5rem; }

/* ---------- QA round 5 ---------- */
:root[data-theme="dark"] .search-date input[type=date] { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23C9D0DA' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5' width='17' height='15' rx='2'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4'/%3E%3C/svg%3E") !important; }
@media (prefers-color-scheme: dark) { :root:not([data-theme]) .search-date input[type=date] { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23C9D0DA' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5' width='17' height='15' rx='2'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4'/%3E%3C/svg%3E") !important; } }
.filter-group input[type=checkbox], .filter-group input[type=radio], .shifts-table input[type=checkbox] { accent-color: var(--color-primary); }
.pill-full { display: inline-flex; align-items: center; height: 1.5rem; padding: 0 var(--space-2); border-radius: var(--radius-sm); background: var(--pill-quiet-bg); border: 1px solid var(--color-line-strong); color: var(--color-text); font-size: var(--text-sm); font-weight: var(--weight-semibold); }
.pill-full::before { content: none; }
.apply-more { gap: var(--space-3); }
@media (max-width: 760px) { .pill-full { font-size: var(--text-xs); height: 1.375rem; } }
.clock-window { padding-top: var(--space-4); border-top: 1px solid var(--color-line); }
.clock-window select { max-width: 22rem; }
.search-date input[type=date] { background-size: 1.125rem !important; }

/* ---------- production QA (5 Nov 2026) ---------- */
/* the fixed Feedback tab (44px, right edge) must not sit on top of cards: keep a clear lane for it on desktop */
@media (min-width: 761px) { body[data-role] .app-content, body[data-role] .app-content.is-wide { padding-right: calc(var(--space-6) + 44px); } }
/* status filters (Admin > Errors) are left out of the global link colour above, which made the selected one teal on
   navy (2.6:1) */
/* a scroll box must contain its absolutely positioned children (the sr-only header text): without this the
   hidden "Pause or resume" label sat 900px to the right and a phone zoomed the whole page out to fit it */
.table-wrap { position: relative; }
.imports-table td.num, .imports-table th.num { text-align: right; font-variant-numeric: tabular-nums; }
.imports-table td:first-child { min-width: 16rem; }
.imports-table .meta { overflow-wrap: anywhere; }
