/* ==================================================================
   DASHBOARDS CSS — v1.45.9
   ------------------------------------------------------------------
   Manager/Admin Dashboard (rework) + Worker Today (unchanged).
   Scoped under [data-new-ui]. Reuses shared components from
   new-ui-components.css. Manager section rebuilt to match locked
   file 01 with Phil's signed-off amendments — see
   design-lock-amendments.md and dashboard-manager.js header.

   Colour hex values in the Manager section are taken VERBATIM from
   file 01 rather than tokens, per Q3 sign-off. Tokens are used
   wherever they match. Every hardcoded value is commented with
   "(file 01)" so future rework can cross-reference.
   ================================================================== */


/* ==================================================================
   MANAGER DASHBOARD
   ================================================================== */

/* ---- Page container --------------------------------------------- */
[data-new-ui] .nu-mgr-page {
  display: flex; flex-direction: column;
  gap: 12px;
}

/* ---- Context (greeting + subtitle) ------------------------------ */
[data-new-ui] .nu-mgr-context {
  margin: 0 2px 2px;
}
[data-new-ui] .nu-mgr-greet {
  margin: 0;
  font-size: 30px;                                /* file 01 */
  letter-spacing: -0.028em;                       /* file 01 */
  font-weight: var(--nu-t-weight-black);
  color: var(--nu-c-text-primary);
  line-height: 1.15;
}
[data-new-ui] .nu-mgr-sub {
  margin: 6px 0 0;
  color: #475f7a;                                 /* file 01 */  /* 4j: was #58708d */
  font-size: var(--nu-t-size-md);
  font-weight: var(--nu-t-weight-bold);
}

/* ---- Action row (5 tiles) --------------------------------------- */
/* Grid per file 01: four coloured tiles + one light "View Schedule".
   Icons sit in a 32px slot on the left, text stacks on the right. */
[data-new-ui] .nu-mgr-actions {
  display: grid;
  grid-template-columns: repeat(4, 1fr) 1fr;      /* file 01 */
  gap: 12px;
}
[data-new-ui] .nu-mgr-tile {
  min-height: 68px;                               /* file 01 */
  border-radius: 5px;                             /* file 01 */
  box-shadow: 0 6px 16px rgba(8,32,51,.10);       /* file 01 */
  padding: 10px 14px;                             /* file 01 */
  display: flex; align-items: center; gap: 12px;
  text-decoration: none; color: #fff;
  border: 0;
  font-family: var(--nu-t-family);
  cursor: pointer;
  transition: filter .15s, transform .15s;
}
[data-new-ui] .nu-mgr-tile:hover  { filter: brightness(1.06); }
[data-new-ui] .nu-mgr-tile:active { transform: translateY(1px); }

[data-new-ui] .nu-mgr-tile-icon {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  flex: none;
}
[data-new-ui] .nu-mgr-tile-icon .nu-icon {
  width: 22px; height: 22px;
  stroke: currentColor; stroke-width: 2.25;       /* file 01 */
  fill: none; stroke-linecap: round; stroke-linejoin: round;
}
[data-new-ui] .nu-mgr-tile-text {
  display: flex; flex-direction: column; min-width: 0;
}
[data-new-ui] .nu-mgr-tile-text strong {
  display: block;
  font-size: 15px;                                /* file 01 */
  font-weight: var(--nu-t-weight-black);
  letter-spacing: -0.01em;                        /* file 01 */
}
[data-new-ui] .nu-mgr-tile-text span {
  display: block; margin-top: 2px;
  font-size: 13px;                                /* file 01 */  /* 4j: was 11px */
  font-weight: var(--nu-t-weight-semibold);
  opacity: 0.98;
}

/* Colour variants — hex from file 01 verbatim */
[data-new-ui] .nu-mgr-t-green  { background: #10ad7b; }  /* file 01 */
[data-new-ui] .nu-mgr-t-blue   { background: #146fe6; }  /* file 01 */
[data-new-ui] .nu-mgr-t-purple { background: #6b2bcf; }  /* file 01 */
[data-new-ui] .nu-mgr-t-slate  { background: #274f6b; }  /* file 01 */
[data-new-ui] .nu-mgr-t-light  {
  background: #fff;                               /* file 01 */
  color: #116fe7;                                 /* file 01 */
  border: 1px solid #ccdae7;                      /* file 01 */
}
[data-new-ui] .nu-mgr-t-light .nu-mgr-tile-icon { color: #116fe7; }

/* ---- KPI row ---------------------------------------------------- */
[data-new-ui] .nu-mgr-kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);          /* file 01 */
  gap: 12px;
}
[data-new-ui] .nu-mgr-kpi {
  padding: 14px 15px;                             /* file 01 */
  min-height: 118px;                              /* file 01 */
  display: flex; flex-direction: column;
}
[data-new-ui] .nu-mgr-kpi-head {
  display: flex; align-items: center; justify-content: space-between;
}
[data-new-ui] .nu-mgr-kpi-label {
  font-size: 13px;                                /* file 01 */
  font-weight: var(--nu-t-weight-black);
  letter-spacing: -0.005em;                       /* file 01 */
  display: inline-flex; align-items: center;
  color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-mgr-kpi-icon {
  display: inline-flex; align-items: center; justify-content: center;
  margin-right: 6px;                              /* file 01 */
  vertical-align: -4px;                           /* file 01 */
}
[data-new-ui] .nu-mgr-kpi-icon .nu-icon {
  width: 18px; height: 18px;
  stroke: currentColor; stroke-width: 2;
  fill: none; stroke-linecap: round; stroke-linejoin: round;
}
[data-new-ui] .nu-mgr-kpi-view {
  font-size: 12px;                                /* file 01 */  /* 4j: was 10px */
  color: var(--nu-c-blue);
  font-weight: var(--nu-t-weight-bold);
  text-decoration: none;
}
[data-new-ui] .nu-mgr-kpi-view:hover { text-decoration: underline; }

[data-new-ui] .nu-mgr-kpi-value {
  font-size: 31px;                                /* file 01 */
  font-weight: var(--nu-t-weight-black);
  margin-top: 8px;                                /* file 01 */
  letter-spacing: -0.02em;                        /* file 01 */
  line-height: 1.05;
  color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-mgr-kpi-meta {
  font-size: 13px;                                /* file 01 */  /* 4j: was 11px */
  color: #475f7a;                                 /* file 01 */  /* 4j: was #58708d */
  font-weight: var(--nu-t-weight-semibold);
  margin-top: 3px;                                /* file 01 */
}

/* ---- Two-column rows (uniformity) ------------------------------- */
/* Grid stretches children by default → cards in same row match
   height automatically. Cards inside .nu-mgr-col fill the height
   via flex: 1. */
[data-new-ui] .nu-mgr-two {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 12px;
}
[data-new-ui] .nu-mgr-col {
  display: flex; flex-direction: column; min-width: 0;
}
[data-new-ui] .nu-mgr-col > .nu-mgr-section { flex: 1; }

/* ---- Section card (shared shell for every dashboard section) ---- */
[data-new-ui] .nu-mgr-section {
  padding: 14px 16px;                             /* file 01 */
  background: var(--nu-c-surface-card);
  border: 1px solid var(--nu-c-border-default);
  border-radius: 5px;                             /* file 01 */
  box-shadow: 0 8px 24px rgba(8,32,51,.06);       /* file 01 */
  display: flex; flex-direction: column;
}
[data-new-ui] .nu-mgr-cardhead {
  display: flex; align-items: center; justify-content: space-between;
  border-bottom: 1px solid var(--nu-c-border-default);
  padding-bottom: 9px;                            /* file 01 */
  margin-bottom: 2px;                             /* file 01 */
}
[data-new-ui] .nu-mgr-cardtitle {
  font-size: 15px;                                /* file 01 */
  font-weight: var(--nu-t-weight-black);
  letter-spacing: -0.008em;                       /* file 01 */
  color: var(--nu-c-text-primary);
  display: inline-flex; align-items: center; gap: 8px;
}
[data-new-ui] .nu-mgr-cardtitle-icon {   /* v1.45.41: plain dark line icon (01 PNG) — was a pale blue square */
  display: inline-flex; align-items: center; justify-content: center;
  width: 23px; height: 23px;
  color: #132e56;
}
[data-new-ui] .nu-mgr-cardtitle-icon .nu-icon { width: 20px; height: 20px; stroke-width: 1.8; }

[data-new-ui] .nu-mgr-viewall {
  font-size: 12px;                                /* file 01 */  /* 4j: was 10px */
  color: var(--nu-c-blue);
  font-weight: var(--nu-t-weight-bold);
  text-decoration: none;
  border: 0; background: transparent;
  cursor: pointer;
}
[data-new-ui] .nu-mgr-viewall:hover { text-decoration: underline; }

[data-new-ui] .nu-mgr-cardbody {
  flex: 1;
  display: flex; flex-direction: column;
}

[data-new-ui] .nu-mgr-empty {
  padding: 18px 0;
  color: var(--nu-c-text-muted);
  font-size: var(--nu-t-size-md);
  font-style: italic;
}

/* ---- Recent Jobs table ----------------------------------------- */
/* 5 columns: Job Address · Client · Status · Start Date · Team.
   JOB# column dropped per Phil to make room for Team. */
[data-new-ui] .nu-mgr-tbl-jobs .nu-mgr-tbl-head,
[data-new-ui] .nu-mgr-tbl-jobs .nu-mgr-tbl-row {
  display: grid;
  grid-template-columns:
    minmax(0, 1.6fr)   /* address */
    minmax(0, 1fr)     /* client */
    minmax(78px, 0.9fr) /* status */
    minmax(72px, 0.7fr) /* start date */
    minmax(120px, 1fr); /* team */
  gap: 10px;
  align-items: center;
}
[data-new-ui] .nu-mgr-tbl-head {
  padding: 8px 0;                                 /* file 01 vibe */
  border-bottom: 1px solid var(--nu-c-border-default);
  color: var(--nu-c-text-muted);
  font-size: var(--nu-t-size-sm);
  font-weight: var(--nu-t-weight-black);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
[data-new-ui] .nu-mgr-tbl-row {
  padding: 11px 0;
  border-bottom: 1px solid #ebf0f4;
  text-decoration: none;
  color: var(--nu-c-text-primary);
  transition: background 0.1s;
}
[data-new-ui] .nu-mgr-tbl-row:hover { background: #f8fbfd; }
[data-new-ui] .nu-mgr-tbl-row:last-child { border-bottom: 0; }

[data-new-ui] .nu-mgr-tbl-addr strong {
  display: block;
  font-size: var(--nu-t-size-md);
  font-weight: var(--nu-t-weight-heavy);
  color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-mgr-tbl-addr span {
  display: block;
  font-size: var(--nu-t-size-sm);
  color: var(--nu-c-text-muted);
  margin-top: 2px;
}
[data-new-ui] .nu-mgr-tbl-client {
  font-size: var(--nu-t-size-md);
  color: var(--nu-c-text-primary);
  font-weight: var(--nu-t-weight-bold);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
[data-new-ui] .nu-mgr-tbl-date {
  font-size: var(--nu-t-size-sm);
  color: #4a627a;
  font-weight: var(--nu-t-weight-bold);
}
[data-new-ui] .nu-mgr-tbl-team { min-width: 0; }

/* ---- My Tasks (right of Recent Jobs) --------------------------- */
[data-new-ui] .nu-mgr-mytasks {
  display: flex; flex-direction: column;
}
[data-new-ui] .nu-mgr-mytask {
  display: grid;
  grid-template-columns: 22px 1fr auto;
  gap: 10px; align-items: center;
  padding: 11px 0;
  border-bottom: 1px solid #ebf0f4;
}
[data-new-ui] .nu-mgr-mytask:last-child { border-bottom: 0; }
[data-new-ui] .nu-mgr-mytask-name strong {
  display: block;
  font-size: var(--nu-t-size-md);
  font-weight: var(--nu-t-weight-heavy);
  color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-mgr-mytask-name span {
  display: block;
  font-size: var(--nu-t-size-sm);
  color: var(--nu-c-text-muted);
  margin-top: 2px;
}

/* ---- Donuts (Jobs by Status / Tasks by Priority) --------------- */
[data-new-ui] .nu-mgr-donut-wrap {
  display: flex; align-items: center; gap: 16px;
  padding: 6px 0;
}
[data-new-ui] .nu-mgr-donut { width: 140px; height: 140px; flex: none; }
[data-new-ui] .nu-mgr-donut-value {
  font-size: 20px; font-weight: var(--nu-t-weight-black);
  fill: var(--nu-c-text-primary);
}
[data-new-ui] .nu-mgr-donut-label {
  font-size: 10px; font-weight: var(--nu-t-weight-heavy);  /* 4j: was 8px */
  fill: var(--nu-c-text-muted);
  text-transform: uppercase; letter-spacing: 0.1em;
}
[data-new-ui] .nu-mgr-legend {
  flex: 1;
  display: flex; flex-direction: column; gap: 8px;
}
[data-new-ui] .nu-mgr-legend-row {
  display: grid; grid-template-columns: 12px 1fr auto;
  gap: 10px; align-items: center;
  font-size: var(--nu-t-size-md);
}
[data-new-ui] .nu-mgr-legend-dot {
  width: 12px; height: 12px; border-radius: 50%;
  background: var(--nu-tone-ring);
}
[data-new-ui] .nu-mgr-legend-label {
  color: var(--nu-c-text-primary);
  font-weight: var(--nu-t-weight-heavy);
}
[data-new-ui] .nu-mgr-legend-count {
  font-weight: var(--nu-t-weight-black);
  color: var(--nu-c-text-primary);
}

/* ---- Upcoming Schedule ---------------------------------------- */
/* Row: Time · Title/sub · Status · Team.
   Status moved LEFT of Team per Phil (was tucked far right). */
[data-new-ui] .nu-mgr-sched { display: flex; flex-direction: column; }
[data-new-ui] .nu-mgr-sched-row {
  display: grid;
  grid-template-columns:
    80px            /* time — file 01 */
    minmax(0, 1fr)  /* title/sub */
    auto            /* status pill */
    minmax(120px, auto); /* team */
  gap: 10px; align-items: center;   /* file 01 */
  padding: 9px 0;                   /* file 01 */
  border-bottom: 1px solid #ebf0f4;
  text-decoration: none;
  color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-mgr-sched-row:last-child { border-bottom: 0; }
[data-new-ui] .nu-mgr-sched-row:hover { background: #f8fbfd; }
[data-new-ui] .nu-mgr-sched-time {
  font-size: var(--nu-t-size-sm);
  color: var(--nu-c-text-muted);  /* 4j follow-up (Phil 24 Sep): was #607995, missed in v1.45.10 */
  font-weight: var(--nu-t-weight-heavy);
}
[data-new-ui] .nu-mgr-sched-title strong {
  display: block;
  font-size: var(--nu-t-size-sm);
  font-weight: var(--nu-t-weight-black);
  color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-mgr-sched-title span {
  display: block;
  font-size: var(--nu-t-size-sm);  /* 4j follow-up: 13px to match other sub-lines (was 9px, then 11px) */
  color: var(--nu-c-text-muted);   /* 4j: was #58708d */
  font-weight: var(--nu-t-weight-semibold);
  margin-top: 2px;
}
[data-new-ui] .nu-mgr-sched-status { display: flex; justify-content: flex-end; }

/* ---- Recent Activity feed ------------------------------------- */
[data-new-ui] .nu-mgr-act-feed { display: flex; flex-direction: column; }
[data-new-ui] .nu-mgr-act-row {
  display: grid;
  grid-template-columns: 28px 1fr auto;
  gap: 10px; align-items: center;
  padding: 9px 0;
  border-bottom: 1px solid #ebf0f4;
  font-size: 12px;                                /* file 01 */  /* 4j: was 10px */
}
[data-new-ui] .nu-mgr-act-row:last-child { border-bottom: 0; }
[data-new-ui] .nu-mgr-act-icon {
  width: 28px; height: 28px;
  border-radius: 7px;                             /* file 01 */
  display: grid; place-items: center;
  background: var(--nu-tone-ring);
  color: #fff;
}
[data-new-ui] .nu-mgr-act-icon .nu-icon { width: 15px; height: 15px; stroke-width: 2; }
[data-new-ui] .nu-mgr-act-body {
  font-size: 13px;  /* 4j: was 11px */
  color: var(--nu-c-text-primary);
  font-weight: var(--nu-t-weight-semibold);
}
[data-new-ui] .nu-mgr-act-body strong {
  font-weight: var(--nu-t-weight-heavy);
}
[data-new-ui] .nu-mgr-act-when {
  font-size: 11px;                                 /* file 01 */  /* 4j: was 9px */
  color: #475f7a;  /* 4j: was #58708d */
  font-weight: var(--nu-t-weight-semibold);
}

/* ---- Overdue Items (LEFT of row 4, swapped from shipped) ------- */
[data-new-ui] .nu-mgr-overdue { display: flex; flex-direction: column; }
[data-new-ui] .nu-mgr-overdue-row {
  display: grid;
  grid-template-columns: 22px 1fr auto;
  gap: 10px; align-items: center;
  padding: 11px 0;
  border-bottom: 1px solid #ebf0f4;
}
[data-new-ui] .nu-mgr-overdue-row:last-child { border-bottom: 0; }
[data-new-ui] .nu-mgr-overdue-label {
  font-size: var(--nu-t-size-md);
  color: var(--nu-c-text-primary);
  font-weight: var(--nu-t-weight-heavy);
}
[data-new-ui] .nu-mgr-overdue-days {
  font-size: var(--nu-t-size-sm);
  color: var(--nu-c-red);
  font-weight: var(--nu-t-weight-black);
}

/* ---- Quick Links (RIGHT of row 4, swapped from shipped) -------- */
/* 3-col grid, 6 tiles per file 01 (1.35fr slot in file 01's
   bottom-grid; here it fills the 1fr col of nu-mgr-two). */
[data-new-ui] .nu-mgr-qlinks {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: 6px;
}
[data-new-ui] .nu-mgr-qlink {
  border: 1px solid #dfe8f0;                      /* file 01 */
  border-radius: 5px;                             /* file 01 */
  padding: 10px;                                  /* file 01 */
  min-height: 74px;                               /* file 01 */
  display: grid;
  grid-template-columns: 28px 1fr;                /* file 01 */
  grid-template-rows: auto auto;
  column-gap: 8px;
  align-content: center;
  text-decoration: none;
  color: var(--nu-c-text-primary);
  transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s;
}
[data-new-ui] .nu-mgr-qlink:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 14px rgba(8,32,51,.07);       /* file 01 */
  border-color: #c8d8e6;                          /* file 01 */
}
[data-new-ui] .nu-mgr-qlink-icon {
  grid-row: 1 / span 2;
  align-self: center;
  width: 28px; height: 28px;
  display: grid; place-items: center;
  color: #123a61;                                 /* file 01 */
}
[data-new-ui] .nu-mgr-qlink-icon .nu-icon {
  width: 22px; height: 22px;                      /* file 01 */
  stroke-width: 2.15;                             /* file 01 */
}
[data-new-ui] .nu-mgr-qlink-label strong {
  display: block;
  font-size: 13px;                                /* file 01 */  /* 4j: was 11px */
  font-weight: var(--nu-t-weight-black);
  color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-mgr-qlink-label span {
  display: block; margin-top: 4px;
  color: #475f7a;                                 /* file 01 */  /* 4j: was #58708d */
  font-size: 11px;                                 /* file 01 */  /* 4j: was 9px */
  font-weight: var(--nu-t-weight-semibold);
}


/* ==================================================================
   WORKER TODAY DASHBOARD — v1.45.6 (unchanged this pass)
   Kept behind original class names for backwards compatibility.
   Rework will happen in its own pass when Worker Today is reviewed.
   ================================================================== */

[data-new-ui] .nu-wrk-hero {
  display: grid; grid-template-columns: 1fr auto; gap: 16px; align-items: end;
  margin-bottom: 14px;
}
[data-new-ui] .nu-wrk-greet {
  margin: 0; font-size: 28px; line-height: 1.15;
  font-weight: var(--nu-t-weight-black);
  letter-spacing: var(--nu-t-ls-tight);
  color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-wrk-sub {
  margin: 4px 0 0; color: var(--nu-c-text-muted);
  font-size: var(--nu-t-size-lg);
}
[data-new-ui] .nu-wrk-datebox { text-align: right; }
[data-new-ui] .nu-wrk-datebox strong {
  display: block; font-size: var(--nu-t-size-lg);
  font-weight: var(--nu-t-weight-heavy); color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-wrk-datebox span {
  display: block; font-size: var(--nu-t-size-md);
  color: var(--nu-c-text-muted); margin-top: 3px;
}

/* v1.45.41: worker dashboard re-laid from locked file 14 (Phil: "it has to tighten up — it has strayed toward SaaS").
   Layout values from file 14; font sizes keep the 4j bump. */
[data-new-ui] .nu-wrk-kpis {
  display: grid; grid-template-columns: 1fr 1fr 1fr 1.36fr;   /* file 14 */
  gap: 11px; margin-bottom: 14px;                               /* file 14 */
}
[data-new-ui] .nu-card.nu-wrk-kpi {   /* .nu-card (later file) would win otherwise */
  min-height: 78px;                                             /* file 14: 78 px (min — the larger 4j text needs a few px on the ring tile) */
  display: flex; align-items: center; gap: 13px;               /* file 14 */
  padding: 14px 16px;                                           /* file 14 */
}
[data-new-ui] .nu-wrk-kpi-icon {
  width: 29px; height: 29px; flex: none;                        /* file 14 */
  display: grid; place-items: center; color: #0b5fba;           /* file 14 */
}
[data-new-ui] .nu-wrk-ic-green { color: #04b887; }              /* file 14 */
[data-new-ui] .nu-wrk-kpi-icon .nu-icon { width: 23px; height: 23px; stroke-width: 1.8; }   /* file 14 */
[data-new-ui] .nu-wrk-kpi-text { min-width: 0; }
[data-new-ui] .nu-wrk-kpi-label {
  font-size: var(--nu-t-size-md); font-weight: var(--nu-t-weight-heavy);
  color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-wrk-kpi-value {
  margin-top: 4px;                                              /* file 14 */
  font-size: 25px; line-height: 1; font-weight: var(--nu-t-weight-black);   /* file 14 */
  color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-wrk-kpi-sub {
  margin-top: 3px;                                              /* file 14 */
  font-size: var(--nu-t-size-xs); color: var(--nu-c-text-muted);   /* 4j: file 14 was 10px */
  font-weight: var(--nu-t-weight-semibold);
}
[data-new-ui] .nu-wrk-kpi-sub-red { color: var(--nu-c-red); }

[data-new-ui] .nu-card.nu-wrk-kpi-ring { gap: 16px; padding: 10px 15px; }   /* file 14 */
[data-new-ui] .nu-wrk-ring { width: 66px; height: 66px; flex: none; }   /* file 14 */
[data-new-ui] .nu-wrk-ring-text {
  font-size: 17px; font-weight: var(--nu-t-weight-black);
  fill: var(--nu-c-text-primary);
}
[data-new-ui] .nu-wrk-ring-info { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; }
[data-new-ui] .nu-wrk-ring-info .nu-pill-c { margin-top: 4px; }

/* file 14: wide left stack, narrow right stack */
[data-new-ui] .nu-wrk-grid {
  display: grid; grid-template-columns: minmax(0, 1.72fr) minmax(330px, .82fr);   /* file 14 */
  gap: 13px; align-items: start;                                                  /* file 14 */
}
[data-new-ui] .nu-wrk-col { display: flex; flex-direction: column; gap: 13px; min-width: 0; }   /* file 14 */

/* card: 47 px head with a line under it, plain line icon */
[data-new-ui] .nu-card.nu-wrk-card { padding: 0; overflow: hidden; }
[data-new-ui] .nu-wrk-cardhead {
  height: 47px; padding: 0 15px;                                /* file 14 */
  display: flex; align-items: center; justify-content: space-between;
  border-bottom: 1px solid var(--nu-c-border-default);
}
[data-new-ui] .nu-wrk-cardtitle {
  display: flex; align-items: center; gap: 10px;                /* file 14 */
  font-size: 16px; font-weight: var(--nu-t-weight-black);       /* file 14 */
  letter-spacing: -.015em; color: var(--nu-c-text-primary);
}
[data-new-ui] .nu-wrk-headico { width: 23px; height: 23px; display: grid; place-items: center; color: #132e56; }   /* file 14 */
[data-new-ui] .nu-wrk-headico .nu-icon { width: 22px; height: 22px; stroke-width: 1.8; }                          /* file 14 */
[data-new-ui] .nu-wrk-cardbody { padding: 0 15px 5px; }         /* file 14 */
[data-new-ui] .nu-wrk-cardbody > .nu-jc-empty { padding: 14px 0; }

/* Today's Schedule — one line per job */
[data-new-ui] .nu-wrk-sched { display: flex; flex-direction: column; }
[data-new-ui] .nu-wrk-sched-row {
  display: grid; grid-template-columns: 65px 18px minmax(0, 1fr) minmax(100px, auto) auto;   /* file 14 (actions 173 px) */
  gap: 9px; align-items: center; min-height: 62px;               /* file 14 */
  padding: 6px 0; border-bottom: 1px solid #e7edf3;              /* file 14 */
}
[data-new-ui] .nu-wrk-sched-row:last-child { border-bottom: 0; }
[data-new-ui] .nu-wrk-sched-time { font-size: var(--nu-t-size-xs); color: #24476e; font-weight: var(--nu-t-weight-semibold); }   /* file 14 */
[data-new-ui] .nu-wrk-sched-dot { width: 12px; height: 12px; border-radius: 50%; margin: auto; background: var(--nu-tone-ring); }   /* file 14 */
[data-new-ui] .nu-wrk-sched-body { min-width: 0; }
[data-new-ui] .nu-wrk-sched-title { font-size: var(--nu-t-size-md); font-weight: var(--nu-t-weight-black); color: var(--nu-c-text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
[data-new-ui] .nu-wrk-sched-sub { font-size: var(--nu-t-size-xs); color: #24476e; margin-top: 2px; }
[data-new-ui] .nu-wrk-sched-addr { margin-top: 2px; font-size: var(--nu-t-size-xs); color: #526d8f; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }   /* file 14 */
[data-new-ui] .nu-wrk-sched-addr .nu-icon { display: inline-block; width: 12px; height: 12px; vertical-align: -2px; margin-right: 3px; }
[data-new-ui] .nu-wrk-sched-crew { display: flex; align-items: center; gap: 6px; font-size: var(--nu-t-size-xs); color: #58708f; white-space: nowrap; }   /* file 14 */
[data-new-ui] .nu-wrk-sched-actions { display: flex; justify-content: flex-end; gap: 8px; }   /* file 14 */

[data-new-ui] .nu-wrk-outline {
  display: inline-flex; align-items: center; justify-content: center;
  height: 30px; padding: 0 12px;
  border: 1px solid var(--nu-c-border-strong);
  border-radius: var(--nu-r-base);
  background: var(--nu-c-surface-card);
  color: #24425f;
  font-size: var(--nu-t-size-sm); font-weight: var(--nu-t-weight-black);
  text-decoration: none;
}
[data-new-ui] .nu-wrk-outline:hover { background: #f8fbfd; }
[data-new-ui] .nu-wrk-filled {
  display: inline-flex; align-items: center; justify-content: center;
  height: 30px; padding: 0 12px;
  border: 0; border-radius: var(--nu-r-base);
  background: var(--nu-c-green); color: #fff;
  font-size: var(--nu-t-size-sm); font-weight: var(--nu-t-weight-black);
  text-decoration: none; cursor: pointer;
  font-family: var(--nu-t-family);
}
[data-new-ui] .nu-wrk-filled:hover { filter: brightness(1.06); }

/* Quick Actions — buttons unchanged (Phil: "the doors / buttons are fine") */
[data-new-ui] .nu-wrk-qa {
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
  padding: 12px 0 8px;                                          /* file 14 */
}
[data-new-ui] .nu-wrk-qa-btn {
  height: 48px;
  border: 0; border-radius: var(--nu-r-base);
  color: #fff;
  font-family: var(--nu-t-family);
  font-size: var(--nu-t-size-md);
  font-weight: var(--nu-t-weight-black);
  cursor: pointer;
  transition: filter .15s;
}
[data-new-ui] .nu-wrk-qa-btn:hover { filter: brightness(1.08); }
[data-new-ui] .nu-wrk-qa-green   { background: var(--nu-c-green); }
[data-new-ui] .nu-wrk-qa-purple  { background: var(--nu-c-purple); }
[data-new-ui] .nu-wrk-qa-amber   { background: var(--nu-c-amber); }
[data-new-ui] .nu-wrk-qa-slate   { background: #32566f; }

/* My Tasks — tick | task with its job under | status (file 14) */
[data-new-ui] .nu-wrk-mytasks { display: flex; flex-direction: column; }
[data-new-ui] .nu-wrk-mytask {
  display: grid; grid-template-columns: 23px minmax(0, 1fr) auto;   /* file 14 */
  gap: 8px; align-items: center; min-height: 37px;                  /* file 14 */
  padding: 4px 0; border-bottom: 1px solid #e8edf2;                 /* file 14 */
}
[data-new-ui] .nu-wrk-mytask:last-child { border-bottom: 0; }
[data-new-ui] .nu-wrk-mytask-text { min-width: 0; }
[data-new-ui] .nu-wrk-mytask-name { font-size: var(--nu-t-size-sm); font-weight: var(--nu-t-weight-heavy); color: var(--nu-c-text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
[data-new-ui] .nu-wrk-mytask-job { font-size: var(--nu-t-size-xs); color: #617895; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Recent Activity — tighter rows inside the worker card (file 14: 29 px) */
[data-new-ui] .nu-wrk-card .nu-mgr-act-row { padding: 5px 0; }
[data-new-ui] .nu-wrk-card .nu-mgr-act-icon { width: 22px; height: 22px; border-radius: 6px; }   /* file 14 */
[data-new-ui] .nu-wrk-card .nu-mgr-act-icon .nu-icon { width: 13px; height: 13px; }

/* My Jobs — card grid (file 14) */
[data-new-ui] .nu-wrk-myjobs {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
  padding: 11px 0 6px;                                          /* file 14 */
}
[data-new-ui] .nu-wrk-myjob {
  border: 1px solid #dce6ef;                                    /* file 14 */
  border-radius: 7px;                                           /* file 14 */
  padding: 11px;                                                /* file 14 */
  display: flex; flex-direction: column; gap: 6px;
  background: #fbfdff;                                          /* file 14 */
  min-width: 0;
}
[data-new-ui] .nu-wrk-myjob-title { font-size: var(--nu-t-size-md); font-weight: var(--nu-t-weight-black); color: var(--nu-c-text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
[data-new-ui] .nu-wrk-myjob-num   { font-size: var(--nu-t-size-xs); color: var(--nu-c-text-muted); font-weight: var(--nu-t-weight-bold); }
[data-new-ui] .nu-wrk-myjob-meta { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
[data-new-ui] .nu-wrk-myjob-addr { font-size: var(--nu-t-size-xs); color: #597391; }
[data-new-ui] .nu-wrk-myjob-today { font-size: var(--nu-t-size-xs); color: var(--nu-c-text-muted); font-weight: var(--nu-t-weight-bold); }
[data-new-ui] .nu-wrk-myjob .nu-wrk-filled { margin-top: 4px; }

/* file 14: below 1050 px one column, right stack side by side; phones stack everything */
@media (max-width: 1199px) {
  [data-new-ui] .nu-wrk-kpis { grid-template-columns: repeat(2, 1fr); }
  [data-new-ui] .nu-wrk-grid { grid-template-columns: 1fr; }
  [data-new-ui] .nu-wrk-myjobs { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
  [data-new-ui] .nu-wrk-kpis { grid-template-columns: 1fr 1fr; }
  [data-new-ui] .nu-card.nu-wrk-kpi-ring { grid-column: 1 / -1; }
  [data-new-ui] .nu-wrk-myjobs { grid-template-columns: 1fr; }
  [data-new-ui] .nu-wrk-sched-row { grid-template-columns: 58px 14px minmax(0, 1fr); row-gap: 6px; }
  [data-new-ui] .nu-wrk-sched-crew { grid-column: 3; }
  [data-new-ui] .nu-wrk-sched-actions { grid-column: 3; justify-content: flex-start; }
}

/* ==================================================================
   RESPONSIVE
   ================================================================== */
@media (max-width: 1199px) {
  [data-new-ui] .nu-mgr-kpis { grid-template-columns: repeat(2, 1fr); }
  [data-new-ui] .nu-mgr-two { grid-template-columns: 1fr; }
  [data-new-ui] .nu-mgr-actions { grid-template-columns: repeat(2, 1fr); }
  [data-new-ui] .nu-mgr-qlinks { grid-template-columns: repeat(3, 1fr); }
  [data-new-ui] .nu-wrk-myjobs { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
  [data-new-ui] .nu-mgr-kpis { grid-template-columns: 1fr 1fr; }
  [data-new-ui] .nu-mgr-actions { grid-template-columns: 1fr; }
  [data-new-ui] .nu-mgr-qlinks { grid-template-columns: repeat(2, 1fr); }
  [data-new-ui] .nu-wrk-myjobs { grid-template-columns: 1fr; }
  /* Collapse Recent Jobs to essential 3 cols on phone */
  [data-new-ui] .nu-mgr-tbl-jobs .nu-mgr-tbl-head,
  [data-new-ui] .nu-mgr-tbl-jobs .nu-mgr-tbl-row {
    grid-template-columns: minmax(0, 1.5fr) auto minmax(90px, auto);
  }
  [data-new-ui] .nu-mgr-tbl-jobs .nu-mgr-tbl-head span:nth-child(2),
  [data-new-ui] .nu-mgr-tbl-jobs .nu-mgr-tbl-row  .nu-mgr-tbl-client,
  [data-new-ui] .nu-mgr-tbl-jobs .nu-mgr-tbl-head span:nth-child(4),
  [data-new-ui] .nu-mgr-tbl-jobs .nu-mgr-tbl-row  .nu-mgr-tbl-date { display: none; }
  /* Upcoming Schedule: drop time column on phone */
  [data-new-ui] .nu-mgr-sched-row { grid-template-columns: 60px 1fr auto; }
  [data-new-ui] .nu-mgr-sched-row .nu-mgr-sched-team { display: none; }
}

/* v1.45.35: Three-column bottom row per locked file 01 */
[data-new-ui] .nu-mgr-three {
  display: grid; grid-template-columns: 1fr 1fr 1.35fr;
  gap: 12px;
}
@media (max-width: 1199px) { [data-new-ui] .nu-mgr-three { grid-template-columns: 1fr; } }

/* v1.45.38: worker preview is look-only — actions greyed out */
[data-new-ui] .nu-wrk-qa-btn[disabled], [data-new-ui] .nu-wrk-filled[disabled] { opacity: .45; cursor: default; pointer-events: none; }

/* v2.0.4 (Phil): 5 KPI tiles (adds Materials Logged), lined up with the 5 action tiles above; Time / Materials lists */
[data-new-ui] .nu-mgr-kpis { grid-template-columns: repeat(5, minmax(0, 1fr)); }
@media (max-width: 1199px) { [data-new-ui] .nu-mgr-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 767px)  { [data-new-ui] .nu-mgr-kpis { grid-template-columns: 1fr 1fr; } }
[data-new-ui] .nu-log-bar { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
[data-new-ui] .nu-log-sw { display: inline-flex; border: 1px solid var(--nu-c-border-strong); border-radius: var(--nu-r-base); overflow: hidden; }
[data-new-ui] .nu-log-sw button { border: 0; background: #fff; padding: 7px 12px; font: 800 13px var(--nu-t-family); color: #24425e; cursor: pointer; }
[data-new-ui] .nu-log-sw button.nu-active { background: #10233a; color: #fff; }
[data-new-ui] .nu-log-group { display: grid; grid-template-columns: 1fr auto; gap: 4px 10px; padding: 10px 0; border-bottom: 1px solid #e6edf3; }
[data-new-ui] .nu-log-title { font-weight: 900; color: var(--nu-c-text-primary); text-decoration: none; }
[data-new-ui] a.nu-log-title:hover { text-decoration: underline; }
[data-new-ui] .nu-log-total { font-weight: 900; color: #24425e; }
[data-new-ui] .nu-log-group ul { grid-column: 1 / -1; margin: 0; padding: 0; list-style: none; display: grid; gap: 3px; }
[data-new-ui] .nu-log-group li { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; color: #4a6077; font-weight: 600; }
[data-new-ui] .nu-log-empty { color: var(--nu-c-text-muted); font-weight: 600; }

/* v2.0.5 (Phil): worker KPI row = 5 tiles, all the same width (Day Progress was 1.36x, file 14) */
[data-new-ui] .nu-wrk-kpis { grid-template-columns: repeat(5, minmax(0, 1fr)); }
@media (max-width: 1199px) { [data-new-ui] .nu-wrk-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 767px)  { [data-new-ui] .nu-wrk-kpis { grid-template-columns: 1fr 1fr; } }
[data-new-ui] .nu-wrk-ic-slate { color: #274f6b; }
[data-new-ui] .nu-wrk-kpi-tap { cursor: pointer; }
[data-new-ui] .nu-wrk-kpi-tap:hover { border-color: var(--nu-c-border-strong); }

/* ---- v2.0.11 (Phil): worker Quick Actions = doors (manager tile style), at the top; 2 x 2 on phones ---- */
[data-new-ui] .nu-wrk-doors { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
[data-new-ui] .nu-wrk-doors .nu-mgr-tile { width: 100%; text-align: left; }
[data-new-ui] .nu-wrk-doors .nu-mgr-tile[disabled] { opacity: .45; cursor: default; pointer-events: none; }
[data-new-ui] .nu-mgr-t-amber { background: #e6900f; }
@media (max-width: 767px) {
  [data-new-ui] .nu-wrk-doors { grid-template-columns: 1fr 1fr; gap: 10px; }
  [data-new-ui] .nu-wrk-doors .nu-mgr-tile { padding: 10px; gap: 8px; }
  [data-new-ui] .nu-wrk-doors .nu-mgr-tile-text strong { font-size: 14px; }
  [data-new-ui] .nu-wrk-doors .nu-mgr-tile-text span { font-size: 12px; }
}
/* View full schedule / View all: outlined button like Back */
[data-new-ui] .nu-wrk-viewbtn { height: 34px; padding: 0 12px; gap: 6px; text-decoration: none; flex: none; white-space: nowrap; }
[data-new-ui] .nu-wrk-viewbtn .nu-icon { width: 14px; height: 14px; }
[data-new-ui] .nu-wrk-todaylist { display: flex; flex-direction: column; gap: 8px; }
[data-new-ui] .nu-wrk-todaylist .nu-vh-btn, [data-new-ui] a.nu-vh-btn { text-decoration: none; }
