/* Staff page styles for the monochrome redesign (Phase 3). Every rule is scoped
   to a page class (.page-*) so pages can't affect each other. Uses the colour
   scale and tokens defined in style.css (:root). */

/* ===================== group0-shell ===================== */
/* ---- Shell: floating profile avatar (partials/sidebar.ejs .topbar-avatar) ----
   Desktop: the sidebar's user card already links to /profile, and the fixed
   avatar sat on top of the page-header action buttons, so it is hidden.
   Mobile: shown in the top bar row, just left of the menu toggle, scrolling
   away with the header (absolute, not fixed) so it never covers content. */
@media (min-width: 769px) {
  .topbar-avatar { display: none; }
}
@media (max-width: 768px) {
  .topbar-avatar {
    display: block;
    position: absolute;
    top: 16px;
    right: 70px;              /* 16px gutter + 44px menu toggle + 10px gap */
    width: 40px;
    height: 40px;
    z-index: 5;
    border: 2px solid var(--c600);
    box-shadow: none;
  }
  .topbar-avatar-placeholder { background: var(--c700); color: var(--c200); }
  /* keep the wordmark clear of the avatar + toggle */
  .sidebar .brand-wordmark { max-width: calc(100% - 118px); overflow: hidden; }
  .sidebar .brand-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}

/* ===================== groupA2 ===================== */
/* =====================================================================
   Group A — staff pages (monochrome restyle)
   Pages / scope classes:
     bookings/list.ejs      .page-bookings        (bk-*)
     bookings/details.ejs   .page-booking-detail  (bd-*)
     bookings/form.ejs      .page-booking-form    (bf-*)
     tables/list.ejs        .page-tables          (tb-*)
     menu/edit.ejs          .page-menu-edit       (mn-*)
     calendar.ejs           .page-calendar        (cal-*, FullCalendar theme)
     notifications.ejs      .page-notifications   (nt-*)
     settings.ejs           .page-settings        (st-*)
   All colours come from the c-scale (var(--c50) … var(--c950)).
   ===================================================================== */

/* ---- Shared helpers for this group ---- */
.page-bookings .visually-hidden,
.page-tables .visually-hidden,
.page-menu-edit .visually-hidden,
.page-notifications .visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.page-bookings .card > h2, .page-booking-detail .card h2, .page-booking-form .card > h2,
.page-tables .card h2, .page-menu-edit .card > h2, .page-notifications .card h2, .page-settings .card h2 {
  margin: 0; font-size: 30px; color: var(--c800);
}

/* Status + payment pills on booking pages (mockup: cancelled = struck-through outline;
   unpaid thin outline, deposit c200, paid in full c600, refunded dashed) */
.page-bookings .badge.cancelled, .page-booking-detail .badge.cancelled {
  background: transparent; color: var(--c600); border: 1.5px solid var(--c300); text-decoration: line-through;
}
.page-bookings .badge[class*="payment-"], .page-booking-detail .badge[class*="payment-"] { text-transform: capitalize; }
.page-bookings .badge.payment-unpaid, .page-booking-detail .badge.payment-unpaid {
  background: transparent; color: var(--c700); border: 1px solid var(--c400);
}
.page-bookings .badge.payment-deposit_paid, .page-booking-detail .badge.payment-deposit_paid { background: var(--c200); color: var(--c800); }
.page-bookings .badge.payment-paid_full, .page-booking-detail .badge.payment-paid_full { background: var(--c600); color: var(--c50); }
.page-bookings .badge.payment-refunded, .page-booking-detail .badge.payment-refunded {
  background: var(--c100); color: var(--c700); border: 1px dashed var(--c500);
}

/* =====================================================================
   Bookings list
   ===================================================================== */
.page-bookings .bk-filters {
  background: var(--c50); border: 1px solid var(--c200); border-radius: 22px;
  padding: 20px 22px; margin-bottom: 24px; gap: 16px;
}
.page-bookings .bk-filters .field { min-width: 200px; }
.page-bookings .bk-filters .btn { min-height: 46px; }
.page-bookings .bk-filter-btn { background: var(--c800); border-color: var(--c800); }
.page-bookings .bk-filter-btn:hover { background: var(--c900); border-color: var(--c900); }
.page-bookings .bk-count { margin-left: auto; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.page-bookings .bk-count-num { font-size: 28px; font-weight: 800; line-height: 1; color: var(--c800); font-variant-numeric: tabular-nums; }
.page-bookings .bk-count-label { font-size: 12px; font-weight: 700; color: var(--c600); }

.page-bookings .bk-list-card { padding: 26px 26px 18px; border-radius: 22px; }
.page-bookings .bk-card-head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding-bottom: 12px;
}
.page-bookings .bk-card-head .muted { font-weight: 600; }
.page-bookings .bk-table-wrap { overflow-x: auto; }
.page-bookings .bk-table td { height: 56px; }
.page-bookings .bk-date { font-weight: 600; color: var(--c800); white-space: nowrap; }
.page-bookings .bk-time { font-weight: 800; font-size: 15px; font-variant-numeric: tabular-nums; }
.page-bookings .bk-name {
  font-weight: 700; font-size: 15px; color: var(--c900);
  text-decoration: underline; text-decoration-color: var(--c300); text-underline-offset: 4px;
}
.page-bookings .bk-name:hover { text-decoration-color: var(--c700); }
.page-bookings .bk-party { font-weight: 600; font-size: 15px; }
.page-bookings .bk-tablename { color: var(--c700); }
.page-bookings .bk-deposit { font-size: 12px; font-weight: 600; margin-top: 3px; }

@media (max-width: 768px) {
  .page-bookings .bk-filters { padding: 16px; border-radius: 18px; }
  .page-bookings .bk-filters .field { min-width: 0; }
  .page-bookings .bk-count { margin-left: 0; flex-direction: row; align-items: baseline; gap: 8px; }
  .page-bookings .bk-list-card { padding: 18px; }
  .page-bookings .bk-table-wrap table { display: table; }
}

/* =====================================================================
   Booking detail
   ===================================================================== */
.page-booking-detail .bd-title-row { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; }
.page-booking-detail .bd-title-row .badge { min-height: 28px; }

.page-booking-detail .bd-alert {
  display: flex; align-items: center; flex-wrap: wrap; gap: 14px 18px;
  padding: 18px 20px; margin-bottom: 24px; border-radius: 18px;
  background: var(--c50); border: 1.5px dashed var(--c600);
}
.page-booking-detail .bd-alert-icon {
  width: 44px; height: 44px; flex-shrink: 0; border-radius: 12px;
  background: var(--c200); color: var(--c800); display: flex; align-items: center; justify-content: center;
}
.page-booking-detail .bd-alert-icon svg { width: 22px; height: 22px; }
.page-booking-detail .bd-alert-text { flex: 1; min-width: 220px; display: flex; flex-direction: column; gap: 3px; }
.page-booking-detail .bd-alert-title {
  margin: 0; font-family: var(--font-sans); font-style: normal; font-size: 17px; font-weight: 800; color: var(--c900); line-height: 1.3;
}
.page-booking-detail .bd-alert-sub { margin: 0; font-size: 14px; color: var(--c700); }
.page-booking-detail .bd-alert form { margin: 0; }

.page-booking-detail .bd-top {
  display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 24px; align-items: stretch; margin-bottom: 24px;
}
.page-booking-detail .bd-top--single { grid-template-columns: minmax(0, 1fr); }
.page-booking-detail .bd-side { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.page-booking-detail .bd-card {
  display: flex; flex-direction: column; gap: 16px; margin-bottom: 0; padding: 26px; border-radius: 22px; min-width: 0;
}
.page-booking-detail .bd-side .bd-pay { flex-grow: 1; }

.page-booking-detail .detail-grid { margin: 0; }
.page-booking-detail .detail-grid > div { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.page-booking-detail .detail-grid dd { margin: 0; font-weight: 700; overflow-wrap: anywhere; }
.page-booking-detail .bd-details { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px 20px; }
.page-booking-detail .bd-top--single .bd-details { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.page-booking-detail .bd-notes {
  grid-column: 1 / -1; padding: 14px 16px; border-radius: 14px; background: var(--c100);
}
.page-booking-detail .bd-notes dd { font-weight: 500; line-height: 1.5; }
.page-booking-detail .bd-actions { margin-top: 0; padding-top: 16px; border-top: 1px solid var(--c200); }
.page-booking-detail .bd-actions form { margin: 0; }

.page-booking-detail .bd-admin-only {
  font-family: var(--font-sans); font-style: normal; font-size: 12px; font-weight: 600; color: var(--c600); margin-left: 6px;
}
.page-booking-detail .bd-taken { grid-template-columns: 1fr; gap: 12px; }

/* Dark payment card */
.page-booking-detail .bd-pay h2 { color: var(--c50); }
.page-booking-detail .bd-pay .bd-admin-only { color: var(--c300); }
.page-booking-detail .bd-pay-form { display: flex; flex-direction: column; gap: 14px; flex-grow: 1; }
.page-booking-detail .bd-pay-form .field { margin: 0; }
.page-booking-detail .bd-pay-form label { color: var(--c200); }
.page-booking-detail .bd-pay-form select,
.page-booking-detail .bd-pay-form input { background: var(--c50); border-color: var(--c600); }
.page-booking-detail .bd-pay-form > div:last-child { margin-top: auto; }
.page-booking-detail .bd-pay-form .btn { background: var(--c200); border-color: var(--c200); color: var(--c900); font-weight: 800; }
.page-booking-detail .bd-pay-form .btn:hover { background: var(--c300); border-color: var(--c300); color: var(--c900); }

.page-booking-detail .bd-bottom { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; align-items: stretch; }
.page-booking-detail .bd-bottom .detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 16px; }
.page-booking-detail .bd-label {
  font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--c600); margin-bottom: -8px;
}
.page-booking-detail .music-tags { margin-top: 0; }
.page-booking-detail .music-tag { display: inline-flex; align-items: center; min-height: 28px; padding: 3px 12px; font-weight: 700; color: var(--c800); }
.page-booking-detail .bd-courses td { height: 44px; }
.page-booking-detail .bd-course-num { font-weight: 800; color: var(--c700); }
.page-booking-detail .bd-course-price { font-weight: 700; font-variant-numeric: tabular-nums; }

/* History timeline: newest entry = solid dot, older = outlined */
.page-booking-detail .bd-timeline { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; }
.page-booking-detail .bd-timeline li { position: relative; display: flex; gap: 14px; padding-bottom: 16px; }
.page-booking-detail .bd-timeline li::before {
  content: ""; position: absolute; left: 5px; top: 17px; bottom: 0; width: 2px; background: var(--c200);
}
.page-booking-detail .bd-timeline li:last-child { padding-bottom: 0; }
.page-booking-detail .bd-timeline li:last-child::before { display: none; }
.page-booking-detail .bd-timeline-dot {
  position: relative; width: 12px; height: 12px; flex-shrink: 0; margin-top: 3px; border-radius: 50%;
  background: var(--c50); border: 2px solid var(--c500);
}
.page-booking-detail .bd-timeline li:first-child .bd-timeline-dot { background: var(--c700); border-color: var(--c700); }
.page-booking-detail .bd-timeline-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.page-booking-detail .bd-timeline-at { font-size: 12px; font-weight: 700; color: var(--c600); font-variant-numeric: tabular-nums; }
.page-booking-detail .bd-timeline-event { font-size: 14px; font-weight: 600; line-height: 1.4; color: var(--c900); overflow-wrap: anywhere; }

@media (max-width: 1100px) {
  .page-booking-detail .bd-top { grid-template-columns: minmax(0, 1fr); }
  .page-booking-detail .bd-bottom { grid-template-columns: minmax(0, 1fr); }
  .page-booking-detail .bd-details,
  .page-booking-detail .bd-top--single .bd-details { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 768px) {
  .page-booking-detail .bd-card { padding: 18px; }
  .page-booking-detail .bd-details,
  .page-booking-detail .bd-top--single .bd-details,
  .page-booking-detail .bd-bottom .detail-grid { grid-template-columns: 1fr; }
  .page-booking-detail .bd-alert form, .page-booking-detail .bd-alert .btn { width: 100%; }
  .page-booking-detail .bd-courses { display: table; white-space: normal; }
}

/* =====================================================================
   Booking form (new / edit)
   ===================================================================== */
.page-booking-form .bf-layout {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: start;
}
.page-booking-form .bf-col { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.page-booking-form .bf-card {
  display: flex; flex-direction: column; gap: 16px; margin-bottom: 0; padding: 26px; border-radius: 22px; overflow: visible;
}
.page-booking-form .bf-card .field { margin-bottom: 0; }
.page-booking-form .bf-card .form-grid { align-items: end; }
.page-booking-form .bf-subhead {
  padding-top: 4px; font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--c600);
}
.page-booking-form #foodPriceHint { font-weight: 600; }
.page-booking-form .bf-courses { display: flex; flex-direction: column; gap: 12px; }
.page-booking-form .bf-courses:has(.food-course-row[style*="grid"]) { padding: 16px; border-radius: 16px; background: var(--c100); }
.page-booking-form .food-course-row { margin: 0; padding: 0; background: transparent; border: 0; border-radius: 0; }
.page-booking-form .bf-genres { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px 8px; margin-top: 0; }
.page-booking-form .bf-genres .checkbox-item {
  min-height: 34px; padding: 4px 8px; margin: 0; border-radius: 10px;
  font-size: 13px; line-height: 1.25; font-weight: 600; color: var(--c900); gap: 8px; cursor: pointer;
}
.page-booking-form .bf-genres .checkbox-item:hover { background: var(--c100); }
.page-booking-form .bf-genres .checkbox-item:has(input:checked) { background: var(--c200); font-weight: 800; }
.page-booking-form .bf-genres .checkbox-item input { width: 16px; height: 16px; flex-shrink: 0; margin: 0; }
.page-booking-form .bf-actions { margin-top: 4px; }

@media (max-width: 1100px) {
  .page-booking-form .bf-layout { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 768px) {
  .page-booking-form .bf-card { padding: 18px; }
  .page-booking-form .bf-genres { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 420px) {
  .page-booking-form .bf-genres { grid-template-columns: 1fr; }
}

/* =====================================================================
   Tables
   ===================================================================== */
/* Statuses (mockup): available = light fill, reserved = thin outline, occupied = solid dark */
.page-tables .badge.table-status-available { background: var(--c200); color: var(--c800); border-color: transparent; }
.page-tables .badge.table-status-reserved { background: transparent; color: var(--c700); border: 1.5px solid var(--c400); }
.page-tables .badge.table-status-occupied { background: var(--c700); color: var(--c50); border-color: transparent; }

.page-tables .tb-summary { gap: 10px; }
.page-tables .tb-summary-item {
  display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 16px;
  border-radius: 14px; background: var(--c50); border: 1px solid var(--c200);
}
.page-tables .tb-summary-num { font-size: 22px; font-weight: 800; color: var(--c800); font-variant-numeric: tabular-nums; }

.page-tables .tb-card { display: flex; flex-direction: column; gap: 14px; padding: 26px; border-radius: 22px; }
.page-tables .tb-card-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.page-tables .tb-refresh-note { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--c600); }
.page-tables .tb-refresh-note svg { width: 15px; height: 15px; }
.page-tables .tb-table-wrap { overflow-x: auto; }
.page-tables .tb-table td { height: 48px; padding-top: 6px; padding-bottom: 6px; }
.page-tables .tb-name { font-weight: 700; }
.page-tables .tb-seats { font-weight: 600; font-variant-numeric: tabular-nums; }
.page-tables .tb-area { font-size: 13px; color: var(--c700); }
.page-tables .tb-actions { text-align: right; width: 1%; white-space: nowrap; }
.page-tables .tb-remove { min-height: 32px; }
.page-tables .tb-foot { margin: 0; }

.page-tables .tb-add { display: flex; flex-direction: column; gap: 14px; padding: 26px; border-radius: 22px; }
.page-tables .tb-add h2 { color: var(--c50); }
.page-tables .tb-add-form {
  display: grid; grid-template-columns: minmax(0, 1.2fr) 140px minmax(0, 1.2fr) auto; gap: 16px; align-items: end;
}
.page-tables .tb-add-form .field { margin: 0; }
.page-tables .tb-add-form label { color: var(--c200); }
.page-tables .tb-add-form input { background: var(--c50); border-color: var(--c600); }
.page-tables .tb-add-btn { min-height: 46px; background: var(--c200); border-color: var(--c200); color: var(--c900); font-weight: 800; }
.page-tables .tb-add-btn:hover { background: var(--c300); border-color: var(--c300); color: var(--c900); }

@media (max-width: 900px) {
  .page-tables .tb-add-form { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 768px) {
  .page-tables .tb-summary { width: 100%; }
  .page-tables .tb-summary-item { flex: 1 1 auto; min-height: 42px; padding: 0 12px; }
  .page-tables .tb-card, .page-tables .tb-add { padding: 18px; }
  .page-tables .tb-add-form { grid-template-columns: 1fr; }
  .page-tables .tb-add-btn { width: 100%; }
  .page-tables .tb-table-wrap table { display: table; }
}

/* =====================================================================
   Menu & Events (staff editor)
   ===================================================================== */
.page-menu-edit .mn-card { display: flex; flex-direction: column; gap: 16px; padding: 26px; border-radius: 22px; overflow-x: visible; scroll-margin-top: 20px; }
.page-menu-edit .mn-form { display: flex; flex-direction: column; gap: 18px; }
.page-menu-edit .mn-form .field { margin-bottom: 0; }
.page-menu-edit .mn-section {
  display: flex; flex-direction: column; gap: 14px; margin: 0; padding: 18px; border-radius: 18px; background: var(--c100);
}
.page-menu-edit .mn-section--new { background: transparent; border: 1.5px dashed var(--c400); }
.page-menu-edit .mn-section-field { max-width: 420px; }
.page-menu-edit .mn-section-title {
  font-family: var(--font-serif); font-style: italic; font-weight: 600; font-size: 24px; border-color: var(--c300); padding-top: 6px; padding-bottom: 6px;
}
.page-menu-edit .menu-edit-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; margin-bottom: 0; }
.page-menu-edit .menu-edit-card {
  gap: 10px; padding: 12px; border-radius: 16px; background: var(--c50); border: 1px solid var(--c200); box-shadow: none; min-width: 0;
}
.page-menu-edit .menu-edit-photo,
.page-menu-edit .menu-edit-photo-placeholder { border-radius: 12px; }
.page-menu-edit .menu-edit-photo-placeholder {
  background: var(--c100); border: 1.5px dashed var(--c300); color: var(--c600); font-size: 12px; font-weight: 700;
}
.page-menu-edit .menu-edit-fields { padding: 0; gap: 6px; }
.page-menu-edit .menu-edit-row-inline input:first-child { font-weight: 700; }
.page-menu-edit .menu-edit-label { font-size: 11px; letter-spacing: 0.12em; color: var(--c600); margin: 4px 0 0; }
.page-menu-edit .menu-add-card { border: 1.5px dashed var(--c400); border-radius: 16px; padding: 12px; gap: 8px; justify-content: flex-start; background: transparent; }
.page-menu-edit .menu-add-card-label { font-size: 13px; font-weight: 800; letter-spacing: 0; text-transform: none; color: var(--c700); min-height: 28px; display: flex; align-items: center; margin: 0; }
.page-menu-edit .mn-save-row { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.page-menu-edit .mn-save-row .muted { margin: 0; }

.page-menu-edit .mn-table-wrap { overflow-x: auto; }
.page-menu-edit .mn-events td { height: 56px; }
.page-menu-edit .mn-ev-date { font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-menu-edit .mn-ev-title { font-weight: 700; font-size: 15px; }
.page-menu-edit .mn-ev-desc { color: var(--c700); line-height: 1.4; }
.page-menu-edit .mn-ev-actions { text-align: right; width: 1%; white-space: nowrap; }
.page-menu-edit .mn-add-event { display: flex; flex-direction: column; gap: 14px; padding: 20px; border-radius: 18px; background: var(--c100); }
.page-menu-edit .mn-add-event-title { margin: 0; font-family: var(--font-sans); font-style: normal; font-size: 16px; font-weight: 800; color: var(--c800); }
.page-menu-edit .mn-add-event-grid { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); margin-bottom: 14px; }
.page-menu-edit .mn-add-event-grid .field { margin: 0; }

@media (max-width: 768px) {
  .page-menu-edit .mn-card { padding: 18px; }
  .page-menu-edit .mn-section { padding: 14px; }
  .page-menu-edit .mn-add-event { padding: 16px; }
  .page-menu-edit .mn-add-event-grid { grid-template-columns: 1fr; }
  .page-menu-edit .mn-add-event .btn, .page-menu-edit .mn-save-row .btn { width: 100%; }
}

/* =====================================================================
   Calendar (FullCalendar 6 themed via its CSS custom properties)
   /calendar/api/events tags each event with a status class (ev-confirmed,
   ev-seated, ev-other, ev-gcal) instead of a colour; styled below.
   ===================================================================== */
.page-calendar .cal-legend {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px 22px; margin-bottom: 18px;
  font-size: 13px; font-weight: 600; color: var(--c700);
}
.page-calendar .cal-legend-item { display: inline-flex; align-items: center; gap: 8px; }
.page-calendar .cal-legend-hint { margin-left: auto; color: var(--c600); }
.page-calendar .cal-swatch { display: inline-block; width: 22px; height: 12px; border-radius: 4px; }
.page-calendar .cal-swatch--confirmed { background: var(--c700); }
.page-calendar .cal-swatch--seated { background: var(--c300); }
.page-calendar .cal-swatch--other { background: var(--c100); border: 1px solid var(--c400); }
.page-calendar .cal-swatch--gcal { background: transparent; border: 1px dashed var(--c500); }

.page-calendar .cal-card { padding: 22px 24px 24px; border-radius: 22px; overflow: visible; }
.page-calendar #calendar { background: transparent; border: 0; border-radius: 0; padding: 0; }

.page-calendar .fc {
  --fc-border-color: var(--c200);
  --fc-page-bg-color: var(--c50);
  --fc-neutral-bg-color: var(--c100);
  --fc-neutral-text-color: var(--c600);
  --fc-today-bg-color: var(--c200);
  --fc-highlight-color: hsla(173, 26%, 56%, 0.25);
  --fc-now-indicator-color: var(--c900);
  --fc-event-bg-color: var(--c700);
  --fc-event-border-color: var(--c700);
  --fc-event-text-color: var(--c50);
  --fc-event-selected-overlay-color: hsla(173, 50%, 10%, 0.25);
  --fc-list-event-hover-bg-color: var(--c100);
  --fc-button-text-color: var(--c800);
  --fc-button-bg-color: var(--c50);
  --fc-button-border-color: var(--c300);
  --fc-button-hover-bg-color: var(--c100);
  --fc-button-hover-border-color: var(--c400);
  --fc-button-active-bg-color: var(--c700);
  --fc-button-active-border-color: var(--c700);
  font-family: var(--font-sans);
  color: var(--c900);
}
.page-calendar .fc .fc-toolbar.fc-header-toolbar { margin-bottom: 16px; gap: 12px; flex-wrap: wrap; }
.page-calendar .fc .fc-toolbar-title {
  font-family: var(--font-serif); font-style: italic; font-weight: 600; font-size: 34px; color: var(--c800);
}
.page-calendar .fc .fc-button {
  min-height: 42px; padding: 0 16px; border-width: 1.5px; border-radius: 12px;
  font-family: var(--font-sans); font-size: 14px; font-weight: 700; text-transform: capitalize; box-shadow: none;
}
.page-calendar .fc .fc-button:focus, .page-calendar .fc .fc-button:focus-visible { box-shadow: var(--focus-ring); }
.page-calendar .fc .fc-button-primary:not(:disabled).fc-button-active,
.page-calendar .fc .fc-button-primary:not(:disabled):active { color: var(--c50); }
.page-calendar .fc .fc-button-primary:disabled { background: var(--c200); border-color: var(--c200); color: var(--c700); opacity: 1; }
.page-calendar .fc .fc-button-group > .fc-button:not(:first-child) { margin-left: 4px; }
.page-calendar .fc .fc-button-group > .fc-button { border-radius: 12px; }
.page-calendar .fc .fc-prev-button, .page-calendar .fc .fc-next-button { width: 42px; padding: 0; }

.page-calendar .fc .fc-scrollgrid { border-radius: 16px; overflow: hidden; }
.page-calendar .fc .fc-col-header-cell { background: var(--c100); }
.page-calendar .fc .fc-col-header-cell-cushion {
  padding: 9px 10px; font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--c600);
}
.page-calendar .fc a.fc-col-header-cell-cushion:hover { text-decoration: none; }
.page-calendar .fc .fc-daygrid-day-number { font-size: 12px; font-weight: 800; color: var(--c800); padding: 6px 8px; }
.page-calendar .fc .fc-day-other .fc-daygrid-day-top { opacity: 1; }
.page-calendar .fc .fc-day-other { background: var(--c100); }
.page-calendar .fc .fc-day-other .fc-daygrid-day-number { color: var(--c600); }
.page-calendar .fc .fc-day-today .fc-daygrid-day-number {
  min-width: 24px; height: 24px; margin: 4px; padding: 0 6px; border-radius: 12px;
  display: inline-flex; align-items: center; justify-content: center; background: var(--c800); color: var(--c50);
}
.page-calendar .fc .fc-daygrid-more-link { font-size: 11px; font-weight: 800; color: var(--c700); }
.page-calendar .fc .fc-timegrid-slot-label-cushion,
.page-calendar .fc .fc-timegrid-axis-cushion { font-size: 11px; font-weight: 700; color: var(--c600); }
.page-calendar .fc .fc-popover { background: var(--c50); border-color: var(--c200); border-radius: 14px; box-shadow: var(--shadow-lift); }
.page-calendar .fc .fc-popover-header { background: var(--c100); color: var(--c800); font-weight: 700; }

/* Events as small chips */
.page-calendar .fc .fc-event { font-size: 11px; font-weight: 600; border-radius: 6px; cursor: pointer; }
.page-calendar .fc .fc-event:hover { text-decoration: none; }
.page-calendar .fc .fc-daygrid-dot-event {
  margin: 1px 4px; padding: 2px 6px; background: var(--c700); color: var(--c50); border: 1px solid var(--c700);
}
.page-calendar .fc .fc-daygrid-dot-event:hover { background: var(--c800); }
.page-calendar .fc .fc-daygrid-dot-event .fc-event-time { font-weight: 800; }
.page-calendar .fc .fc-daygrid-dot-event .fc-event-title { font-weight: 600; overflow: hidden; text-overflow: ellipsis; }
.page-calendar .fc .fc-daygrid-event-dot { display: none; }
.page-calendar .fc .fc-v-event .fc-event-main, .page-calendar .fc .fc-h-event .fc-event-main { color: inherit; }

/* Status classes come from /calendar/api/events (classNames). */
/* confirmed = solid c700 */
.page-calendar .fc .fc-event.ev-confirmed { background-color: var(--c700); border-color: var(--c700); color: var(--c50); }
/* seated = c300 fill */
.page-calendar .fc .fc-event.ev-seated { background-color: var(--c300); border-color: var(--c300); color: var(--c900); }
/* other / pending = pale fill + thin outline */
.page-calendar .fc .fc-event.ev-other { background-color: var(--c100); border: 1px solid var(--c400); color: var(--c800); }
/* added directly on Google Calendar = dashed outline */
.page-calendar .fc .fc-event.ev-gcal { background-color: transparent; border: 1px dashed var(--c500); color: var(--c800); }
.page-calendar .fc .fc-event.ev-gcal:hover { background-color: var(--c100); }

@media (max-width: 768px) {
  .page-calendar .cal-legend { gap: 8px 16px; }
  .page-calendar .cal-legend-hint { margin-left: 0; width: 100%; }
  .page-calendar .cal-card { padding: 14px; }
  .page-calendar .fc .fc-toolbar.fc-header-toolbar { flex-direction: column; align-items: stretch; }
  .page-calendar .fc .fc-toolbar-chunk { display: flex; justify-content: center; flex-wrap: wrap; gap: 6px; }
  .page-calendar .fc .fc-toolbar-title { font-size: 26px; text-align: center; }
  .page-calendar .fc .fc-button { min-height: 40px; padding: 0 12px; font-size: 13px; }
  .page-calendar .fc table { display: table; white-space: normal; }
  .page-calendar .fc .fc-daygrid-dot-event .fc-event-title { display: none; }
}

/* =====================================================================
   Notifications
   ===================================================================== */
/* Config warnings: dashed outline + dark icon tile instead of a solid dark box */
.page-notifications .nt-alert {
  display: flex; align-items: flex-start; gap: 16px; padding: 18px 20px; margin-bottom: 16px; border-radius: 18px;
  background: var(--c50); border: 1.5px dashed var(--c500); color: var(--c700); font-weight: 500; line-height: 1.5;
}
.page-notifications .nt-alert-icon {
  width: 44px; height: 44px; flex-shrink: 0; border-radius: 12px; background: var(--c900); color: var(--c50);
  display: flex; align-items: center; justify-content: center;
}
.page-notifications .nt-alert-icon svg { width: 20px; height: 20px; }
.page-notifications .nt-alert-text { min-width: 0; overflow-wrap: anywhere; }

.page-notifications .nt-result {
  display: flex; align-items: center; gap: 14px; padding: 14px 20px; margin-bottom: 16px; border-radius: 18px;
  font-size: 14px; font-weight: 700; color: var(--c900);
}
.page-notifications .nt-result svg { width: 20px; height: 20px; flex-shrink: 0; }
.page-notifications .nt-result--ok { background: var(--c200); }
.page-notifications .nt-result--warn { background: var(--c50); border: 1.5px dashed var(--c600); color: var(--c800); }

.page-notifications .nt-card { padding: 26px 26px 18px; border-radius: 22px; }
.page-notifications .nt-card-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.page-notifications .nt-card-head form { margin: 0; }
.page-notifications .nt-intro { margin: 8px 0 18px; font-size: 14px; }
.page-notifications .nt-table-wrap { overflow-x: auto; }
.page-notifications .nt-table td { height: 52px; font-size: 13px; }
.page-notifications .nt-sent { font-weight: 600; color: var(--c800); font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-notifications .nt-type {
  display: inline-flex; align-items: center; min-height: 24px; padding: 2px 8px; border-radius: 6px;
  background: var(--c100); color: var(--c800); font-size: 12px; font-weight: 700;
  font-family: ui-monospace, Menlo, Consolas, monospace; white-space: nowrap;
}
.page-notifications .nt-recipient { color: var(--c800); overflow-wrap: anywhere; }
.page-notifications .nt-subject { font-weight: 600; line-height: 1.35; }
.page-notifications .nt-retry-form { margin: 0; }
.page-notifications tr.nt-has-error td { border-bottom: none; }
.page-notifications .nt-error-row td { height: auto; padding-top: 0; padding-bottom: 12px; }
.page-notifications .nt-error {
  font-size: 12px; font-weight: 700; color: var(--c900); white-space: normal;
}
.page-notifications .nt-error svg { width: 14px; height: 14px; vertical-align: -2px; margin-right: 6px; }
/* sent = light solid (foundation) · skipped = dashed outline · failed = darkest solid (foundation) */
.page-notifications .badge.status-sent { background: var(--c200); color: var(--c800); }
.page-notifications .badge[class*="status-skipped"] { background: transparent; color: var(--c700); border: 1.5px dashed var(--c500); }
.page-notifications .empty-state { margin-top: 12px; }

@media (max-width: 768px) {
  .page-notifications .nt-alert { padding: 14px; gap: 12px; }
  .page-notifications .nt-alert-icon { width: 36px; height: 36px; }
  .page-notifications .nt-card { padding: 18px; }
}

/* =====================================================================
   Settings
   ===================================================================== */
.page-settings .st-admin-note { align-items: center; gap: 10px; font-size: 14px; color: var(--c600); }
.page-settings .st-admin-note svg { width: 18px; height: 18px; }
.page-settings .st-grid {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; align-items: start; margin-bottom: 24px;
}
.page-settings .st-col { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.page-settings .st-card { display: flex; flex-direction: column; gap: 16px; margin-bottom: 0; padding: 26px; border-radius: 22px; min-width: 0; }
.page-settings .st-card form { margin: 0; }
.page-settings .st-card .form-grid { align-items: end; margin-bottom: 18px; }
.page-settings .st-card .form-grid .field { margin: 0; }
.page-settings .st-card-head { display: flex; flex-direction: column; gap: 4px; }
.page-settings .st-card-head .muted { font-size: 14px; }
.page-settings .st-icon-head { display: flex; align-items: center; gap: 12px; min-width: 0; }
.page-settings .st-icon-head--split { justify-content: space-between; flex-wrap: wrap; }
.page-settings .st-icon {
  width: 40px; height: 40px; flex-shrink: 0; border-radius: 12px; background: var(--c200); color: var(--c800);
  display: flex; align-items: center; justify-content: center;
}
.page-settings .st-icon svg { width: 20px; height: 20px; }
.page-settings .st-icon--dark { background: var(--c700); color: var(--c50); }
.page-settings .st-icon--danger { background: var(--c900); color: var(--c50); }
.page-settings .st-text { margin: 0; font-size: 14px; line-height: 1.6; color: var(--c700); overflow-wrap: anywhere; }
.page-settings code {
  font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 12.5px; padding: 1px 6px; border-radius: 6px;
  background: var(--c200); color: var(--c900); overflow-wrap: anywhere;
}
.page-settings .st-dl { margin: 0; display: flex; flex-direction: column; border-top: 1px solid var(--c200); }
.page-settings .st-dl > div {
  display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 12px; align-items: center; min-height: 50px; border-bottom: 1px solid var(--c200);
}
.page-settings .st-dl dt { font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--c600); }
.page-settings .st-dl dd { margin: 0; font-size: 15px; font-weight: 700; color: var(--c900); overflow-wrap: anywhere; }
.page-settings .st-note { margin: 0; font-weight: 500; line-height: 1.55; color: var(--c700); border-color: var(--c400); }

/* Danger zone: heavy c900 outline with a thick left rule (not a hue) */
.page-settings .st-danger {
  display: flex; flex-direction: column; gap: 18px; padding: 26px; border-radius: 22px;
  background: var(--c50); border: 1.5px solid var(--c900); border-left-width: 8px;
}
.page-settings .st-danger h2 { color: var(--c900); }
.page-settings .st-danger-sub { font-size: 14px; color: var(--c700); margin-top: 2px; }
.page-settings .st-danger-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; }
.page-settings .st-danger-item {
  display: flex; flex-direction: column; gap: 10px; padding: 20px; border-radius: 16px; background: var(--c100); border: 1px solid var(--c200);
}
.page-settings .st-danger-title { font-size: 17px; font-weight: 800; color: var(--c900); }
.page-settings .st-danger-body { margin: 0; font-size: 13.5px; line-height: 1.6; color: var(--c700); }
.page-settings .st-danger-item form { margin: auto 0 0; padding-top: 6px; }

@media (max-width: 1000px) {
  .page-settings .st-grid, .page-settings .st-danger-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 768px) {
  .page-settings .st-card, .page-settings .st-danger { padding: 18px; }
  .page-settings .st-danger { border-left-width: 6px; }
  .page-settings .st-danger-item { padding: 16px; }
  .page-settings .st-dl > div { grid-template-columns: 1fr; gap: 2px; padding: 10px 0; }
  .page-settings .st-danger-item .btn { width: 100%; }
}

/* ===================== groupB2 ===================== */
/* =====================================================================
   Group B (staff pages): Roster week (roster-week.ejs), My Shifts
   (my-shifts.ejs), Staff Status (staff-status.ejs), Timesheets
   (timesheets.ejs), Edit clock entry (timesheet-edit.ejs), Requests
   (requests.ejs), Bar Staff Duties (duties.ejs).
   Scopes: .page-roster-week, .page-my-shifts, .page-staff-status,
   .page-timesheets, .page-timesheet-edit, .page-requests, .page-duties.
   NOTE: roster shift pills / timeline bars / my-shifts dots keep each
   staff member's personal roster colour (inline background from their
   saved setting) - these rules only style shape, text and chrome.
   ===================================================================== */

/* ---------- Shared: roster grids (Roster week + My Shifts) ---------- */
.page-roster-week .roster-table-card,
.page-my-shifts .roster-table-card { overflow: hidden; }
.page-roster-week .roster-table th,
.page-roster-week .roster-table td,
.page-my-shifts .roster-table th,
.page-my-shifts .roster-table td {
  padding: 10px 8px; text-align: center; border-bottom: 1px solid var(--c100); font-size: 13px;
}
.page-roster-week .roster-table thead th,
.page-my-shifts .roster-table thead th {
  background: var(--c50); color: var(--c600); border-bottom: 1px solid var(--c200);
  font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; line-height: 1.3;
}
.page-roster-week .roster-table thead th a { color: var(--c700); font-weight: 700; text-decoration: none; }
.page-roster-week .roster-table thead th a:hover { color: var(--c900); }
.page-roster-week .roster-table-date,
.page-my-shifts .roster-table-date {
  display: inline-block; margin-top: 2px; font-size: 18px; font-weight: 800; letter-spacing: 0;
  color: var(--c900); font-variant-numeric: tabular-nums;
}
.page-roster-week .roster-table-corner,
.page-my-shifts .roster-table-corner { background: var(--c50); text-align: left; }
.page-roster-week .roster-table-name,
.page-my-shifts .roster-table-name {
  background: var(--c50); color: var(--c900); font-weight: 700; font-size: 14px;
  text-align: left; border-right: 1px solid var(--c200);
}
.page-roster-week .roster-table tbody tr:hover td,
.page-my-shifts .roster-table tbody tr:hover td { background: var(--c100); }
.page-roster-week .roster-table-off,
.page-my-shifts .roster-table-off { color: var(--c600); }
/* Pill shape only - background colour is the staff member's own roster colour. */
.page-roster-week .roster-pill,
.page-my-shifts .roster-pill {
  display: inline-block; color: var(--c50); font-size: 11.5px; font-weight: 700;
  padding: 4px 10px; border-radius: var(--radius-pill); margin: 2px; white-space: nowrap;
  font-variant-numeric: tabular-nums; text-decoration: none;
  box-shadow: 0 1px 2px hsla(173, 45%, 15%, 0.18);
}
.page-roster-week .roster-pill:hover { opacity: 0.88; text-decoration: none; }

/* ---------- Roster week ---------- */
.page-roster-week .roster-lede {
  margin: -12px 0 22px; max-width: 940px; font-size: 14px; line-height: 1.6; color: var(--c600);
}
.page-roster-week .roster-lede strong,
.page-roster-week .roster-lede a { color: var(--c800); font-weight: 700; }

.page-roster-week .roster-alert {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  padding: 16px 20px; margin-bottom: 20px; border-radius: 18px;
  background: var(--c50); border: 1.5px dashed var(--c500);
}
.page-roster-week .roster-alert-icon {
  width: 44px; height: 44px; flex-shrink: 0; border-radius: 12px;
  background: var(--c200); color: var(--c800); display: flex; align-items: center; justify-content: center;
}
.page-roster-week .roster-alert-text { flex: 1 1 260px; margin: 0; font-size: 14px; line-height: 1.5; color: var(--c800); }

.page-roster-week .roster-weekbar {
  display: flex; align-items: center; justify-content: space-between; gap: 12px 16px; flex-wrap: wrap;
  padding: 18px 22px; overflow: visible;
}
.page-roster-week .roster-weekbar-range { display: flex; align-items: center; gap: 12px; color: var(--c700); }
.page-roster-week .roster-weekbar-range strong {
  font-size: 18px; font-weight: 800; color: var(--c900); font-variant-numeric: tabular-nums;
}
.page-roster-week .roster-weekbar-to { font-weight: 600; color: var(--c600); }
.page-roster-week .roster-weekbar-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }

.page-roster-week .roster-card-head {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 12px 16px; flex-wrap: wrap;
  margin-bottom: 14px;
}
.page-roster-week .roster-card-head h3,
.page-roster-week .roster-day-head h3 { margin: 0; font-size: 30px; color: var(--c800); }
.page-roster-week .roster-card-head .muted { margin: 4px 0 0; font-size: 14px; }

.page-roster-week .roster-day { scroll-margin-top: 16px; }
.page-roster-week .roster-day-head {
  display: flex; align-items: center; justify-content: space-between; gap: 10px 16px; flex-wrap: wrap;
  margin-bottom: 14px;
}

/* Batch entry panel: tinted inset like the mockup */
.page-roster-week .roster-batch-form {
  background: var(--c100); border-radius: 16px; padding: 16px; margin-bottom: 10px;
}
.page-roster-week .roster-batch-rows { gap: 10px; margin-bottom: 12px; }
.page-roster-week .roster-batch-row { gap: 12px; }
.page-roster-week .roster-batch-row .field { flex: 1 1 140px; }
.page-roster-week .roster-batch-row .field:first-child { flex: 1.6 1 180px; }
.page-roster-week .roster-batch-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.page-roster-week .roster-batch-hint { margin: 0 0 16px; font-size: 13px; }

.page-roster-week .roster-icon-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; padding: 0; flex-shrink: 0;
  border: 1.5px solid var(--c300); border-radius: 10px; background: var(--c50); color: var(--c800);
  cursor: pointer;
}
.page-roster-week .roster-batch-row .roster-icon-btn { width: 46px; height: 46px; border-radius: 12px; }
.page-roster-week .roster-icon-btn:hover { background: var(--c200); border-color: var(--c400); color: var(--c900); }
.page-roster-week .roster-icon-btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }

/* Timeline */
.page-roster-week .roster-hour-header { color: var(--c600); font-weight: 700; font-size: 10.5px; }
.page-roster-week .roster-hour-header span { border-left-color: var(--c200); }
.page-roster-week .roster-timeline-row { gap: 10px; margin-bottom: 8px; }
.page-roster-week .roster-timeline-name { font-size: 14px; font-weight: 700; color: var(--c900); }
.page-roster-week .roster-timeline-track {
  height: 38px; border: 1px solid var(--c200); border-radius: 10px; background: var(--c50);
}
.page-roster-week .roster-hour-cell { border-right-color: var(--c100); }
/* Bar shape only - background is the staff member's own roster colour. */
.page-roster-week .roster-timeline-bar {
  top: 4px; bottom: 4px; border-radius: 7px; font-size: 11px;
  box-shadow: 0 1px 3px hsla(173, 50%, 10%, 0.3);
}
.page-roster-week .roster-not-sent {
  flex-shrink: 0; white-space: nowrap; font-size: 11px; font-weight: 700; color: var(--c700);
  padding: 2px 8px; border-radius: var(--radius-pill); border: 1.5px dashed var(--c500); background: transparent;
}
.page-roster-week .roster-edit-panel { margin: 0 0 12px 138px; }
.page-roster-week .roster-edit-panel .roster-add-form {
  margin-bottom: 0; padding: 14px; border-radius: 14px;
  background: var(--c100); border: 1.5px dashed var(--c300);
}

@media (max-width: 768px) {
  .page-roster-week .roster-lede { margin-top: -8px; }
  .page-roster-week .roster-weekbar { padding: 16px; }
  .page-roster-week .roster-weekbar-actions { width: 100%; }
  .page-roster-week .roster-weekbar-actions form.inline { flex-basis: 100%; }
  .page-roster-week .roster-weekbar-actions form.inline .btn { width: 100%; justify-content: center; white-space: normal; }
  .page-roster-week .roster-card-head h3,
  .page-roster-week .roster-day-head h3 { font-size: 24px; }
  .page-roster-week .roster-batch-form { padding: 12px; }
  .page-roster-week .roster-batch-row .field,
  .page-roster-week .roster-batch-row .field:first-child { flex: 1 1 100%; min-width: 0; }
  .page-roster-week .roster-batch-actions .btn { flex: 1 1 100%; justify-content: center; }
  .page-roster-week .roster-timeline-row { gap: 6px; flex-wrap: nowrap; }
  .page-roster-week .roster-not-sent { font-size: 10px; padding: 1px 6px; }
  .page-roster-week .roster-icon-btn { width: 32px; height: 32px; }
  .page-roster-week .roster-edit-panel { margin-left: 0; }
  .page-roster-week .roster-edit-panel .roster-add-form .field { min-width: 0; flex: 1 1 100%; }
}

/* ---------- My Shifts ---------- */
.page-my-shifts .ms-card-head {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 12px 16px; flex-wrap: wrap;
  margin-bottom: 14px;
}
.page-my-shifts .ms-card-head h2 { margin: 0; font-size: 30px; color: var(--c800); }
.page-my-shifts .ms-card-head .muted { margin: 4px 0 0; font-size: 14px; }
.page-my-shifts .ms-week-nav { display: flex; gap: 8px; flex-wrap: wrap; }
.page-my-shifts .ms-you { font-size: 12px; font-weight: 600; color: var(--c600); }
.page-my-shifts .ms-table td { font-variant-numeric: tabular-nums; }
.page-my-shifts .ms-date { font-weight: 700; }
.page-my-shifts .ms-time { white-space: nowrap; font-weight: 600; }
/* Dot keeps the staff member's own roster colour (inline). */
.page-my-shifts .ms-dot {
  display: inline-block; width: 10px; height: 10px; border-radius: 50%;
  margin-right: 8px; vertical-align: middle; box-shadow: 0 0 0 1.5px var(--c50), 0 0 0 2.5px var(--c200);
}
@media (max-width: 768px) {
  .page-my-shifts .ms-card-head h2 { font-size: 24px; }
  .page-my-shifts .ms-week-nav { width: 100%; }
  .page-my-shifts .ms-week-nav .btn { flex: 1 1 auto; justify-content: center; }
  .page-my-shifts .ms-table th,
  .page-my-shifts .ms-table td { padding-left: 6px; padding-right: 6px; font-size: 13px; }
}

/* ---------- Staff Status ---------- */
.page-staff-status .ss-refresh-chip {
  display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px;
  border-radius: var(--radius-pill); border: 1.5px solid var(--c300); background: var(--c50);
  color: var(--c700); font-size: 13px; font-weight: 700;
}
.page-staff-status .ss-refresh-chip svg { width: 16px; height: 16px; flex-shrink: 0; }
.page-staff-status .ss-intro { margin: -12px 0 22px; max-width: 760px; font-size: 14px; line-height: 1.6; }
.page-staff-status .ss-card h2 { margin: 0 0 12px; font-size: 30px; color: var(--c800); }
.page-staff-status .ss-name { font-weight: 700; color: var(--c900); }
.page-staff-status .ss-role { color: var(--c700); text-transform: capitalize; }
.page-staff-status .ss-since { color: var(--c700); font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-staff-status .empty { margin-top: 8px; }
@media (max-width: 768px) {
  .page-staff-status .ss-intro { margin-top: -8px; }
  .page-staff-status .ss-card h2 { font-size: 24px; }
  .page-staff-status .ss-table th,
  .page-staff-status .ss-table td { padding-left: 6px; padding-right: 6px; font-size: 13px; }
  .page-staff-status .ss-since { white-space: normal; }
}

/* ---------- Timesheets ---------- */
.page-timesheets .ts-intro { margin: 4px 0 0; max-width: 760px; font-size: 14px; line-height: 1.6; }
.page-timesheets .ts-filters {
  padding: 20px 22px; border-radius: var(--radius-card); background: var(--c50); border: 1px solid var(--c200);
  margin-bottom: 20px;
}
.page-timesheets .ts-filters .field { flex: 1 1 160px; }
.page-timesheets .ts-filter-actions { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.page-timesheets .ts-top-grid {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 20px; align-items: start;
}
.page-timesheets .ts-top-grid.ts-top-single { grid-template-columns: minmax(0, 1fr); }
.page-timesheets .ts-top-grid > .card { margin-bottom: 20px; }
.page-timesheets .card h2 { margin: 0 0 8px; font-size: 30px; color: var(--c800); }
.page-timesheets .ts-fix-card .muted { margin: 0 0 14px; font-size: 14px; }
.page-timesheets .ts-card-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 8px;
}
.page-timesheets .ts-card-head h2 { margin: 0; }
.page-timesheets .ts-table td { font-size: 14px; }
.page-timesheets .ts-name { font-weight: 700; color: var(--c900); }
.page-timesheets .ts-num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-timesheets .ts-strong { font-weight: 700; color: var(--c900); }
.page-timesheets .ts-soft { color: var(--c700); }
.page-timesheets .ts-when { color: var(--c700); font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-timesheets .ts-note { margin-top: 4px; font-size: 11.5px; font-weight: 600; color: var(--c600); }
.page-timesheets .ts-dash { color: var(--c600); }
.page-timesheets .ts-selfie-link { display: inline-block; border-radius: 50%; }
.page-timesheets .ts-selfie-link:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.page-timesheets .ts-selfie {
  display: block; width: 40px; height: 40px; border-radius: 50%; object-fit: cover;
  border: 1.5px solid var(--c200); background: var(--c100);
}
.page-timesheets .ts-row-actions { white-space: nowrap; text-align: right; }
.page-timesheets .ts-row-actions .btn + form.inline { margin-left: 6px; }
.page-timesheets .ts-sr {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
@media (max-width: 900px) {
  .page-timesheets .ts-top-grid { grid-template-columns: minmax(0, 1fr); gap: 0; }
}
@media (max-width: 768px) {
  .page-timesheets .ts-filters { padding: 16px; }
  .page-timesheets .ts-filter-actions,
  .page-timesheets .ts-filter-actions .btn { width: 100%; justify-content: center; }
  .page-timesheets .card h2 { font-size: 24px; }
  .page-timesheets .ts-table th,
  .page-timesheets .ts-table td { padding-left: 6px; padding-right: 6px; font-size: 13px; }
  .page-timesheets .ts-when { white-space: normal; }
}

/* ---------- Edit clock entry ---------- */
.page-timesheet-edit .tse-back {
  display: inline-flex; align-items: center; gap: 6px; text-decoration: none; color: var(--c600);
}
.page-timesheet-edit .tse-back svg { width: 14px; height: 14px; }
.page-timesheet-edit .tse-back:hover { color: var(--c900); text-decoration: none; }
.page-timesheet-edit .tse-sub { margin: 4px 0 0; font-size: 15px; font-weight: 600; color: var(--c700); }
.page-timesheet-edit .tse-card { max-width: 560px; padding: 26px; }
.page-timesheet-edit .tse-summary {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  padding-bottom: 18px; margin-bottom: 18px; border-bottom: 1px solid var(--c200);
}
.page-timesheet-edit .tse-avatar {
  width: 48px; height: 48px; flex-shrink: 0; border-radius: 50%;
  background: var(--c200); color: var(--c800); font-weight: 800; font-size: 15px;
  display: flex; align-items: center; justify-content: center;
}
.page-timesheet-edit .tse-summary-text { flex: 1 1 160px; min-width: 0; }
.page-timesheet-edit .tse-summary-text h2 { margin: 0; font-size: 26px; color: var(--c800); }
.page-timesheet-edit .tse-summary-text .muted { margin-top: 2px; font-size: 13.5px; font-variant-numeric: tabular-nums; }
.page-timesheet-edit .tse-notice { display: flex; align-items: flex-start; gap: 10px; }
.page-timesheet-edit .tse-notice svg { width: 18px; height: 18px; flex-shrink: 0; margin-top: 1px; }
.page-timesheet-edit .tse-form .field { margin-bottom: 16px; }
.page-timesheet-edit .tse-actions { display: flex; gap: 10px; flex-wrap: wrap; padding-top: 4px; }
@media (max-width: 768px) {
  .page-timesheet-edit .tse-card { padding: 20px 18px; }
  .page-timesheet-edit .tse-actions .btn { flex: 1 1 auto; justify-content: center; }
}

/* ---------- Requests ---------- */
.page-requests .rq-intro { margin: 4px 0 0; max-width: 760px; font-size: 14px; line-height: 1.6; }
.page-requests .rq-top-grid {
  display: grid; grid-template-columns: minmax(0, 400px) minmax(0, 1fr); gap: 20px; align-items: start;
}
.page-requests .rq-top-grid > .card { margin-bottom: 20px; }
.page-requests .card h2 { margin: 0 0 10px; font-size: 30px; color: var(--c800); }
/* Dark "Send a request" card */
.page-requests .rq-send { padding: 26px; }
.page-requests .rq-send h2 { color: var(--c50); margin-bottom: 16px; }
.page-requests .rq-send label { color: var(--c100); }
.page-requests .rq-send input,
.page-requests .rq-send select,
.page-requests .rq-send textarea { border-color: var(--c600); }
.page-requests .rq-send input:focus,
.page-requests .rq-send select:focus,
.page-requests .rq-send textarea:focus { border-color: var(--c300); box-shadow: 0 0 0 3px hsla(173, 25%, 72%, 0.35); }
.page-requests .rq-send-btn { background: var(--c50); border-color: var(--c50); color: var(--c800); width: 100%; justify-content: center; }
.page-requests .rq-send-btn:hover { background: var(--c200); border-color: var(--c200); color: var(--c900); }
/* Marketplace */
.page-requests .rq-market > .muted { margin: 0 0 6px; font-size: 14px; line-height: 1.6; }
.page-requests .rq-subhead {
  margin: 18px 0 10px; font-family: var(--font-sans); font-style: normal;
  font-size: 11px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--c600);
}
.page-requests .rq-drop-form {
  display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap;
  padding: 14px; border-radius: 16px; background: var(--c100);
}
.page-requests .rq-drop-form .field { margin: 0; flex: 1 1 220px; }
.page-requests .rq-table td { font-size: 14px; }
.page-requests .rq-strong { font-weight: 700; color: var(--c900); }
.page-requests .rq-num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-requests .rq-details { color: var(--c800); line-height: 1.5; }
.page-requests .rq-when { color: var(--c700); font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-requests .rq-actions { white-space: nowrap; }
.page-requests .rq-actions > form.inline,
.page-requests .rq-actions > .btn { margin: 2px 4px 2px 0; }
/* Exchange form: display toggled to flex by the "Offer exchange" button */
.page-requests .rq-exchange-form {
  gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 8px;
  padding: 10px; border-radius: 12px; border: 1.5px dashed var(--c300); background: var(--c50);
  white-space: normal;
}
.page-requests .rq-swap-label { margin: 0; font-size: 12px; font-weight: 700; color: var(--c700); }
.page-requests .rq-exchange-form select { width: auto; flex: 1 1 180px; min-width: 0; padding: 7px 10px; font-size: 13px; }
@media (max-width: 1000px) {
  .page-requests .rq-top-grid { grid-template-columns: minmax(0, 1fr); gap: 0; }
}
@media (max-width: 768px) {
  .page-requests .card h2 { font-size: 24px; }
  .page-requests .rq-send { padding: 20px 18px; }
  .page-requests .rq-drop-form .btn { width: 100%; justify-content: center; }
  .page-requests .rq-table th,
  .page-requests .rq-table td { padding-left: 6px; padding-right: 6px; font-size: 13px; }
  .page-requests .rq-actions,
  .page-requests .rq-when { white-space: normal; }
}

/* ---------- Bar Staff Duties ---------- */
.page-duties .du-intro { margin: 4px 0 0; max-width: 760px; font-size: 14px; line-height: 1.6; }
.page-duties .duties-toolbar {
  display: flex; align-items: center; gap: 14px 20px; flex-wrap: wrap; padding: 18px 22px; overflow: visible;
}
.page-duties .du-date-form { display: flex; align-items: center; gap: 10px; margin: 0; }
.page-duties .du-date-form label { margin: 0; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--c600); }
.page-duties .du-date-form input { width: auto; }
.page-duties .duty-progress-summary { margin-left: auto; min-width: 200px; color: var(--c700); }
.page-duties .du-progress-count { font-size: 22px; font-weight: 800; color: var(--c900); font-variant-numeric: tabular-nums; line-height: 1.1; }
.page-duties .du-progress-count span { font-size: 13px; font-weight: 700; color: var(--c600); }
.page-duties .duty-progress-track { width: 220px; max-width: 100%; height: 8px; margin-top: 8px; background: var(--c200); }
.page-duties .duty-progress-fill { background: var(--c700); }

.page-duties .du-sections {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; align-items: start;
}
.page-duties .du-sections > .card { margin-bottom: 0; }
.page-duties .duty-section-card { padding: 22px 24px 12px; }
.page-duties .duty-section-header { gap: 12px; margin-bottom: 8px; }
.page-duties .duty-section-header h2 { margin: 0; font-size: 30px; color: var(--c800); }
.page-duties .duty-task { gap: 12px; padding: 10px 0; border-bottom-color: var(--c100); font-size: 14.5px; color: var(--c900); }
.page-duties .duty-task-check {
  width: 26px; height: 26px; border-radius: 8px; border: 1.5px solid var(--c400); background: var(--c50);
}
.page-duties .duty-task-check:hover { border-color: var(--c600); background: var(--c100); }
.page-duties .duty-task-check:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.page-duties .duty-task-check svg { width: 16px; height: 16px; }
.page-duties .duty-task.done .duty-task-check { background: var(--c700); border-color: var(--c700); color: var(--c50); }
.page-duties .duty-task.done .duty-task-text { color: var(--c600); }
.page-duties .duty-task-meta { font-size: 12px; font-weight: 600; color: var(--c600); }
.page-duties .duty-task-edit-controls { flex-wrap: wrap; }
.page-duties .duty-task-edit-controls input[type="text"] { width: 200px; max-width: 100%; }
.page-duties .duty-task-add-form { flex-wrap: wrap; border-top: 1.5px dashed var(--c300); padding-bottom: 8px; }
@media (max-width: 1000px) {
  .page-duties .du-sections { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 768px) {
  .page-duties .duties-toolbar { padding: 16px; }
  .page-duties .duty-progress-summary { margin-left: 0; width: 100%; min-width: 0; }
  .page-duties .duty-progress-track { width: 100%; }
  .page-duties .duty-section-header h2 { font-size: 24px; }
  .page-duties .duty-section-card { padding: 18px 16px 8px; }
  .page-duties .duty-task { flex-wrap: wrap; }
  .page-duties .duty-task-edit-controls { width: 100%; }
  .page-duties .duty-task-edit-controls form { flex: 1 1 100%; }
  .page-duties .duty-task-edit-controls input[type="text"] { width: auto; flex: 1 1 auto; min-width: 0; }
  .page-duties .duty-task-add-form input[type="text"] { min-width: 0; }
}

/* ===================== groupC2 ===================== */
/* ==========================================================================
   Group C — staff back-office pages (monochrome redesign)
   Pages: Report an Issue (.page-reports), Logs (.page-logs),
          Cash Safe Log (.page-cash-safe), Vouchers (.page-vouchers),
          Voucher history (.page-voucher-history),
          Breakage & Stock (.page-breakage), Design Studio (.page-design).
   Every rule is scoped to its page class (or the page's camera overlay).
   Colours come only from the c-scale tokens in style.css :root.
   ========================================================================== */

/* ---- Shared bits used by several of these pages ---- */
.page-reports .page-header-text,
.page-logs .page-header-text,
.page-cash-safe .page-header-text,
.page-vouchers .page-header-text,
.page-breakage .page-header-text,
.page-design .page-header-text { max-width: 820px; }

.page-reports .rep-intro,
.page-logs .lg-intro,
.page-cash-safe .cs-intro,
.page-vouchers .vc-intro,
.page-breakage .bk-intro,
.page-design .ds-intro {
  margin: 6px 0 0; max-width: 780px; font-size: 15px; line-height: 1.5; color: var(--c600);
}

.page-reports .card > h2,
.page-logs .card h2,
.page-cash-safe .card > h2,
.page-vouchers .card > h2,
.page-voucher-history .card > h2,
.page-breakage .card > h2,
.page-design .card > h2 {
  font-size: 30px; line-height: 1.1; margin: 0 0 16px; color: var(--c800);
}

.page-reports .rep-optional,
.page-reports .rep-evidence-label span,
.page-cash-safe .cs-optional,
.page-vouchers .vc-optional,
.page-design .ds-optional { font-weight: 500; color: var(--c600); }

/* ==========================================================================
   Report an Issue
   ========================================================================== */
.page-reports .rep-private-chip {
  display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 16px;
  border-radius: var(--radius-btn); border: 1.5px dashed var(--c400); color: var(--c700);
  font-size: 13px; font-weight: 700; white-space: nowrap;
}
.page-reports .rep-private-chip svg { width: 16px; height: 16px; flex-shrink: 0; }

.page-reports .rep-form {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; align-items: stretch;
}
.page-reports .rep-col { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.page-reports .rep-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.page-reports .rep-evidence { display: flex; flex-direction: column; gap: 10px; }
.page-reports .rep-evidence-label { font-size: 13px; font-weight: 700; color: var(--c800); }
.page-reports .report-evidence-actions { margin-top: 0; }
.page-reports .report-evidence-list:empty { display: none; }
.page-reports .report-evidence-list { margin-top: 0; }
.page-reports .report-evidence-item {
  min-height: 42px; padding: 6px 8px 6px 12px; border-radius: 10px;
  background: var(--c100); border: 1px solid var(--c200);
  font-size: 14px; font-weight: 600; color: var(--c900);
}
.page-reports .report-evidence-item span { min-width: 0; overflow-wrap: anywhere; }
.page-reports .report-evidence-remove {
  color: var(--c700); font-weight: 700; font-size: 13px; padding: 6px 10px; border-radius: 8px;
}
.page-reports .report-evidence-remove:hover { background: var(--c200); color: var(--c900); }
.page-reports .rep-evidence-help { margin: 0; font-size: 13px; line-height: 1.5; }
.page-reports .rep-submit { margin-top: auto; padding-top: 12px; display: flex; justify-content: flex-end; }

.page-reports .rep-card-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 16px;
}
.page-reports .rep-card-head h2 { margin: 0; }
.page-reports .rep-count {
  display: inline-flex; align-items: center; min-height: 26px; padding: 3px 11px; border-radius: var(--radius-pill);
  border: 1.5px dashed var(--c600); color: var(--c800); font-size: 12px; font-weight: 800;
}
.page-reports .rep-table td { vertical-align: top; }
.page-reports .rep-table td .badge,
.page-reports .rep-table td form { margin-top: -2px; }
.page-reports .rep-strong { font-weight: 700; font-size: 15px; white-space: nowrap; }
.page-reports .rep-details { min-width: 220px; line-height: 1.45; color: var(--c800); }
.page-reports .rep-files { min-width: 120px; }
.page-reports .rep-file-link {
  display: block; font-size: 13px; font-weight: 600; color: var(--c700); overflow-wrap: anywhere;
}
.page-reports .rep-file-link:hover { color: var(--c900); }
.page-reports .rep-when { font-size: 13px; color: var(--c700); font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-reports .rep-sr {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* Camera overlay sits outside .main, so it carries its own scope class */
.rep-camera .rep-camera-status { margin: 10px 0; }
.rep-camera .rep-camera-done { margin-top: 10px; width: 100%; }

/* ==========================================================================
   Logs
   ========================================================================== */
.page-logs .lg-card-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 14px;
}
.page-logs .lg-card-head h2 { margin: 0; }
.page-logs .lg-table td { vertical-align: middle; }
.page-logs .lg-strong { font-weight: 700; }
.page-logs .lg-thumb {
  width: 40px; height: 40px; object-fit: cover; border-radius: 8px; display: block;
  background: var(--c200); border: 1px solid var(--c200);
}
.page-logs .lg-thumb-inline { display: inline-block; margin: 0 4px 4px 0; vertical-align: middle; }
.page-logs .lg-file-link { display: block; font-size: 13px; font-weight: 600; color: var(--c700); overflow-wrap: anywhere; }
.page-logs .lg-file-link:hover { color: var(--c900); }
.page-logs .lg-note { font-size: 12px; }
.page-logs .lg-note-block { display: block; margin-top: 2px; }

/* ==========================================================================
   Cash Safe Log
   ========================================================================== */
.page-cash-safe .cs-layout {
  display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 24px; align-items: start; margin-bottom: 4px;
}
.page-cash-safe .cs-side { display: flex; flex-direction: column; gap: 0; min-width: 0; }

.page-cash-safe .cs-balance { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.page-cash-safe .cs-balance-label {
  font-size: 12px; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; color: var(--c300);
}
.page-cash-safe .cs-balance-amount {
  font-family: var(--font-serif); font-style: italic; font-weight: 600;
  font-size: 64px; line-height: 1; color: var(--c50); font-variant-numeric: tabular-nums;
}
/* Badges re-toned for the dark card */
.page-cash-safe .cs-balance .badge.pending_approval { background: transparent; color: var(--c100); border: 1.5px dashed var(--c300); white-space: normal; }
.page-cash-safe .cs-balance .badge.confirmed { background: var(--c200); color: var(--c900); border-color: var(--c200); white-space: normal; }
.page-cash-safe .cs-balance-note { margin: 4px 0 0; font-size: 13px; line-height: 1.5; color: var(--c200); }

.page-cash-safe .cs-lodgement details summary {
  cursor: pointer; font-size: 14px; font-weight: 700; color: var(--c700); list-style-position: inside;
}
.page-cash-safe .cs-lodgement details summary:hover { color: var(--c900); }
.page-cash-safe .cs-lodgement-form { margin-top: 14px; }

.page-cash-safe .cs-money-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0 14px; }
.page-cash-safe .cs-photo-label { font-size: 13px; font-weight: 700; color: var(--c800); margin-bottom: 8px; }
.page-cash-safe .cs-photo-preview { margin: 0 0 10px; }
.page-cash-safe .cs-photo-preview img {
  display: block; max-width: 160px; border-radius: 12px; border: 1px solid var(--c200); background: var(--c200); margin-bottom: 8px;
}
.page-cash-safe .cs-submit-row { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 8px; }
.page-cash-safe .cs-submit-row p { margin: 0; flex: 1 1 240px; font-size: 13px; line-height: 1.5; }

.page-cash-safe .cs-history td { font-variant-numeric: tabular-nums; }
.page-cash-safe .cs-date { font-weight: 700; white-space: nowrap; }
.page-cash-safe .cs-by { font-weight: 600; white-space: nowrap; }
.page-cash-safe .cs-thumb {
  width: 40px; height: 40px; object-fit: cover; border-radius: 8px; display: block; background: var(--c200);
}
.page-cash-safe .cs-amt { color: var(--c600); white-space: nowrap; }
.page-cash-safe .cs-amt.is-set { color: var(--c900); font-weight: 700; }
.page-cash-safe .cs-total { font-weight: 800; white-space: nowrap; }
.page-cash-safe .cs-total .badge { margin-left: 6px; }

.cs-camera .cs-camera-status { margin: 10px 0; }
.cs-camera .cs-camera-close { margin-top: 10px; width: 100%; }

/* ==========================================================================
   Vouchers
   ========================================================================== */
.page-vouchers .vc-forms {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: stretch; margin-bottom: 4px;
}
.page-vouchers .vc-forms .card { display: flex; flex-direction: column; }
.page-vouchers .vc-forms form { display: flex; flex-direction: column; flex: 1; }
.page-vouchers .vc-forms form > .btn { align-self: flex-start; margin-top: auto; }
.page-vouchers .vc-submit-row { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: auto; }
.page-vouchers .vc-submit-row p { margin: 0; flex: 1 1 200px; font-size: 13px; line-height: 1.5; }
.page-vouchers .vc-number { font-weight: 800; letter-spacing: 0.04em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-vouchers .vc-strong { font-weight: 600; }
.page-vouchers .vc-table td { font-variant-numeric: tabular-nums; }
.page-vouchers .vc-remaining { font-weight: 800; color: var(--c900); white-space: nowrap; }
.page-vouchers .vc-remaining.is-zero { font-weight: 600; color: var(--c600); }
.page-vouchers .vc-table .badge { text-transform: capitalize; }
.page-vouchers .vc-row-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; white-space: nowrap; }
.page-vouchers .vc-row-actions a { font-size: 13px; font-weight: 700; color: var(--c700); }
.page-vouchers .vc-row-actions a:hover { color: var(--c900); }

/* ==========================================================================
   Voucher history
   ========================================================================== */
.page-voucher-history .vh-back {
  display: inline-flex; align-items: center; gap: 8px; margin-bottom: 14px;
  font-size: 14px; font-weight: 700; color: var(--c700); text-decoration: none;
}
.page-voucher-history .vh-back:hover { color: var(--c900); }
.page-voucher-history .vh-back svg { width: 16px; height: 16px; }
.page-voucher-history .page-actions .badge,
.page-voucher-history .vh-list .badge { text-transform: capitalize; }

.page-voucher-history .vh-layout {
  display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 24px; align-items: start;
}
.page-voucher-history .vh-balance {
  padding-bottom: 18px; margin-bottom: 8px; border-bottom: 1px solid var(--c200);
  display: flex; flex-direction: column; gap: 8px;
}
.page-voucher-history .vh-balance-label {
  font-size: 12px; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; color: var(--c600);
}
.page-voucher-history .vh-balance-amount {
  font-family: var(--font-serif); font-style: italic; font-weight: 600;
  font-size: 56px; line-height: 1; color: var(--c800); font-variant-numeric: tabular-nums;
}
.page-voucher-history .vh-meter { height: 8px; border-radius: var(--radius-pill); background: var(--c200); overflow: hidden; }
.page-voucher-history .vh-meter-fill { height: 100%; border-radius: inherit; background: var(--c700); }
.page-voucher-history .vh-balance-note { font-size: 13px; font-weight: 600; color: var(--c600); }
.page-voucher-history .vh-list { margin: 0; }
.page-voucher-history .vh-list > div {
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
  padding: 12px 0; border-bottom: 1px solid var(--c100);
}
.page-voucher-history .vh-list > div:last-child { border-bottom: none; }
.page-voucher-history .vh-list dt {
  font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--c600);
}
.page-voucher-history .vh-list dd { margin: 0; font-size: 15px; font-weight: 600; color: var(--c900); text-align: right; }
.page-voucher-history .vh-amount { font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-voucher-history .vh-by { font-weight: 600; }

/* ==========================================================================
   Breakage & Stock  (bk-* is also used on bookings/list.ejs — keep scoped)
   ========================================================================== */
.page-breakage .page-actions .logs-tabs { margin-bottom: 0; }
.page-breakage .breakage-section > .bk-intro { margin: 0 0 18px; }
.page-breakage .bk-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: start;
}
.page-breakage .bk-name { font-weight: 700; }
.page-breakage .bk-num { color: var(--c800); font-variant-numeric: tabular-nums; }
.page-breakage .bk-total {
  display: inline-flex; align-items: center; justify-content: center; min-width: 32px; min-height: 26px;
  padding: 3px 10px; border-radius: var(--radius-pill); background: var(--c700); color: var(--c50);
  font-size: 12px; font-weight: 800; font-variant-numeric: tabular-nums;
}
.page-breakage .bk-date { font-size: 13px; font-weight: 600; color: var(--c800); font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-breakage .bk-note { font-size: 13px; line-height: 1.4; color: var(--c700); min-width: 160px; }
.page-breakage .bk-cat { font-size: 13px; font-weight: 600; }
.page-breakage .bk-sub { font-size: 11px; font-weight: 500; color: var(--c600); }

.page-breakage .bk-form-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0 16px; }
.page-breakage .bk-match {
  display: flex; align-items: center; gap: 12px; min-height: 48px; padding: 10px 16px; margin: 0;
  border-radius: var(--radius-field); background: var(--c100);
  font-size: 14px; font-weight: 600; color: var(--c900); cursor: pointer;
}
.page-breakage .bk-match input[type="checkbox"] { width: 20px; height: 20px; flex-shrink: 0; }

.page-breakage .bk-thumb {
  width: 40px; height: 40px; object-fit: cover; border-radius: 8px; display: block; background: var(--c200);
}
.page-breakage .bk-photos { display: flex; flex-wrap: wrap; gap: 4px; max-width: 160px; }

/* ==========================================================================
   Design Studio
   ========================================================================== */
.page-design .ds-form {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; align-items: stretch;
}
.page-design .ds-col { display: flex; flex-direction: column; min-width: 0; }
.page-design .ds-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.page-design .ds-help { margin: 8px 0 0; font-size: 13px; line-height: 1.5; }
.page-design .ds-submit-row { margin-top: auto; display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.page-design .ds-submit-row p { margin: 0; flex: 1 1 220px; font-size: 13px; line-height: 1.5; }
.page-design .ds-table td { vertical-align: top; }
.page-design .ds-date { font-size: 13px; color: var(--c800); font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-design .ds-kind { font-weight: 700; text-transform: capitalize; }
.page-design .ds-model { font-size: 13px; color: var(--c700); white-space: nowrap; }
.page-design .ds-prompt { min-width: 220px; font-size: 13px; line-height: 1.45; color: var(--c800); }
.page-design .ds-by { font-weight: 600; white-space: nowrap; }
.page-design .ds-sub { font-size: 11px; font-weight: 500; color: var(--c600); text-transform: none; }
.page-design .ds-error { margin-top: 4px; max-width: 220px; white-space: normal; }
.page-design .ds-table .badge { text-transform: capitalize; }
.page-design .ds-result { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
.page-design .ds-result a { font-size: 13px; font-weight: 700; color: var(--c700); }
.page-design .ds-result a:hover { color: var(--c900); }
.page-design .ds-thumb {
  width: 64px; height: 64px; object-fit: cover; border-radius: 10px; display: block;
  background: var(--c200); border: 1px solid var(--c200);
}

/* ==========================================================================
   Tablet / phone
   ========================================================================== */
@media (max-width: 1100px) {
  .page-breakage .bk-grid,
  .page-cash-safe .cs-layout,
  .page-voucher-history .vh-layout { grid-template-columns: 1fr; }
  .page-breakage .bk-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 768px) {
  .page-reports .rep-form,
  .page-reports .rep-pair,
  .page-design .ds-form,
  .page-design .ds-pair,
  .page-vouchers .vc-forms { grid-template-columns: 1fr; gap: 0 16px; }
  .page-reports .rep-form,
  .page-design .ds-form { gap: 8px; }
  .page-reports .rep-submit { justify-content: stretch; }
  .page-reports .rep-submit .btn,
  .page-design .ds-submit-row .btn { width: 100%; }
  .page-reports .rep-private-chip { white-space: normal; }
  .page-reports .rep-details,
  .page-design .ds-prompt,
  .page-breakage .bk-note { min-width: 0; }

  .page-cash-safe .cs-money-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-cash-safe .cs-balance-amount { font-size: 48px; }
  .page-cash-safe .cs-submit-row .btn { width: 100%; }

  .page-voucher-history .vh-balance-amount { font-size: 44px; }
  .page-voucher-history .vh-list > div { flex-direction: column; align-items: flex-start; gap: 4px; }
  .page-voucher-history .vh-list dd { text-align: left; }

  .page-breakage .page-actions,
  .page-breakage .page-actions .logs-tabs { width: 100%; }
  .page-breakage .page-actions .logs-tab-btn { flex: 1 1 auto; }
  .page-breakage .bk-form-grid { grid-template-columns: 1fr; }
  .page-breakage .bk-photos { max-width: none; flex-wrap: nowrap; }
}

/* ===================== groupD2 ===================== */
/* =====================================================================
   Group D2 — staff pages: Training & Resources (index / detail / form),
   Users (list / edit), My Profile (+ change password / PIN modals),
   Privacy Notice acknowledgement (/accept-privacy).
   Scoped to: .page-training, .page-training-detail, .page-training-form,
   .page-users, .page-user-edit, .page-profile, .profile-modal,
   .page-privacy-accept. Monochrome only — c-scale vars + hsla(173,…).
   ===================================================================== */

/* ---------------------------------------------------------------------
   Shared bits for the training pages
   --------------------------------------------------------------------- */
.page-training-detail .training-back-link,
.page-training-form .training-back-link {
  display: inline-flex; align-items: center; gap: 8px; margin-bottom: 18px;
  font-size: 14px; font-weight: 700; color: var(--c700);
}
.page-training-detail .training-back-link svg,
.page-training-form .training-back-link svg { width: 18px; height: 18px; flex-shrink: 0; }

/* ---------------------------------------------------------------------
   Training index (.page-training)
   --------------------------------------------------------------------- */
.page-training .training-hero {
  background: var(--c800); color: var(--c50);
  border-radius: 22px; padding: 30px 32px; margin-bottom: 28px;
  align-items: flex-end; overflow: hidden; position: relative;
}
.page-training .training-hero::after { display: none; }
.page-training .training-hero .page-eyebrow { color: var(--c300); }
.page-training .training-hero .page-title { color: var(--c50); font-size: 50px; }
.page-training .training-hero p {
  margin: 4px 0 0; max-width: 640px; font-size: 15px; line-height: 1.5; color: var(--c200); opacity: 1;
}
.page-training .training-hero-bars { display: flex; gap: 8px; flex-shrink: 0; }
.page-training .training-hero-bars span { width: 14px; height: 64px; border-radius: 7px; background: var(--c700); }
.page-training .training-hero-bars span:nth-child(2) { background: var(--c500); }
.page-training .training-hero-bars span:nth-child(3) { background: var(--c300); }

.page-training .training-section--next { margin-top: 32px; }
.page-training .training-section-head {
  display: flex; align-items: baseline; gap: 8px 20px; flex-wrap: wrap; margin-bottom: 16px;
}
.page-training .training-section-head h2 { margin: 0; flex-shrink: 0; font-size: 34px; color: var(--c800); }
.page-training .training-section-head p { margin: 0; max-width: 640px; font-size: 14px; line-height: 1.5; color: var(--c600); }

.page-training .training-columns { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.page-training .training-column {
  display: flex; flex-direction: column; gap: 12px;
  background: var(--c50); border: 1px solid var(--c200); border-top: 1px solid var(--c200);
  border-radius: var(--radius-card); padding: 18px;
}
.page-training .training-column-head { gap: 12px; margin-bottom: 0; }
.page-training .training-column-icon {
  width: 44px; height: 44px; border-radius: 12px;
  background: var(--c700); color: var(--c50);
}
.page-training .training-column-icon svg { width: 22px; height: 22px; }
.page-training .tr-shade-mid .training-column-icon { background: var(--c500); color: var(--c50); }
.page-training .tr-shade-light .training-column-icon { background: var(--c300); color: var(--c900); }
.page-training .training-column-title { font-size: 16px; font-weight: 800; color: var(--c900); }
.page-training .training-column-count { font-size: 12px; font-weight: 600; color: var(--c600); }
.page-training .training-column-add a {
  width: 36px; height: 36px; border-radius: 10px;
  background: transparent; border: 1.5px solid var(--c300); color: var(--c800);
}
.page-training .training-column-add a:hover { background: var(--c100); border-color: var(--c400); opacity: 1; }
.page-training .training-column-add svg { width: 18px; height: 18px; }

.page-training .training-card-list { gap: 8px; }
.page-training .training-card {
  gap: 12px; background: var(--c100); border: 1px solid transparent; border-radius: 14px;
  padding: 10px; color: var(--c900);
}
.page-training .training-card:hover { border-color: var(--c300); box-shadow: var(--shadow-soft); }
.page-training .training-card-thumb {
  width: 52px; height: 52px; border-radius: 12px;
  background: var(--c50); border: 1px solid var(--c200); color: var(--c600);
}
.page-training .training-card-body { display: flex; flex-direction: column; gap: 2px; }
.page-training .training-card-name { font-size: 14px; font-weight: 700; line-height: 1.3; color: var(--c900); }
.page-training .training-card-subtitle { font-size: 12px; color: var(--c600); margin-top: 0; }
.page-training .training-tutorial-tag { gap: 5px; margin-top: 3px; font-size: 11px; font-weight: 800; color: var(--c700); }
.page-training .training-empty {
  border: 1.5px dashed var(--c300); border-radius: 14px; color: var(--c600);
  font-size: 13.5px; font-weight: 600;
}

@media (max-width: 980px) {
  .page-training .training-columns { grid-template-columns: minmax(0, 1fr); }
}

/* ---------------------------------------------------------------------
   Training detail (.page-training-detail)
   --------------------------------------------------------------------- */
.page-training-detail .training-detail-hero {
  position: relative; min-height: 290px; margin-bottom: 24px; padding: 26px;
  border-radius: 22px; overflow: hidden;
  background: var(--c300); color: var(--c50);
  display: flex; align-items: flex-end;
}
.page-training-detail .training-detail-hero.has-photo { background-color: var(--c300); background-size: cover; background-position: center; }
.page-training-detail .training-detail-hero.has-photo::before {
  background: linear-gradient(0deg, hsla(173, 45%, 15%, 0.45), hsla(173, 45%, 15%, 0) 70%);
}
.page-training-detail .training-detail-hero-inner {
  position: relative; z-index: 1;
  display: flex; flex-direction: column; align-items: flex-start; gap: 10px;
  max-width: 620px; padding: 24px 28px; border-radius: 18px;
  background: var(--c800); color: var(--c50);
}
.page-training-detail .training-detail-category {
  display: inline-flex; align-items: center; min-height: 26px; margin: 0; padding: 3px 12px;
  border-radius: var(--radius-pill); background: var(--c300); color: var(--c900);
  font-size: 11px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase;
}
.page-training-detail .training-detail-hero .page-title { font-size: 50px; color: var(--c50); }
.page-training-detail .training-detail-subtitle { font-size: 15px; font-weight: 600; color: var(--c200); opacity: 1; margin: 0; }

.page-training-detail .training-detail-grid {
  grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr); gap: 24px;
}
.page-training-detail .training-recipe-card { padding: 28px; margin-bottom: 16px; }
.page-training-detail .training-recipe-section { margin: 0; }
.page-training-detail .training-recipe-section + .training-recipe-section {
  margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--c200);
}
.page-training-detail .training-recipe-section h2 {
  margin: 0 0 8px; font-size: 28px; text-transform: none; letter-spacing: 0; color: var(--c800);
}
.page-training-detail .training-recipe-section .body-text { font-size: 15px; line-height: 1.6; color: var(--c800); }
.page-training-detail .training-actions-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 0; }
.page-training-detail .training-actions-row form { margin: 0; }

.page-training-detail .training-video-panel {
  display: flex; flex-direction: column; gap: 14px;
  background: var(--c50); border: 1px solid var(--c200); border-radius: 22px; padding: 26px;
}
.page-training-detail .training-video-panel + .training-video-panel { margin-top: 20px; }
.page-training-detail .training-video-panel h2 {
  margin: 0; font-size: 28px; text-transform: none; letter-spacing: 0; color: var(--c800);
}
.page-training-detail .training-video-panel video,
.page-training-detail .training-video-panel iframe { border-radius: 14px; background: var(--c950); }
.page-training-detail .training-yt-link { margin: 0; font-size: 14px; font-weight: 700; }
.page-training-detail .training-no-video {
  padding: 34px 12px; border: 1.5px dashed var(--c300); border-radius: 14px;
  color: var(--c600); font-size: 13.5px; font-weight: 600; text-align: center;
}

@media (max-width: 880px) {
  .page-training-detail .training-detail-grid { grid-template-columns: minmax(0, 1fr); }
}

/* ---------------------------------------------------------------------
   Training add / edit form (.page-training-form)
   --------------------------------------------------------------------- */
.page-training-form .tf-intro { margin: 6px 0 0; max-width: 820px; font-size: 15px; line-height: 1.5; color: var(--c600); }
.page-training-form .tf-layout {
  display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 24px; align-items: start;
}
.page-training-form .tf-card { margin-bottom: 0; padding: 26px; }
.page-training-form .tf-card h2 { margin: 0 0 16px; font-size: 30px; }
.page-training-form .tf-card .field:last-child { margin-bottom: 0; }
.page-training-form .tf-side { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.page-training-form .tf-optional { font-weight: 500; color: var(--c600); }
.page-training-form .tf-drop {
  display: flex; align-items: center; gap: 14px; padding: 14px;
  border: 1.5px dashed var(--c400); border-radius: 14px; background: var(--c100);
}
.page-training-form .tf-drop input[type="file"] {
  min-width: 0; flex: 1; border: none; background: transparent; padding: 0;
  font-size: 13px; font-weight: 600; color: var(--c800);
}
.page-training-form .tf-drop-icon {
  width: 56px; height: 56px; flex-shrink: 0; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  background: var(--c200); color: var(--c700);
}
.page-training-form .tf-drop-icon--dark { background: var(--c800); color: var(--c200); }
.page-training-form .tf-drop-icon svg { width: 24px; height: 24px; }
.page-training-form .training-current-media { margin: 0 0 10px; }
.page-training-form .training-current-media img { border-radius: 12px; border: 1px solid var(--c200); }
.page-training-form .training-current-media span { font-size: 12.5px; color: var(--c600); }
.page-training-form .tf-submit-row { margin-top: 0; }

@media (max-width: 980px) {
  .page-training-form .tf-layout { grid-template-columns: minmax(0, 1fr); }
}

/* ---------------------------------------------------------------------
   Users list (.page-users)
   --------------------------------------------------------------------- */
.page-users .users-section { padding: 26px 26px 16px; border-radius: 22px; margin-bottom: 24px; overflow: visible; }
.page-users .users-section h2 { margin: 0; font-size: 30px; }
.page-users .users-section-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 8px 20px;
  flex-wrap: wrap; padding-bottom: 12px;
}
.page-users .users-section-head p { margin: 0; font-size: 13px; color: var(--c600); }
.page-users .users-access-head { align-items: flex-end; }
.page-users .users-access-head > div:first-child { display: flex; flex-direction: column; gap: 4px; }
.page-users .users-legend {
  display: flex; align-items: center; gap: 10px 16px; flex-wrap: wrap;
  font-size: 12px; font-weight: 600; color: var(--c700);
}
.page-users .users-legend > span { display: inline-flex; align-items: center; gap: 6px; }
.page-users .users-legend .btn-toggle { cursor: default; }

.page-users .users-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.page-users .users-table { min-width: 920px; }
.page-users .users-access-table { min-width: 1080px; }
.page-users .users-table td,
.page-users .users-access-table td { border-bottom-color: var(--c100); }
.page-users .users-table tr:hover td,
.page-users .users-access-table tr:hover td { background: var(--c100); }

.page-users .users-person { display: flex; align-items: center; gap: 10px; min-width: 0; }
.page-users .users-initials {
  width: 40px; height: 40px; flex-shrink: 0; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--c200); color: var(--c800); font-weight: 800; font-size: 13px;
}
.page-users tbody tr:nth-child(3n+2) .users-initials { background: var(--c400); color: var(--c900); }
.page-users tbody tr:nth-child(3n) .users-initials { background: var(--c700); color: var(--c50); }
.page-users .users-person-text { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.page-users .users-person-name { font-weight: 700; font-size: 15px; color: var(--c900); white-space: nowrap; }
.page-users .users-access-table .users-person-name { font-size: 14px; }
.page-users .users-person-sub { font-size: 12px; color: var(--c600); white-space: nowrap; }
.page-users .users-you { font-weight: 600; font-size: 12px; color: var(--c600); }
.page-users .users-colour-input {
  width: 40px; height: 30px; min-height: 30px; padding: 2px;
  border-radius: 8px; border: 1.5px solid var(--c200); cursor: pointer;
}
.page-users .users-email { color: var(--c800); max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.page-users .users-created { font-size: 13px; color: var(--c700); font-variant-numeric: tabular-nums; white-space: nowrap; }
.page-users .users-row-actions { white-space: nowrap; text-align: right; }
.page-users .users-row-actions form { margin-left: 6px; }
.page-users .users-sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

.page-users .users-access-col { text-align: center; line-height: 1.25; white-space: normal; min-width: 76px; }
.page-users .users-access-cell { text-align: center; }
.page-users .users-in-role {
  display: inline-flex; align-items: center; padding: 4px 10px;
  border-radius: var(--radius-pill); background: var(--c100); color: var(--c600);
  border: 1px solid var(--c200); font-size: 11.5px; font-weight: 700; white-space: nowrap;
}

.page-users .users-add-head { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; }
.page-users .users-add-icon {
  width: 40px; height: 40px; flex-shrink: 0; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  background: var(--c200); color: var(--c800);
}
.page-users .users-add-icon svg { width: 20px; height: 20px; }
.page-users .users-add-grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 18px; align-items: start;
}
.page-users .users-hint { margin: 4px 0 0; font-size: 12.5px; }
.page-users .users-optional { font-weight: 500; font-size: 13px; }
.page-users .users-password-wrap { position: relative; }
.page-users .users-password-wrap input { padding-right: 60px; }
.page-users .users-password-toggle {
  position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
  min-height: 32px; padding: 4px 10px; border: none; border-radius: 8px;
  background: transparent; color: var(--c700); font-size: 12px; font-weight: 800; cursor: pointer;
}
.page-users .users-password-toggle:hover { background: var(--c100); color: var(--c900); }
.page-users .users-add-footer {
  display: flex; align-items: center; justify-content: space-between; gap: 16px 24px;
  padding: 16px 0 10px; border-top: 1px solid var(--c200); margin-top: 4px;
}
.page-users .users-add-note {
  margin: 0; max-width: 780px; padding: 12px 14px; border-radius: 14px;
  background: var(--c100); color: var(--c700); font-size: 13px; line-height: 1.55;
}
.page-users .users-add-footer .btn { flex-shrink: 0; }

@media (max-width: 1100px) {
  .page-users .users-add-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 768px) {
  .page-users .users-section { padding: 20px 16px 12px; }
  .page-users .users-add-grid { grid-template-columns: minmax(0, 1fr); }
  .page-users .users-add-footer { flex-direction: column; align-items: stretch; }
  .page-users .users-legend { font-size: 11.5px; }
}

/* ---------------------------------------------------------------------
   Edit user (.page-user-edit)
   --------------------------------------------------------------------- */
.page-user-edit .ue-layout {
  display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 24px; align-items: start;
}
.page-user-edit .ue-layout-single { grid-template-columns: minmax(0, 760px); }
.page-user-edit .ue-card { padding: 26px; border-radius: 22px; margin-bottom: 0; overflow: visible; }
.page-user-edit .ue-card h2 { margin: 0; font-size: 30px; }
.page-user-edit .ue-card > h2:first-child { margin-bottom: 12px; }
.page-user-edit .ue-card-head { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.page-user-edit .ue-card-head p { margin: 2px 0 0; font-size: 13px; }
.page-user-edit .ue-initials {
  width: 52px; height: 52px; flex-shrink: 0; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--c400); color: var(--c900); font-weight: 800; font-size: 16px;
}
.page-user-edit .ue-icon-tile {
  width: 40px; height: 40px; flex-shrink: 0; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  background: var(--c200); color: var(--c800);
}
.page-user-edit .ue-icon-tile svg { width: 20px; height: 20px; }
.page-user-edit .ue-form-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; align-items: start;
}
.page-user-edit .ue-hint { margin: 4px 0 0; font-size: 12.5px; }
.page-user-edit .ue-note {
  display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; margin-top: 2px;
  border-radius: 14px; background: var(--c100); color: var(--c700); font-size: 13px; line-height: 1.55;
}
.page-user-edit .ue-note svg { width: 18px; height: 18px; flex-shrink: 0; margin-top: 1px; }
.page-user-edit .ue-side { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.page-user-edit .ue-lead { margin: 0 0 14px; font-size: 14px; line-height: 1.6; color: var(--c700); }
.page-user-edit .ue-photo-row { display: flex; align-items: center; gap: 18px; padding-top: 4px; }
.page-user-edit .ue-photo {
  width: 96px; height: 96px; flex-shrink: 0; border-radius: 50%;
  object-fit: cover; border: 1px solid var(--c300);
}
.page-user-edit .ue-photo-empty {
  display: flex; align-items: center; justify-content: center;
  background: var(--c200); color: var(--c800); font-weight: 800; font-size: 22px;
}
.page-user-edit .ue-photo-forms { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.page-user-edit .ue-avatar-form { margin: 0; display: flex; flex-direction: column; gap: 10px; }
.page-user-edit .ue-avatar-form label { margin-bottom: 0; }
.page-user-edit .ue-avatar-form input[type="file"] { background: var(--c100); border-color: var(--c400); font-size: 13px; }
.page-user-edit .ue-photo-buttons { display: flex; flex-wrap: wrap; gap: 10px; }
.page-user-edit .ue-photo-forms > form:not(.ue-avatar-form) { margin: 0; }
.page-user-edit .ue-saved { display: flex; align-items: center; gap: 8px; }
.page-user-edit .ue-saved svg { width: 18px; height: 18px; flex-shrink: 0; }
.page-user-edit .ue-pin-form { display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap; }
.page-user-edit .ue-pin-form .field { margin-bottom: 0; }
.page-user-edit .ue-pin-form input { width: 140px; letter-spacing: 0.2em; font-variant-numeric: tabular-nums; }

@media (max-width: 980px) {
  .page-user-edit .ue-layout { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 768px) {
  .page-user-edit .ue-card { padding: 20px 16px; }
  .page-user-edit .ue-form-grid { grid-template-columns: minmax(0, 1fr); }
  .page-user-edit .ue-photo-row { flex-direction: column; align-items: flex-start; }
  .page-user-edit .ue-photo-forms { width: 100%; }
}

/* ---------------------------------------------------------------------
   My Profile (.page-profile) + its modals (.profile-modal)
   --------------------------------------------------------------------- */
.page-profile .profile-status {
  display: inline-flex; align-items: center; gap: 8px; min-height: 36px; padding: 6px 14px;
  border-radius: var(--radius-pill); background: var(--c700); color: var(--c50);
  font-size: 13px; font-weight: 800;
}
.page-profile .profile-status svg { width: 16px; height: 16px; flex-shrink: 0; }
.page-profile .profile-top-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: stretch;
  margin-bottom: 24px;
}
.page-profile .profile-top-grid > .card { margin-bottom: 0; }
.page-profile .card { padding: 26px; border-radius: 22px; }
.page-profile .card h2 { margin: 0; font-size: 30px; }
.page-profile .profile-header { display: flex; align-items: center; gap: 20px; margin-bottom: 0; }
.page-profile .profile-avatar-lg,
.page-profile .profile-avatar-lg-placeholder {
  width: 104px; height: 104px; flex-shrink: 0; border-radius: 50%;
  border: 3px solid var(--c50); box-shadow: 0 0 0 1.5px var(--c300);
}
.page-profile .profile-avatar-lg-placeholder { background: var(--c200); color: var(--c700); }
.page-profile .profile-id { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.page-profile .profile-id .profile-name { font-size: 34px; line-height: 1.05; color: var(--c800); overflow-wrap: anywhere; }
.page-profile .profile-email { font-size: 14px; color: var(--c600); overflow-wrap: anywhere; }
.page-profile .profile-id .badge { margin-top: 4px; }
.page-profile .profile-avatar-form { margin: 18px 0 0; padding-top: 16px; border-top: 1px solid var(--c200); }
.page-profile .profile-avatar-form .field { margin-bottom: 8px; }
.page-profile .profile-avatar-form input[type="file"] { background: var(--c100); border-color: var(--c400); font-size: 13px; }
.page-profile .profile-hint { margin: 0; font-size: 12.5px; line-height: 1.5; }
.page-profile .profile-avatar-form .actions-row { margin-top: 12px; }
.page-profile .profile-zoom-label { margin: 0; font-size: 13px; font-weight: 700; color: var(--c700); }
.page-profile .cropper-image-box { background: var(--c950); border-radius: 14px; }
.page-profile .profile-remove-form { margin-top: 10px; }

.page-profile .profile-info { display: flex; flex-direction: column; gap: 16px; }
.page-profile .profile-dl { margin: 0; gap: 0 20px; }
.page-profile .profile-dl > div {
  display: flex; flex-direction: column; gap: 3px; min-width: 0;
  padding: 11px 0; border-bottom: 1px solid var(--c200);
}
.page-profile .profile-dl dd { margin: 0; font-weight: 700; overflow-wrap: anywhere; }
.page-profile .profile-info > p { margin: 0; }

.page-profile .profile-section-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 6px 20px; flex-wrap: wrap;
  margin-bottom: 16px;
}
.page-profile .profile-section-head p { margin: 0; }
.page-profile .week-hours-grid { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 12px; margin: 0; }
.page-profile .week-hours-day {
  padding: 14px 6px; border-radius: 16px; background: var(--c100); border: 1.5px solid var(--c200);
}
.page-profile .week-hours-day.is-today { background: var(--c800); border-color: var(--c800); }
.page-profile .week-hours-day .wh-name { font-size: 11px; font-weight: 800; letter-spacing: 0.14em; color: var(--c600); }
.page-profile .week-hours-day .wh-date { font-size: 12px; color: var(--c600); }
.page-profile .week-hours-day .wh-hours { font-size: 18px; font-weight: 800; margin-top: 8px; color: var(--c900); font-variant-numeric: tabular-nums; }
.page-profile .week-hours-day .wh-hours.is-off { font-size: 14px; font-weight: 600; color: var(--c600); }
.page-profile .week-hours-day.is-today .wh-name,
.page-profile .week-hours-day.is-today .wh-date { color: var(--c300); }
.page-profile .week-hours-day.is-today .wh-hours { color: var(--c50); }
.page-profile .week-hours-day.is-today .wh-hours.is-off { color: var(--c200); }

.page-profile .profile-security { max-width: 640px; }
.page-profile .profile-card-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.page-profile .profile-icon-tile {
  width: 40px; height: 40px; flex-shrink: 0; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  background: var(--c200); color: var(--c800);
}
.page-profile .profile-icon-tile svg { width: 20px; height: 20px; }
.page-profile .profile-lead { margin: 0; font-size: 14px; line-height: 1.6; color: var(--c700); overflow-wrap: anywhere; }
.page-profile .profile-security .actions-row { margin-top: 16px; }

.profile-modal .modal-box { max-width: 440px; max-height: calc(100vh - 40px); overflow-y: auto; }
.profile-modal .profile-pw-rules { margin: -6px 0 14px; font-size: 12.5px; line-height: 1.5; }
.profile-modal .modal-step .actions-row { margin-top: 16px; }

@media (max-width: 980px) {
  .page-profile .profile-top-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 768px) {
  .page-profile .card { padding: 20px 16px; }
  .page-profile .profile-header { gap: 14px; }
  .page-profile .profile-avatar-lg,
  .page-profile .profile-avatar-lg-placeholder { width: 80px; height: 80px; }
  .page-profile .profile-id .profile-name { font-size: 28px; }
  .page-profile .profile-dl { grid-template-columns: minmax(0, 1fr); }
  .page-profile .week-hours-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
  .page-profile .profile-status { white-space: normal; }
}

/* ---------------------------------------------------------------------
   Privacy notice acknowledgement (.page-privacy-accept)
   --------------------------------------------------------------------- */
.page-privacy-accept .pa-status { white-space: normal; text-align: left; }
.page-privacy-accept .pa-status svg { width: 15px; height: 15px; flex-shrink: 0; }
.page-privacy-accept .pa-intro {
  margin: -6px 0 24px; max-width: 760px; font-size: 16px; line-height: 1.6; color: var(--c700);
}
.page-privacy-accept .pa-notice { padding: 30px 30px 24px; border-radius: 22px; margin-bottom: 24px; overflow: visible; }
.page-privacy-accept .pa-columns { column-count: 2; column-gap: 48px; column-rule: 1px solid var(--c200); }
.page-privacy-accept .pa-section {
  break-inside: avoid; display: flex; flex-direction: column; gap: 8px; padding-bottom: 22px;
}
.page-privacy-accept .pa-section h2 { margin: 0; font-size: 26px; line-height: 1.1; color: var(--c800); }
.page-privacy-accept .pa-section p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--c800); }
.page-privacy-accept .pa-list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 7px; }
.page-privacy-accept .pa-list li {
  position: relative; padding-left: 16px; font-size: 14px; line-height: 1.55; color: var(--c800);
}
.page-privacy-accept .pa-list li::before {
  content: ''; position: absolute; left: 0; top: 8px;
  width: 6px; height: 6px; border-radius: 3px; background: var(--c500);
}
.page-privacy-accept .pa-section .pa-note {
  padding: 10px 12px; border-radius: 12px; background: var(--c100); font-size: 13px; line-height: 1.55; color: var(--c700);
}
.page-privacy-accept .pa-version { margin: 0; padding-top: 14px; border-top: 1px solid var(--c200); font-size: 12.5px; color: var(--c600); }
.page-privacy-accept .pa-form {
  display: flex; align-items: center; justify-content: space-between; gap: 16px 24px; flex-wrap: wrap;
  padding: 22px 26px; border-radius: 22px; background: var(--c800); color: var(--c50);
}
.page-privacy-accept .pa-confirm {
  display: flex; align-items: flex-start; gap: 14px; margin: 0; cursor: pointer;
  font-size: 16px; font-weight: 700; color: var(--c50); flex: 1 1 320px;
}
.page-privacy-accept .pa-confirm input[type="checkbox"] {
  width: 22px; height: 22px; margin: 1px 0 0; flex-shrink: 0; accent-color: var(--c300);
}
.page-privacy-accept .pa-form .btn { background: var(--c200); border-color: var(--c200); color: var(--c900); font-weight: 800; flex-shrink: 0; }
.page-privacy-accept .pa-form .btn:hover { background: var(--c50); border-color: var(--c50); }

@media (max-width: 900px) {
  .page-privacy-accept .pa-columns { column-count: 1; column-rule: none; }
}
@media (max-width: 768px) {
  .page-privacy-accept .pa-notice { padding: 20px 16px 16px; }
  .page-privacy-accept .pa-form { padding: 18px 16px; }
  .page-privacy-accept .pa-form .btn { width: 100%; }
}

/* ---------------------------------------------------------------------
   Phone-width tweaks shared by the group
   --------------------------------------------------------------------- */
@media (max-width: 768px) {
  .page-training .training-hero { padding: 22px 18px; }
  .page-training .training-hero .page-title { font-size: 38px; }
  .page-training .training-hero-bars { display: none; }
  .page-training .training-section-head h2 { font-size: 28px; }
  .page-training-detail .training-detail-hero { min-height: 220px; padding: 14px; }
  .page-training-detail .training-detail-hero-inner { padding: 18px; }
  .page-training-detail .training-detail-hero .page-title { font-size: 36px; }
  .page-training-detail .training-recipe-card,
  .page-training-detail .training-video-panel,
  .page-training-form .tf-card { padding: 20px 16px; }
  .page-training-form .tf-drop { flex-wrap: wrap; }
}

/* ==========================================================================
   Message Staff (.page-messages, msg-*)
   Admin / Senior Manager emailing staff from admin@. Monochrome c-scale only.
   ========================================================================== */
.page-messages .page-header-text { max-width: 820px; }
.page-messages .msg-intro { margin: 6px 0 0; max-width: 780px; font-size: 15px; line-height: 1.5; color: var(--c600); }
.page-messages .msg-private-chip {
  display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 16px;
  border-radius: var(--radius-btn); border: 1.5px dashed var(--c400); color: var(--c700);
  font-size: 13px; font-weight: 700; white-space: nowrap;
}
.page-messages .msg-private-chip svg { width: 16px; height: 16px; flex-shrink: 0; }
.page-messages .error-box[hidden] { display: none; }

.page-messages .msg-form {
  display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 24px; align-items: start;
}
.page-messages .msg-card { margin-bottom: 0; padding: 26px; border-radius: 22px; min-width: 0; }
.page-messages .card h2 { font-size: 30px; line-height: 1.1; margin: 0 0 16px; color: var(--c800); }
.page-messages .msg-card-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 16px;
}
.page-messages .msg-card-head h2 { margin: 0; }
.page-messages .msg-count { font-size: 13px; font-weight: 700; color: var(--c600); }

.page-messages .msg-select-all {
  display: flex; align-items: center; gap: 10px; margin: 0 0 10px; padding: 10px 12px;
  border-radius: 12px; background: var(--c800); color: var(--c50);
  font-size: 14px; font-weight: 700; cursor: pointer;
}
.page-messages .msg-recipients {
  display: flex; flex-direction: column; gap: 6px; max-height: 460px; overflow-y: auto; padding-right: 2px;
}
.page-messages .msg-recipient {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 10px;
  margin: 0; padding: 9px 12px; border-radius: 12px; border: 1px solid var(--c200); background: var(--c50);
  cursor: pointer;
}
.page-messages .msg-recipient:hover { border-color: var(--c400); }
.page-messages .msg-recipient:has(input:checked) { background: var(--c100); border-color: var(--c600); }
.page-messages .msg-select-all input,
.page-messages .msg-recipient input { width: 18px; height: 18px; margin: 0; accent-color: var(--c700); }
.page-messages .msg-select-all input { accent-color: var(--c300); }
.page-messages .msg-recipient-name { font-size: 14.5px; font-weight: 700; color: var(--c900); overflow-wrap: anywhere; }
.page-messages .msg-recipient-role {
  font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--c600); white-space: nowrap;
}

.page-messages .msg-chars { margin-top: 6px; font-size: 12.5px; text-align: right; }
.page-messages .msg-attach { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.page-messages .msg-attach-label { font-size: 13px; font-weight: 700; color: var(--c800); }
.page-messages .msg-attach-label span { font-weight: 500; color: var(--c600); }
.page-messages .msg-file-list { display: flex; flex-direction: column; gap: 6px; width: 100%; }
.page-messages .msg-file-list:empty { display: none; }
.page-messages .msg-file-item {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  min-height: 42px; padding: 6px 8px 6px 12px; border-radius: 10px;
  background: var(--c100); border: 1px solid var(--c200);
  font-size: 14px; font-weight: 600; color: var(--c900);
}
.page-messages .msg-file-item span { min-width: 0; overflow-wrap: anywhere; }
.page-messages .msg-file-remove {
  border: 0; background: none; cursor: pointer;
  color: var(--c700); font-weight: 700; font-size: 13px; padding: 6px 10px; border-radius: 8px;
}
.page-messages .msg-file-remove:hover { background: var(--c200); color: var(--c900); }
.page-messages .msg-help { margin: 0; font-size: 13px; line-height: 1.5; }
.page-messages .msg-submit { display: flex; justify-content: flex-end; padding-top: 4px; }

@media (max-width: 900px) {
  .page-messages .msg-form { grid-template-columns: minmax(0, 1fr); }
  .page-messages .msg-recipients { max-height: 320px; }
}
@media (max-width: 768px) {
  .page-messages .msg-card { padding: 20px 16px; }
  .page-messages .card h2 { font-size: 26px; }
  .page-messages .msg-private-chip { white-space: normal; }
  .page-messages .msg-submit .btn { width: 100%; }
}
