 
/* Base tooltip container */
.introjs-tooltip.introjs-bs5 {
  border-radius: .75rem;
  border: 1px solid var(--bs-border-color);
  box-shadow: 0 10px 30px rgba(0,0,0,.15);
  padding: 0.625rem 0.875rem 0.5rem;
  max-width: 21.875rem;
  font-family: inherit;
  background: var(--bs-body-bg);
  color: var(--bs-body-color);
}

/* Header */
.introjs-tooltip.introjs-bs5 .introjs-tooltip-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: .25rem;
}
.introjs-tooltip-header { position: relative; padding-left:0; padding-right:1.25rem; padding-top:0.625rem; min-height:1.5em; }
.introjs-tooltip.introjs-bs5 .introjs-tooltip-title { font-size:.875rem; font-weight:600; margin:0; }
.introjs-tooltip.introjs-bs5 .introjs-skipbutton {
  order:2; font-size:.8rem; font-weight:500; color: var(--bs-secondary-color) !important;
  background:none; border:none; padding:0; cursor:pointer;
}

/* Body text */
.introjs-tooltip.introjs-bs5 .introjs-tooltiptext { color: var(--bs-body-color); font-size:.95rem; line-height:1.5; }

/* Progress bar */
.introjs-tooltip.introjs-bs5 .introjs-progress {
  height:.375rem; background: var(--bs-border-color);
  border-radius:999px; margin:.5rem 0 .6rem; border-top:none !important;
}
.introjs-tooltip.introjs-bs5 .introjs-progressbar { background: var(--bs-primary); border-radius:inherit; }

/* Buttons row — Back left, Next/Done right */
.introjs-tooltip.introjs-bs5 .introjs-tooltipbuttons { display:flex; align-items:center; border-top:0; }
.introjs-prevbutton { margin-right:auto; }
.introjs-nextbutton, .introjs-donebutton { margin-left:auto; }

/* Buttons (Bootstrap look) */
.introjs-button {
  box-sizing:content-box; padding:.375rem .75rem; border:1px solid var(--bs-border-color);
  font-size:0.875rem; font-weight:400; color: var(--bs-body-color); background: var(--bs-light);
  border-radius:.5rem; cursor:pointer; display:inline-block; text-shadow:none !important;
}
.introjs-prevbutton { background: var(--bs-secondary); border-color: var(--bs-secondary); color: var(--bs-white); }
.introjs-nextbutton, .introjs-donebutton { background: var(--bs-primary); border-color: var(--bs-primary); color: var(--bs-white); }
.introjs-disabled { opacity:.5; pointer-events:none; }

/* Layering so highlight/tooltip sit above page content & offcanvas */
.introjs-helperLayer {
  border-radius:.75rem; box-shadow:0 0 0 2px rgba(37,99,235,.0);
  z-index:2055; /* above --pp-z-offcanvas (2000) & modal (1055) */
}
.introjs-overlay { background: rgba(0,0,0,.45); z-index:2000; }
.introjs-tooltipReferenceLayer { z-index:2060; }
.introjs-tooltip.introjs-bs5 { z-index:2070; }
.introjs-arrow { filter: drop-shadow(0 1px 2px rgba(0,0,0,.15)); z-index:2071; }
.introjs-disableInteraction { z-index:2080; }

/* Dark mode */
:root[data-theme="dark"] .introjs-tooltip.introjs-bs5,
[data-bs-theme="dark"] .introjs-tooltip.introjs-bs5 {
  background: var(--pp-surface-2); color: var(--bs-body-color);
  border-color: var(--bs-border-color);
  box-shadow:0 10px 30px rgba(0,0,0,.8);
}
:root[data-theme="dark"] .introjs-tooltip.introjs-bs5 .introjs-tooltip-title,
[data-bs-theme="dark"] .introjs-tooltip.introjs-bs5 .introjs-tooltip-title { color: var(--bs-body-color); }
:root[data-theme="dark"] .introjs-tooltip.introjs-bs5 .introjs-skipbutton,
[data-bs-theme="dark"] .introjs-tooltip.introjs-bs5 .introjs-skipbutton { color: var(--pp-muted) !important; }
:root[data-theme="dark"] .introjs-tooltip.introjs-bs5 .introjs-tooltiptext,
[data-bs-theme="dark"] .introjs-tooltip.introjs-bs5 .introjs-tooltiptext { color: var(--bs-body-color); }
:root[data-theme="dark"] .introjs-tooltip.introjs-bs5 .introjs-progress,
[data-bs-theme="dark"] .introjs-tooltip.introjs-bs5 .introjs-progress {
  background: var(--bs-border-color);
  border-top:none !important; margin:.5rem 0 .6rem;
}
:root[data-theme="dark"] .introjs-tooltip.introjs-bs5 .introjs-progressbar,
[data-bs-theme="dark"] .introjs-tooltip.introjs-bs5 .introjs-progressbar { background: var(--bs-primary); }
:root[data-theme="dark"] .introjs-button, [data-bs-theme="dark"] .introjs-button {
  background: var(--pp-surface); border-color: var(--bs-border-color); color: var(--bs-body-color); text-shadow:none !important;
}
:root[data-theme="dark"] .introjs-prevbutton, [data-bs-theme="dark"] .introjs-prevbutton {
  background: var(--bs-secondary); border-color: var(--bs-secondary); color: var(--bs-white);
}
:root[data-theme="dark"] .introjs-nextbutton, :root[data-theme="dark"] .introjs-donebutton,
[data-bs-theme="dark"] .introjs-nextbutton, [data-bs-theme="dark"] .introjs-donebutton {
  background: var(--bs-primary); border-color: var(--bs-primary); color: var(--bs-white);
}
:root[data-theme="dark"] .introjs-disabled, [data-bs-theme="dark"] .introjs-disabled { opacity:.5; }
:root[data-theme="dark"] .introjs-helperLayer, [data-bs-theme="dark"] .introjs-helperLayer {
  border-radius:.75rem; background:rgba(255,255,255,0.05); box-shadow:0 0 0 2px var(--bs-primary);
}
:root[data-theme="dark"] .introjs-overlay, [data-bs-theme="dark"] .introjs-overlay { background: rgba(0,0,0,.55); }
:root[data-theme="dark"] .introjs-arrow, [data-bs-theme="dark"] .introjs-arrow {
  filter: brightness(1.5) drop-shadow(0 1px 2px rgba(0,0,0,.35));
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .introjs-tooltip.introjs-bs5, .introjs-arrow, .introjs-helperLayer { transition:none !important; }
}

/* Requested tweaks */
.introjs-tooltip.introjs-bs5 .introjs-tooltip-title,
.introjs-tooltip.introjs-bs5 .introjs-tooltiptext { padding:.25rem !important; }
.introjs-bullets { display:none !important; }

/* =========================================================
   1) LAYOUT TOKENS (color tokens live in palettes.css)
   ========================================================= */
:root {
  /* Layout / sticky helpers (--navbar-h measured in theme.js) */
  --navbar-h: 4.0625rem;
  --safe-top: 0;

  /* Page horizontal inset — container + grid gutters (see productiveparks-new.css) */
  --pp-page-gutter-x: 1.5rem;

  /* Vertical rhythm — page title, body stack, section cards (see productiveparks-new.css) */
  --pp-h1-padding-top: 1.25rem;
  --pp-h1-padding-bottom: 0.625rem;
  --pp-page-body-gap: 1rem;
  --pp-section-card-gap: 1.5rem;
  --pp-section-card-padding: 1rem;

  /* Control → label gap on .form-check (not switches) */
  --pp-form-check-gap: 0.35rem;

  /* App accent (for “open” cues, etc.) */
  --pp-accent: var(--bs-primary);

  /* Stacking — navbar stays on top; staff panel slides beneath it */
  --pp-z-navbar: 1030;
  --pp-z-staff-actions: 1020;
  --pp-z-attention-dropdown: 1040;
  --pp-z-datepicker: 1060;
  --pp-z-offcanvas-backdrop: 1990;
  --pp-z-offcanvas: 2000;
  --pp-z-modal-backdrop: 2010;
  --pp-z-modal: 2020;
}

@supports (top: env(safe-area-inset-top)) {
  :root { --safe-top: env(safe-area-inset-top); }
}

/* Global html/body */
html {
  scroll-behavior: smooth;
  scroll-padding-top: var(--navbar-h);
  font-size: 100%;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body {
  font-kerning: normal;
  font-weight: 400;
}

/* Reduced motion accessibility */
@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; transition: none !important; }
}


/* =========================================================
   2) COMPONENT TUNING
   ========================================================= */

/* Navbar hover fade */
nav.navbar.fixed-top {
  z-index: var(--pp-z-navbar);
}
.navbar .nav-link,
.navbar .dropdown-item { transition: opacity .2s ease-in-out; }
.navbar .nav-link:hover,
.navbar .dropdown-item:hover { opacity: .75; }

/* Main navbar — 20% darker primary; offcanvas headers stay primary */
nav.navbar.bg-success {
  background-color: var(--pp-navbar-bg) !important;
}
.offcanvas-header.bg-success {
  background-color: var(--pp-nav-header-bg) !important;
}
.navbar.bg-success .bg-success {
  background-color: var(--pp-navbar-bg) !important;
}

/* Accessible palette — high-contrast light chrome (data-palette="default") */
:root[data-palette="default"] a:not(.btn):not(.nav-link):not(.dropdown-item):not(.page-link):not(.list-group-item) {
  text-decoration: underline;
  text-underline-offset: 0.12em;
}
:root[data-palette="default"] :focus-visible {
  outline: 0.125rem solid var(--bs-primary);
  outline-offset: 0.125rem;
}
/* Assign-task staff title dropdown — iOS keeps focus while menu is open */
:root[data-palette="default"] .assign-task-page-header .assign-task-staff-dropdown__trigger:focus,
:root[data-palette="default"] .assign-task-page-header .assign-task-staff-dropdown__trigger:focus-visible,
:root[data-palette="default"] .assign-task-page-header .assign-task-staff-dropdown__trigger:active {
  box-shadow: none;
  outline: none;
}
:root[data-palette="default"] .form-select,
:root[data-palette="default"] .form-control,
:root[data-palette="default"] .list-group-item,
:root[data-palette="default"] .form-check-input {
  border-color: var(--bs-border-color);
}
/* Accessible palette only — redundant left-border cue on semantic rows (gated when row fills pilot is off) */
:root[data-palette="default"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.completed-task > td:first-child,
:root[data-palette="default"]:not([data-pp-table-row-status="off"]) table.display tbody tr.completed-task > td:first-child,
:root[data-palette="default"]:not([data-pp-table-row-status="off"]) table.table tbody tr.completed-task > td:first-child,
:root[data-palette="default"]:not([data-pp-table-row-status="off"]) .completed-task > td:first-child {
  box-shadow: inset 0.25rem 0 0 var(--bs-success);
}
:root[data-palette="default"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task > td:first-child,
:root[data-palette="default"]:not([data-pp-table-row-status="off"]) table.display tbody tr.in-process-task > td:first-child,
:root[data-palette="default"]:not([data-pp-table-row-status="off"]) table.table tbody tr.in-process-task > td:first-child,
:root[data-palette="default"]:not([data-pp-table-row-status="off"]) .in-process-task > td:first-child {
  box-shadow: inset 0.25rem 0 0 var(--pp-row-status-in-process-accent);
}
:root[data-palette="default"] table.dataTable.display tbody tr.danger > td:first-child,
:root[data-palette="default"] table.display tbody tr.danger > td:first-child,
:root[data-palette="default"] table.table tbody tr.danger > td:first-child,
:root[data-palette="default"] .danger > td:first-child {
  box-shadow: inset 0.25rem 0 0 var(--bs-danger);
}

/* Small buttons: ensure usable height + roomier horizontal padding (Bootstrap sm default 0.5rem) */
.btn-sm,
.btn-group-sm > .btn {
  --bs-btn-padding-x: 1rem;
}
.btn.btn-sm {
  min-height: 2rem;
}

/* Unified borders for form & list elements */
.form-select,
.form-control,
.list-group-item,
.form-check-input {
  border: var(--bs-border-width) solid var(--bs-border-color);
}

/* Bootstrap CDN button variants — map to palette tokens (loads after Bootstrap + palettes.css)
   CDN bakes #0d6efd / #198754 into .btn-*; overriding :root alone does not reach --bs-btn-bg. */
.btn-primary {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--pp-primary-hover);
  --bs-btn-hover-border-color: var(--pp-primary-hover);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--pp-primary-hover);
  --bs-btn-active-border-color: var(--pp-primary-hover);
  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: var(--bs-primary);
  --bs-btn-disabled-border-color: var(--bs-primary);
}
.btn-secondary {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-secondary);
  --bs-btn-border-color: var(--bs-secondary);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: color-mix(in oklab, var(--bs-secondary) 85%, #000 15%);
  --bs-btn-hover-border-color: color-mix(in oklab, var(--bs-secondary) 85%, #000 15%);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: color-mix(in oklab, var(--bs-secondary) 75%, #000 25%);
  --bs-btn-active-border-color: color-mix(in oklab, var(--bs-secondary) 75%, #000 25%);
}
.btn-success {
  --bs-btn-bg: var(--bs-success);
  --bs-btn-border-color: var(--bs-success);
  --bs-btn-hover-bg: color-mix(in oklab, var(--bs-success) 85%, #000 15%);
  --bs-btn-hover-border-color: color-mix(in oklab, var(--bs-success) 85%, #000 15%);
  --bs-btn-active-bg: color-mix(in oklab, var(--bs-success) 75%, #000 25%);
  --bs-btn-active-border-color: color-mix(in oklab, var(--bs-success) 75%, #000 25%);
}
.btn-danger {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-danger);
  --bs-btn-border-color: var(--bs-danger);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: color-mix(in oklab, var(--bs-danger) 85%, #000 15%);
  --bs-btn-hover-border-color: color-mix(in oklab, var(--bs-danger) 85%, #000 15%);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: color-mix(in oklab, var(--bs-danger) 75%, #000 25%);
  --bs-btn-active-border-color: color-mix(in oklab, var(--bs-danger) 75%, #000 25%);
}
.btn-outline-primary {
  --bs-btn-color: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-primary);
  --bs-btn-hover-border-color: var(--bs-primary);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-primary);
  --bs-btn-active-border-color: var(--bs-primary);
  --bs-btn-disabled-color: var(--bs-primary);
  --bs-btn-disabled-border-color: var(--bs-primary);
}
.btn-check:checked + .btn-outline-primary {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
}
.btn-outline-secondary {
  --bs-btn-color: var(--bs-secondary-color);
  --bs-btn-border-color: var(--bs-border-color);
  --bs-btn-hover-color: var(--bs-emphasis-color);
  --bs-btn-hover-bg: var(--bs-tertiary-bg);
  --bs-btn-hover-border-color: var(--bs-border-color);
  --bs-btn-active-color: var(--bs-emphasis-color);
  --bs-btn-active-bg: var(--bs-tertiary-bg);
  --bs-btn-active-border-color: var(--bs-border-color);
  --bs-btn-disabled-color: var(--bs-secondary-color);
  --bs-btn-disabled-border-color: var(--bs-border-color);
}
.btn-outline-danger {
  --bs-btn-color: var(--bs-danger);
  --bs-btn-border-color: var(--bs-danger);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-danger);
  --bs-btn-hover-border-color: var(--bs-danger);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-danger);
  --bs-btn-active-border-color: var(--bs-danger);
  --bs-btn-disabled-color: var(--bs-danger);
  --bs-btn-disabled-border-color: var(--bs-danger);
}

/* Bootstrap CDN nav-pills — map active state to palette primary (loads after Bootstrap + palettes.css) */
.nav-pills {
  --bs-nav-pills-link-active-bg: var(--bs-primary);
  --bs-nav-pills-link-active-color: var(--bs-white);
}

/* Dropdown “open” state (expanded toggles) — nav/toolbar; not PP table toolbar icon buttons */
[data-bs-toggle="dropdown"][aria-expanded="true"]:not(.pp-dt-export-icon-btn):not(.pp-dt-toolbar-icon-btn):not(.pp-asset-dashboard-nav__browse-trigger){
  background-color: var(--bs-dark);
  color: var(--bs-light);
  border-color: var(--bs-dark);
}
[data-bs-toggle="dropdown"][aria-expanded="true"]:not(.pp-dt-export-icon-btn):not(.pp-dt-toolbar-icon-btn):not(.pp-asset-dashboard-nav__browse-trigger) .text-body,
[data-bs-toggle="dropdown"][aria-expanded="true"]:not(.pp-dt-export-icon-btn):not(.pp-dt-toolbar-icon-btn):not(.pp-asset-dashboard-nav__browse-trigger) .bi{
  color: var(--bs-light);
}

/* Offcanvas nav menus (Dashboards, Setup, My Account, Help, Edit Task drawer) */
.pp-offcanvas-menu {
  --pp-offcanvas-menu-hover-color:    var(--bs-emphasis-color);
  --bs-list-group-border-color:       var(--bs-border-color);
  --bs-list-group-action-hover-bg:    var(--bs-tertiary-bg);
  --bs-list-group-action-hover-color: var(--pp-offcanvas-menu-hover-color);
  --bs-list-group-active-bg:          var(--bs-primary);
  --bs-list-group-active-color:       #fff;
}

.pp-offcanvas-menu .list-group-item-action:hover .bi:not(.text-danger),
.pp-offcanvas-menu .list-group-item-action:focus-visible .bi:not(.text-danger) {
  color: var(--pp-offcanvas-menu-hover-color);
}

.pp-offcanvas-menu .list-group-item-action:hover small,
.pp-offcanvas-menu .list-group-item-action:focus-visible small {
  color: inherit;
}
/* Navbar brand — match .nav-header-util-icon (1.25rem) on desktop + mobile */
.pp-icon { height: 1.25rem; width: 1.25rem; }
#AddTime { scroll-margin-top: 1.875rem; }


/* =========================================================
   3) ACCORDION — BASE & OPEN CUES
   ========================================================= */

/* Keep button weight inherited; remove extra shadow.
   Use utilities in markup (py-3, fs-5) if you want bigger headers. */
.accordion .accordion-button { font-weight: inherit; box-shadow: none; }
.accordion .accordion-button.is-offline {
  background-color: var(--pp-accordion-offline-bg);
  color: var(--pp-accordion-offline-color);
}

/* Divider under each body (light) */
.accordion-body { border-bottom: 4px solid var(--bs-border-color); }

/* Task list accordions — thinner divider (scoped; see productiveparks-new.css for padding) */
[data-pref-key="task-accordion-1"] .accordion-body {
  border-bottom: 1px solid var(--bs-border-color);
}
/* view_individual_task — no body divider inside card */
[data-task-detail-page][data-pref-key="task-accordion-1"] .accordion-body {
  border-bottom: 0;
}

/* =========================================================
   4) CHIPS / PILLS
   ========================================================= */
.priority-1,
.priority-2,
.priority-3,
.priority-4,
.priority-5 {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: .75rem;
  font-weight: 500;
  padding: .2rem 0.5rem;
  border-radius: 0.25rem;
  min-width: 0;
}
.priority-1::before,
.priority-2::before,
.priority-3::before,
.priority-4::before,
.priority-5::before {
  content: "";
  flex-shrink: 0;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
}
.priority-1 {
  background-color: var(--pp-priority-1-bg);
  border: 1px solid var(--pp-priority-1-bg);
  color: var(--pp-priority-1-fg);
}
.priority-1::before {
  background-color: var(--pp-priority-1-dot);
}
.priority-2,
.priority-3,
.priority-4,
.priority-5 {
  background-color: var(--pp-priority-chip-bg);
  color: var(--pp-priority-chip-fg);
}
.priority-2 {
  border: 1px solid var(--pp-priority-2-border);
}
.priority-2::before {
  background-color: var(--pp-priority-2-dot);
}
.priority-3 {
  border: 1px solid var(--pp-priority-3-border);
}
.priority-3::before {
  background-color: var(--pp-priority-3-dot);
}
.priority-4 {
  border: 1px solid var(--pp-priority-4-border);
}
.priority-4::before {
  background-color: var(--pp-priority-4-dot);
}
.priority-5 {
  border: 1px solid var(--pp-priority-5-border);
}
.priority-5::before {
  background-color: transparent;
  box-shadow: inset 0 0 0 2px var(--pp-priority-5-dot);
}

.status-assigned,
.status-in-process,
.status-completed,
.status-outstanding,
.status-crew {
  text-align: center;
  font-size: .75rem;
  font-weight: 500;
  padding: .2rem 0.5rem;
  border-radius: 0.25rem;
  min-width: 0;
}
.status-assigned  { background:var(--bs-light);  border:1px solid var(--bs-border-color); color:var(--bs-dark); }
.status-in-process{ background:var(--bs-secondary); border:none; color:var(--bs-light); }
.status-completed { background:rgba(var(--bs-success-rgb), .95); border:none; color:var(--bs-light); }
.status-crew { background:var(--bs-light); border:1px solid var(--bs-border-color); color:var(--bs-dark); }
.status-outstanding { background:rgba(var(--bs-danger-rgb), .95); border:1px solid rgba(var(--bs-danger-rgb), 1.05); color:var(--bs-light); }


/* =========================================================
   5) DASHBOARD WEEKLY GRID
   ========================================================= */

/* Hit target */
.min-click { min-width:2.75rem; }

/* Table sizing: fixed layout so colgroup widths are honored */
#weeklyWrap table {
  table-layout: fixed !important;
  width: 100% !important;
  min-width: unset;
  border-collapse: collapse;
}
#weeklyWrap th,
#weeklyWrap td {
  white-space: nowrap;
  background: var(--bs-body-bg);
  box-sizing: border-box;
}

/* Column widths (via colgroup) */
col.col-first { width: 11.25rem; }
col.col-day   { width: 4rem; }

/* Sticky header row */
#weeklyWrap thead th {
  position: sticky;
  top: 0;
  z-index: 2;
}

/* Sticky first column (header + body) with truncation */
#weeklyWrap thead th:first-child,
#weeklyWrap tbody th:first-child,
#weeklyWrap tbody td:first-child {
  position: sticky;
  left: 0;
  z-index: 3;
  background: var(--bs-body-bg);
  box-shadow: 0 0 0 rgba(0,0,0,.05);
  width: fit-content;
  min-width: 9.375rem;
  max-width: 9.375rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#weeklyWrap tbody th:first-child a,
#weeklyWrap tbody td:first-child a {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: bottom;
}
/* Top-left corner over everything */
#weeklyWrap thead th:first-child { z-index: 4; background: var(--bs-secondary); color: var(--bs-white); }

/* Contain buttons inside day cells */
#weeklyWrap td { overflow: hidden; }
#weeklyWrap td > .btn { display: block; width: 100%; white-space: nowrap; }

/* Row separators + hover contrast */
#weeklyWrap tbody tr { border-bottom: 1px solid var(--bs-border-color); }
#weeklyWrap tbody tr:hover td,
#weeklyWrap tbody tr:hover th[scope="row"] { background: var(--bs-tertiary-bg); }

/* Responsive tweaks */
@media (max-width: 991.98px) {
  col.col-first { width: 8.75rem; }
  #weeklyWrap thead th:first-child,
  #weeklyWrap tbody th:first-child,
  #weeklyWrap tbody td:first-child { width: 8.75rem; min-width:8.75rem; max-width:8.75rem; }
  #weeklyWrap table { font-size: 0.8125rem; }
  #weeklyWrap th, #weeklyWrap td { padding: .25rem .25rem; }

  /* Outer scroller handles both axes */
  #weeklyWrap {
    height: 43vh;
    overflow: auto;
    background: var(--bs-body-bg);
    -webkit-overflow-scrolling: touch;
    scrollbar-gutter: stable both-edges;
  }
}

/* Small helper */
.alert-text-sm { font-size: .75em; }


/* =========================================================
   6) DARK MODE (data-theme="dark")
   ========================================================= */
:root[data-theme="dark"]{
  color-scheme: dark;

  /* Surfaces & text */
  --bs-body-bg:          #0b1220;
  --bs-body-bg-rgb:      11, 18, 32;
  --bs-body-color:       #e5e7eb;
  --bs-border-color:     rgba(148,163,184,.35);
  --bs-border-color-translucent: var(--bs-border-color);

  /* Links — body-color on dark surfaces; hover brightens. Primary tint on chrome (buttons, pill borders). */
  --pp-link-color: var(--bs-body-color);
  --pp-link-hover-color: #fff;
  --bs-link-color: var(--pp-link-color);
  --bs-link-hover-color: var(--pp-link-hover-color);
  --bs-link-color-rgb: 229, 231, 235;
  --bs-link-hover-color-rgb: 255, 255, 255;

  /* PP DataTable cell links — dark: primary underline; hover brightens text + underline */
  --pp-dt-cell-link-color: var(--bs-body-color);
  --pp-dt-cell-link-underline-color: var(--bs-primary);
  --pp-dt-cell-link-hover-color: var(--bs-link-hover-color);
  --pp-dt-cell-link-hover-underline-color: var(--bs-link-hover-color);

  /* Single-destination pointer-table row hover */
  --pp-dt-row-hot-hover-bg: color-mix(in oklab, var(--bs-primary) 32%, var(--pp-surface));

  /* Surface tokens reused across cards/tables/inputs */
  --pp-surface:          #0f172a;
  --pp-surface-2:        #111a2e;
  --pp-muted:            #94a3b8;
  --bs-tertiary-bg:      var(--pp-surface-2);

  /* Semantic nudges — success aliases primary (teal) in dark mode */
  --bs-success: var(--bs-primary);
  --bs-success-rgb: var(--bs-primary-rgb);
  --bs-success-text-emphasis: color-mix(in oklab, var(--bs-primary) 70%, #fff 30%);
  --bs-success-bg-subtle: color-mix(in oklab, var(--bs-primary) 18%, var(--pp-surface));
  --bs-success-border-subtle: color-mix(in oklab, var(--bs-primary) 35%, var(--pp-surface));

  /* Accordion active bg in dark (chevron icon is the BS default, filtered light below) */
  --bs-accordion-active-bg: color-mix(in oklab, #172135 85%, transparent);

  /* Accordion / report chrome (dark overrides) */
  --pp-accordion-offline-bg: color-mix(in oklab, var(--bs-warning) 32%, var(--pp-surface) 68%);
  --pp-accordion-offline-color: var(--bs-body-color);
  --pp-report-total-border-color: color-mix(in oklab, var(--bs-border-color) 100%, #fff 25%);
  --pp-priority-chip-bg: var(--pp-surface-2);
  --pp-priority-3-dot: var(--bs-gray-400);
  --pp-priority-4-dot: var(--bs-gray-500);
  --pp-priority-5-dot: var(--bs-gray-500);
  --pp-priority-3-surface: var(--pp-priority-chip-bg);
  --pp-priority-4-surface: var(--pp-priority-chip-bg);

  /* Warning semantic — muted tints on dark surface (parity with success-bg-subtle) */
  --bs-warning-text-emphasis: color-mix(in oklab, var(--bs-warning) 70%, #fff 30%);
  --bs-warning-bg-subtle: color-mix(in oklab, var(--bs-warning) 22%, var(--pp-surface));
  --bs-warning-border-subtle: color-mix(in oklab, var(--bs-warning) 35%, var(--pp-surface));

  /* Dashboard schedule — muted warning rows (parity with completed cells in dark) */
  --pp-row-status-open-bg: var(--bs-warning-bg-subtle);
  --pp-row-status-open-link: var(--bs-warning-text-emphasis);
  --pp-dashboard-open-bg: var(--pp-row-status-open-bg);
  --pp-dashboard-open-border: transparent;
  --pp-dashboard-open-hover-bg: color-mix(in oklab, var(--bs-warning) 28%, var(--pp-surface));
  --pp-dashboard-open-hover-border: transparent;
  --pp-dashboard-open-color: var(--pp-row-status-open-link);
  --pp-dashboard-open-icon-color: var(--pp-row-status-open-link);
  --pp-dashboard-upcoming-bg: var(--pp-row-status-open-bg);
  --pp-dashboard-upcoming-border: transparent;
  --pp-dashboard-upcoming-hover-bg: color-mix(in oklab, var(--bs-warning) 28%, var(--pp-surface));
  --pp-dashboard-upcoming-hover-border: transparent;
  --pp-dashboard-upcoming-color: var(--pp-row-status-open-link);
  --pp-dashboard-upcoming-icon-color: var(--pp-row-status-open-link);
}

/* Apply dark surfaces */
:root[data-theme="dark"] body {
  background-color: var(--bs-body-bg);
  color: var(--bs-body-color);
}

/* Dark text links — Bootstrap CDN uses rgba(var(--bs-link-color-rgb)) */
:root[data-theme="dark"] a:not(.btn):not(.nav-link):not(.dropdown-item):not(.list-group-item-action):not(.page-link) {
  color: var(--bs-link-color);
  text-decoration: none;
}
:root[data-theme="dark"] a:not(.btn):not(.nav-link):not(.dropdown-item):not(.list-group-item-action):not(.page-link):hover,
:root[data-theme="dark"] a:not(.btn):not(.nav-link):not(.dropdown-item):not(.list-group-item-action):not(.page-link):focus-visible {
  color: var(--bs-link-hover-color);
  text-decoration: underline;
  text-underline-offset: 0.125em;
}

/* Dropdowns (dark) */
:root[data-theme="dark"] .dropdown-menu{
  --bs-dropdown-bg:              #0f172a;
  --bs-dropdown-link-color:      var(--bs-body-color);
  --bs-dropdown-link-hover-bg:   #111a2e;
  --bs-dropdown-border-color:    var(--bs-border-color);
}

/* Accordion body divider (dark) */
:root[data-theme="dark"] .accordion-body { border-bottom: 4px solid var(--bs-border-color); }
:root[data-theme="dark"] [data-pref-key="task-accordion-1"] .accordion-body {
  border-bottom: 1px solid var(--bs-border-color);
}
:root[data-theme="dark"] [data-task-detail-page][data-pref-key="task-accordion-1"] .accordion-body {
  border-bottom: 0;
}

/* Task Quick Action Band (dark) */
:root[data-theme="dark"] .task-quick-action-band__shell {
  background-color: var(--pp-surface) !important;
  border-color: color-mix(in oklab, var(--bs-border-color) 100%, #fff 10%) !important;
}

:root[data-theme="dark"] .task-quick-action-band__shell .task-quick-action-band__btn.btn-light {
  --bs-btn-bg: transparent;
  --bs-btn-border-color: transparent;
  --bs-btn-color: var(--bs-body-color);
  --bs-btn-hover-bg: color-mix(in oklab, var(--bs-link-color) 14%, transparent);
  --bs-btn-hover-border-color: transparent;
  --bs-btn-hover-color: var(--bs-link-color);
  --bs-btn-active-bg: color-mix(in oklab, var(--bs-link-color) 20%, transparent);
  --bs-btn-active-border-color: transparent;
  --bs-btn-active-color: var(--bs-link-color);
  background-color: transparent;
  border: 0;
  box-shadow: none;
  color: var(--bs-body-color);
}

:root[data-theme="dark"] .task-quick-action-band__label {
  color: var(--pp-muted);
}

:root[data-theme="dark"] .task-quick-action-band__item:hover .task-quick-action-band__label,
:root[data-theme="dark"] .task-quick-action-band__item:focus-within .task-quick-action-band__label {
  color: var(--bs-link-color);
}

:root[data-theme="dark"] .task-quick-action-band__btn {
  border: 0;
  box-shadow: none;
}

:root[data-theme="dark"] .task-quick-action-band__btn:hover,
:root[data-theme="dark"] .task-quick-action-band__btn:focus-visible {
  border: 0;
  background-color: color-mix(in oklab, var(--bs-link-color) 14%, transparent);
  color: var(--bs-link-color);
  box-shadow: none;
}

@media (min-width: 768px) {
  :root[data-theme="dark"] .task-quick-action-band__btn {
    background-color: transparent;
  }

  :root[data-theme="dark"] .task-quick-action-band__shell .task-quick-action-band__btn.btn-light {
    background-color: transparent;
  }

  :root[data-theme="dark"] .task-quick-action-band__btn:hover,
  :root[data-theme="dark"] .task-quick-action-band__btn:focus-visible {
    background-color: color-mix(in oklab, var(--bs-link-color) 14%, transparent);
    color: var(--bs-link-color);
  }
}

@media (max-width: 767.98px) {
  :root[data-theme="dark"] .task-quick-action-band__shell {
    background-color: transparent !important;
    border-color: transparent !important;
  }
}

/* Inputs / list items (dark) */
:root[data-theme="dark"] .form-select,
:root[data-theme="dark"] .form-control,
:root[data-theme="dark"] .list-group-item,
:root[data-theme="dark"] .form-check-input {
  background-color: #0f172a;
  color: var(--bs-body-color);
  border-color: color-mix(in oklab, var(--bs-border-color) 100%, #fff 25%);
}
:root[data-theme="dark"] .form-control:focus,
:root[data-theme="dark"] .form-select:focus {
  border-color: var(--bs-link-color);
  box-shadow: 0 0 0 .2rem rgba(147,197,253,.15);
}
:root[data-theme="dark"] .input-group-text,
:root[data-theme="dark"] .assign-task-date-trigger,
:root[data-theme="dark"] .assign-task-time-trigger {
  background-color: #0f172a;
  color: var(--bs-link-color, #93c5fd);
  border-color: color-mix(in oklab, var(--bs-border-color) 100%, #fff 25%);
}
:root[data-theme="dark"] .assign-task-date-trigger:hover,
:root[data-theme="dark"] .assign-task-time-trigger:hover {
  background-color: #1e293b;
  color: var(--bs-link-hover-color, #bfdbfe);
}
:root[data-theme="dark"] .list-group-item { background-color: #0f172a; }

/* Work Orders index — queue list (dark) */
:root[data-theme="dark"] .work-order-queue-list .list-group-item-action {
	background-color: #0f172a;
	color: var(--bs-body-color);
	border-color: var(--bs-border-color) !important;
}
:root[data-theme="dark"] .work-order-queue-list .list-group-item-action:hover,
:root[data-theme="dark"] .work-order-queue-list .list-group-item-action:focus {
	background-color: #1e293b;
	color: var(--bs-body-color);
}
:root[data-theme="dark"] .work-order-queue-list .pp-pill-badge-neutral {
	background-color: #475569 !important;
	color: #f8fafc;
}
:root[data-theme="dark"] .work-order-queue-list .pp-pill-badge-attention {
	background-color: transparent !important;
	color: var(--bs-danger);
	border: 1px solid var(--bs-danger);
}

/* Assign task / bucket create — WO scroll list stripes (dark) */
:root[data-theme="dark"] .assign-task-scroll-list {
	background-color: var(--pp-surface);
}
:root[data-theme="dark"] .assign-task-scroll-list .form-check.bg-light {
	background-color: var(--pp-surface-2) !important;
	border: 0;
	box-shadow: none;
}
:root[data-theme="dark"] .assign-task-scroll-list .form-check-label .text-muted {
	color: var(--pp-muted) !important;
}

/* Buttons tuned for dark */
:root[data-theme="dark"] .btn-light{
  --bs-btn-bg:#1f2937; --bs-btn-border-color:#374151; --bs-btn-color:#e5e7eb;
  --bs-btn-hover-bg:#2a364a; --bs-btn-hover-border-color:#3b4a66; --bs-btn-hover-color:#e5e7eb;
  --bs-btn-active-bg:#374151; --bs-btn-active-border-color:#4b5563; --bs-btn-active-color:#e5e7eb;
  --bs-btn-focus-color:#e5e7eb;
  background-color: var(--bs-btn-bg);
}
:root[data-theme="dark"] .btn-outline-secondary{
  --bs-btn-color:#cbd5e1; --bs-btn-border-color:#475569;
  --bs-btn-hover-bg:#142036; --bs-btn-hover-border-color:#637089;
  --bs-btn-hover-color:#e5e7eb;
  --bs-btn-active-color:#e5e7eb;
}
:root[data-theme="dark"] .btn-outline-dark {
  --bs-btn-color: var(--bs-body-color);
  --bs-btn-border-color: var(--bs-border-color);
  --bs-btn-bg: var(--pp-surface);
  --bs-btn-hover-color: var(--bs-body-bg);
  --bs-btn-hover-bg: var(--bs-link-color);
  --bs-btn-hover-border-color: var(--bs-link-color);
  --bs-btn-active-color: var(--bs-body-bg);
  --bs-btn-active-bg: var(--bs-link-color);
  --bs-btn-active-border-color: var(--bs-link-color);
}
:root[data-theme="dark"] .btn-light.border-secondary { --bs-btn-hover-color:#e5e7eb; }

/* DataTables export buttons — global dark (no page wrapper required) */
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-csv,
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-excel,
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-print,
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-pdf {
  border-radius: var(--bs-border-radius);
  border-color: var(--bs-border-color);
  color: var(--bs-body-color);
  background-color: var(--pp-surface);
}
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-csv:hover,
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-excel:hover,
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-print:hover,
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-pdf:hover,
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-csv:focus,
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-excel:focus,
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-print:focus,
:root[data-theme="dark"] .dt-buttons .dt-button.buttons-pdf:focus {
  border-color: var(--bs-link-color);
  color: var(--bs-body-bg);
  background-color: var(--bs-link-color);
}

/* Quick reports — grand total & asset monthly totals bars */
:root[data-theme="dark"] .quick-report-grand-total-bar,
:root[data-theme="dark"] .quick-report-results-page .asset-monthly-totals-table-wrap {
	background-color: transparent;
	border-top: 1px solid var(--bs-border-color);
	border-bottom: 1px solid var(--bs-border-color);
	color: var(--bs-body-color);
	font-weight: 700;
}

/* Quick reports — rowGroup staff subtotal rows (dtrg-end) */
:root[data-theme="dark"] .quick-report-results-page table.dataTable tbody tr.dtrg-group.dtrg-end > td,
:root[data-theme="dark"] .quick-report-results-page table.display tbody tr.dtrg-group.dtrg-end > td {
	background-color: transparent !important;
	border-bottom: 1px solid var(--bs-border-color) !important;
	color: var(--bs-body-color) !important;
	font-weight: 700;
}

/* Asset child modal — accordion rows & subcategory band */
:root[data-theme="dark"] #proAccordionFlushModal .accordion-body.bg-light,
:root[data-theme="dark"] #proAccordionFlushModal .asset-modal-subcategory-row {
  background-color: var(--pp-surface-2) !important;
  color: var(--bs-body-color) !important;
}
:root[data-theme="dark"] #proAccordionFlushModal .accordion-body:not(.bg-light) {
  background-color: var(--pp-surface);
  color: var(--bs-body-color);
}
:root[data-theme="dark"] #proAccordionFlushModal .grandchild-subcategory-div .subcategory-title {
  background-color: var(--pp-surface-2);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] #proAccordionFlushModal.asset-modal-browse-mode .asset-modal-asset-link,
:root[data-theme="dark"] .asset-child-modal .asset-modal-asset-link {
  color: var(--bs-body-color);
}
:root[data-theme="dark"] #proAccordionFlushModal.asset-modal-browse-mode .asset-modal-asset-link:hover,
:root[data-theme="dark"] .asset-child-modal .asset-modal-asset-link:hover {
  color: var(--bs-link-hover-color);
}
:root[data-theme="dark"] [id^="myModal"].modal .modal-body .modal-title,
:root[data-theme="dark"] [id^="myModal"].modal .modal-body .modal-title a {
  color: var(--bs-body-color);
}
:root[data-theme="dark"] [id^="myModal"].modal .modal-footer {
  border-top-color: var(--bs-border-color);
}

/* Light-mode chips that need dark equivalents */
:root[data-theme="dark"] .priority-1 {
  background: var(--pp-priority-1-bg);
  border-color: var(--pp-priority-1-bg);
  color: var(--pp-priority-1-fg);
}
:root[data-theme="dark"] .priority-2,
:root[data-theme="dark"] .priority-3,
:root[data-theme="dark"] .priority-4,
:root[data-theme="dark"] .priority-5 {
  background: var(--pp-priority-chip-bg);
  color: var(--pp-priority-chip-fg);
}
:root[data-theme="dark"] .priority-2 {
  border-color: var(--pp-priority-2-border);
}
:root[data-theme="dark"] .priority-3 {
  border-color: var(--pp-priority-3-border);
}
:root[data-theme="dark"] .priority-4 {
  border-color: var(--pp-priority-4-border);
}
:root[data-theme="dark"] .priority-5 {
  border-color: var(--pp-priority-5-border);
}
:root[data-theme="dark"] .status-assigned {
  background:#111a2e; color:#e5e7eb; border-color:var(--bs-border-color);
}
:root[data-theme="dark"] .status-crew {
  background:#111a2e; color:#e5e7eb; border-color:var(--bs-border-color);
}
:root[data-theme="dark"] [data-pref-key="task-accordion-1"] .task-header-chip--icon {
  background: color-mix(in oklab, var(--bs-secondary-color) 8%, transparent);
  border-color: color-mix(in oklab, var(--bs-secondary-color) 28%, var(--bs-border-color));
  color: var(--bs-secondary-color);
}

/* Alerts in dark */
:root[data-theme="dark"] #customAlert.alert-warning{
  --bs-alert-bg: var(--bs-dark);
  --bs-alert-color: var(--bs-body-color);
  --bs-alert-border-color: var(--bs-warning);
}
:root[data-theme="dark"] #customAlert .text-body { color: var(--bs-alert-color) !important; }

/* Modal surfaces (dark) — only border real modals (inside .modal); .modal-content reused as a card on some pages */
:root[data-theme="dark"] .modal-content{
  background-color:#0f172a;
  color:var(--bs-body-color);
  border: 0;
}
:root[data-theme="dark"] .modal .modal-content{
  border:1px solid var(--bs-border-color);
}
:root[data-theme="dark"] .modal-header,
:root[data-theme="dark"] .modal-footer { border-color: var(--bs-border-color); }
:root[data-theme="dark"] .modal .btn-close { filter: invert(1) grayscale(100%) brightness(200%); opacity:.9; }
:root[data-theme="dark"] .modal .btn-close:hover { opacity:1; }

/* Keep .text-body aligned with dark color when used */
:root[data-theme="dark"] .text-body { color: var(--bs-body-color) !important; }

/* Offcanvas list-group hover (dark) */
:root[data-theme="dark"] .pp-offcanvas-menu {
  --pp-offcanvas-menu-hover-color:    var(--pp-link-hover-color);
  --bs-list-group-action-hover-bg:    var(--bs-tertiary-bg);
  --bs-list-group-action-hover-color: var(--pp-offcanvas-menu-hover-color);
}

/* Accordion open state (dark) */
:root[data-theme="dark"] .accordion-button:not(.collapsed){
  background-color:#232529;
  color:#e9ecef;
  border-bottom: 1px solid var(--bs-border-color);
}
:root[data-theme="dark"] [data-pref-key="task-accordion-1"] .accordion-button:not(.collapsed) {
  background-color: color-mix(in oklab, var(--bs-primary) 12%, #232529);
  color: var(--bs-body-color);
}
:root[data-theme="dark"] [data-pref-key="task-accordion-1"] .accordion-item:has(.accordion-button:not(.collapsed)) {
  border-color: var(--bs-primary);
}
:root[data-theme="dark"] .accordion-button:not(.collapsed):hover { background-color:#26292e; }
/* Invert the dark BS chevron SVG so it reads light on dark, in both collapsed and expanded states */
:root[data-theme="dark"] .accordion-button::after { filter: invert(1) brightness(1.4); }

/* App card surfaces (Bootstrap .card; .p-card retired — see productiveparks-new.css) */
:root[data-theme="dark"] .card {
  background-color: var(--pp-surface);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
/* Retired — asset edit uses card card-body + Bootstrap collapse.
:root[data-theme="dark"] .p-card-edit {
  background: #1a1f0d;
  border-color: #b48a2e;
  color: var(--bs-body-color);
}
*/
:root[data-theme="dark"] .card-header,
:root[data-theme="dark"] .card-footer {
  background-color: var(--pp-surface-2);
  border-color: var(--bs-border-color);
  color: var(--bs-body-color);
}

/* Tables (incl. DataTables .display / .dataTable) */
:root[data-theme="dark"] .table,
:root[data-theme="dark"] table.dataTable,
:root[data-theme="dark"] table.display {
  --bs-table-bg:           var(--pp-surface);
  --bs-table-color:        var(--bs-body-color);
  --bs-table-border-color: var(--bs-border-color);
  --bs-table-striped-bg:    color-mix(in oklab, var(--pp-surface) 94%, #fff 6%);
  --bs-table-striped-color: var(--bs-body-color);
  --bs-table-hover-bg:      color-mix(in oklab, var(--pp-surface) 70%, var(--bs-primary) 30%);
  --bs-table-hover-color:   #fff;
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] table.dataTable thead th,
:root[data-theme="dark"] table.display thead th,
:root[data-theme="dark"] .table thead th {
  background-color: var(--pp-surface-2);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] table.dataTable tbody tr,
:root[data-theme="dark"] table.display tbody tr {
  background-color: var(--pp-surface);
  color: var(--bs-body-color);
}
:root[data-theme="dark"] table.dataTable.stripe tbody tr.odd > *,
:root[data-theme="dark"] table.display.stripe tbody tr.odd > *,
:root[data-theme="dark"] table.dataTable tbody tr.odd,
:root[data-theme="dark"] table.display tbody tr.odd {
  background-color: color-mix(in oklab, var(--pp-surface) 94%, #fff 6%);
}
:root[data-theme="dark"] .dataTables_wrapper,
:root[data-theme="dark"] .dataTables_wrapper .dataTables_info,
:root[data-theme="dark"] .dataTables_wrapper .dataTables_length,
:root[data-theme="dark"] .dataTables_wrapper .dataTables_filter,
:root[data-theme="dark"] .dataTables_wrapper .dataTables_paginate {
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button {
  color: var(--bs-body-color) !important;
}
:root[data-theme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button.current,
:root[data-theme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
  background: transparent !important;
  border: none !important;
  color: #fff !important;
  font-weight: 600;
}
:root[data-theme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button:hover:not(.disabled):not(.current) {
  background: var(--pp-surface-2) !important;
  border: none !important;
  color: #fff !important;
}

/* PP DataTable — global dark mode (Phase 2 Track A) */
:root[data-theme="dark"] {
  --pp-table-stripe-bg: color-mix(in oklab, var(--pp-surface) 94%, #fff 6%);
  --pp-table-row-bg: var(--pp-surface);
  --pp-table-sorted-header-color: var(--bs-body-color);
  --pp-table-sort-active-color: var(--bs-body-color);
  --pp-table-sort-inactive-color: var(--pp-muted);
  --pp-row-status-completed-bg: #14331f;
  --pp-row-status-in-process-bg: #1a2d3d;
  --pp-row-status-in-process-bg-odd: #1e3348;
  --pp-row-status-completed-text: #bbf7d0;
  --pp-row-status-in-process-text: #bfdbfe;
  --pp-row-status-in-process-emphasis: #93c5fd;
  --pp-row-status-in-process-accent: #60a5fa;
  --pp-row-status-danger-bg: #3d1520;
  --pp-row-status-completed-link: #86efac;
  --pp-row-status-in-process-link: #60a5fa;
  --pp-row-status-danger-link: #fca5a5;
}

:root[data-theme="dark"] table.dataTable.display thead th,
:root[data-theme="dark"] table.display thead th {
  background-color: var(--pp-surface-2);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] table.dataTable.display thead th.sorting,
:root[data-theme="dark"] table.dataTable thead th.sorting {
  color: var(--pp-table-sort-inactive-color);
}
:root[data-theme="dark"] table.dataTable.display thead th.sorting_asc,
:root[data-theme="dark"] table.dataTable.display thead th.sorting_desc,
:root[data-theme="dark"] table.dataTable thead th.sorting_asc,
:root[data-theme="dark"] table.dataTable thead th.sorting_desc {
  color: var(--pp-table-sorted-header-color);
}
:root[data-theme="dark"] table.dataTable.display tbody td,
:root[data-theme="dark"] table.display tbody td {
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] table.dataTable tbody tr.child ul.dtr-details li {
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] table.dataTable tbody tr.child span.dtr-title {
  color: var(--pp-muted);
}
:root[data-theme="dark"] table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child::before,
:root[data-theme="dark"] table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child::before {
  background-color: var(--pp-surface);
  border-color: var(--pp-muted);
  color: var(--pp-muted);
}
:root[data-theme="dark"] table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child::before,
:root[data-theme="dark"] table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child::before {
  border-color: var(--pp-muted);
  color: var(--pp-muted);
}
:root[data-theme="dark"] table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child:hover::before,
:root[data-theme="dark"] table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child:focus::before {
  background-color: color-mix(in oklab, var(--pp-muted) 12%, transparent);
}
:root[data-theme="dark"] table.dataTable.dtr-column > tbody > tr[role="row"]:not(.dtrg-group) > td.control::before,
:root[data-theme="dark"] table.dataTable.dtr-column > tbody > tr[role="row"]:not(.dtrg-group) > th.control::before {
  background-color: var(--pp-surface);
  border-color: var(--pp-muted);
  color: var(--pp-muted);
}
:root[data-theme="dark"] table.dataTable.dtr-column > tbody > tr.parent > td.control::before,
:root[data-theme="dark"] table.dataTable.dtr-column > tbody > tr.parent > th.control::before {
  border-color: var(--pp-muted);
  color: var(--pp-muted);
}
:root[data-theme="dark"] table.dataTable.dtr-column > tbody > tr[role="row"]:not(.dtrg-group) > td.control:hover::before,
:root[data-theme="dark"] table.dataTable.dtr-column > tbody > tr[role="row"]:not(.dtrg-group) > td.control:focus::before {
  background-color: color-mix(in oklab, var(--pp-muted) 12%, transparent);
}
:root[data-theme="dark"] table.dataTable.dtr-column.pp-dt-responsive-expand-plain > tbody > tr[role="row"]:not(.dtrg-group) > td.control::before,
:root[data-theme="dark"] table.dataTable.dtr-column.pp-dt-responsive-expand-plain > tbody > tr[role="row"]:not(.dtrg-group) > th.control::before {
  background-color: transparent;
  border: none;
  color: var(--pp-muted);
}
:root[data-theme="dark"] table.dataTable.dtr-column.pp-dt-responsive-expand-plain > tbody > tr.parent > td.control::before,
:root[data-theme="dark"] table.dataTable.dtr-column.pp-dt-responsive-expand-plain > tbody > tr.parent > th.control::before {
  background-color: transparent;
  border: none;
  color: var(--bs-body-color);
}
:root[data-theme="dark"] table.dataTable.dtr-column.pp-dt-responsive-expand-plain > tbody > tr[role="row"]:not(.dtrg-group) > td.control:hover::before,
:root[data-theme="dark"] table.dataTable.dtr-column.pp-dt-responsive-expand-plain > tbody > tr[role="row"]:not(.dtrg-group) > td.control:focus::before {
  background-color: transparent;
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .dataTables_wrapper .pp-dt-toolbar {
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .dataTables_wrapper .dataTables_length select,
:root[data-theme="dark"] .dataTables_wrapper .dataTables_filter input {
  background-color: var(--pp-surface);
  color: var(--bs-body-color);
  border-color: color-mix(in oklab, var(--bs-border-color) 100%, #fff 25%);
}
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-csv,
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-excel,
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-print,
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-pdf {
	border-color: var(--bs-border-color);
	color: var(--bs-body-color);
	background-color: var(--pp-surface);
}
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-csv:hover,
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-excel:hover,
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-print:hover,
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-pdf:hover,
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-csv:focus,
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-excel:focus,
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-print:focus,
:root[data-theme="dark"] .dataTables_wrapper .dt-buttons .dt-button.buttons-pdf:focus {
	border-color: var(--bs-link-color);
	color: var(--bs-body-bg);
	background-color: var(--bs-link-color);
}
:root[data-theme="dark"] .pp-dt-export-dropdown .pp-dt-export-trigger,
:root[data-theme="dark"] .pp-dt-export-dropdown .pp-dt-export-icon-btn,
:root[data-theme="dark"] .pp-dt-length-dropdown .pp-dt-length-trigger,
:root[data-theme="dark"] .pp-dt-length-dropdown .pp-dt-toolbar-icon-btn {
	border: none;
	color: var(--bs-body-color);
	background-color: transparent;
	box-shadow: none;
}
:root[data-theme="dark"] .pp-dt-export-dropdown .pp-dt-export-trigger:hover,
:root[data-theme="dark"] .pp-dt-export-dropdown .pp-dt-export-trigger:focus,
:root[data-theme="dark"] .pp-dt-export-dropdown.show .pp-dt-export-trigger,
:root[data-theme="dark"] .pp-dt-export-dropdown .pp-dt-export-icon-btn:hover,
:root[data-theme="dark"] .pp-dt-export-dropdown .pp-dt-export-icon-btn:focus,
:root[data-theme="dark"] .pp-dt-export-dropdown.show .pp-dt-export-icon-btn,
:root[data-theme="dark"] .pp-dt-length-dropdown .pp-dt-length-trigger:hover,
:root[data-theme="dark"] .pp-dt-length-dropdown .pp-dt-length-trigger:focus,
:root[data-theme="dark"] .pp-dt-length-dropdown.show .pp-dt-length-trigger,
:root[data-theme="dark"] .pp-dt-length-dropdown .pp-dt-toolbar-icon-btn:hover,
:root[data-theme="dark"] .pp-dt-length-dropdown .pp-dt-toolbar-icon-btn:focus,
:root[data-theme="dark"] .pp-dt-length-dropdown.show .pp-dt-toolbar-icon-btn {
	border: none;
	background-color: var(--pp-surface-2);
	color: var(--bs-body-color);
	box-shadow: none;
}
:root[data-theme="dark"] .pp-dt-export-dropdown .pp-dt-export-menu,
:root[data-theme="dark"] .pp-dt-length-dropdown .pp-dt-length-menu,
:root[data-theme="dark"] .pp-simple-dropdown-menu {
	background-color: var(--pp-surface);
	border-color: var(--bs-border-color);
}
:root[data-theme="dark"] table.dataTable.display tbody tr.danger > td,
:root[data-theme="dark"] table.dataTable.display tbody tr.danger.odd > td,
:root[data-theme="dark"] table.dataTable.display tbody tr.danger.even > td,
:root[data-theme="dark"] table.dataTable.display tbody tr.danger.odd > .sorting_1,
:root[data-theme="dark"] table.dataTable.display tbody tr.danger.odd > .sorting_2,
:root[data-theme="dark"] table.dataTable.display tbody tr.danger.odd > .sorting_3,
:root[data-theme="dark"] table.dataTable.display tbody tr.danger.even > .sorting_1,
:root[data-theme="dark"] table.dataTable.display tbody tr.danger.even > .sorting_2,
:root[data-theme="dark"] table.dataTable.display tbody tr.danger.even > .sorting_3,
:root[data-theme="dark"] table.display tbody tr.danger > td {
  background: var(--pp-row-status-danger-bg) !important;
  color: var(--bs-body-color);
}
:root[data-theme="dark"] tr.danger a:not(.btn) {
  color: var(--pp-row-status-danger-link);
}

:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.completed-task > td,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.completed-task.odd > td,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.completed-task.even > td,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.completed-task.odd > .sorting_1,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.completed-task.odd > .sorting_2,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.completed-task.odd > .sorting_3,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.completed-task.even > .sorting_1,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.completed-task.even > .sorting_2,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.completed-task.even > .sorting_3,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.display tbody tr.completed-task > td {
  background: var(--pp-row-status-completed-bg) !important;
  color: var(--pp-row-status-completed-text, var(--bs-body-color));
}

:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task > td,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.odd > td,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.even > td,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.odd > .sorting_1,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.odd > .sorting_2,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.odd > .sorting_3,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.even > .sorting_1,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.even > .sorting_2,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.even > .sorting_3,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.display tbody tr.in-process-task > td {
  background: var(--pp-row-status-in-process-bg) !important;
  color: var(--pp-row-status-in-process-text, var(--bs-body-color));
}

:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.odd > td,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.odd > .sorting_1,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.odd > .sorting_2,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) table.dataTable.display tbody tr.in-process-task.odd > .sorting_3 {
  background: var(--pp-row-status-in-process-bg-odd) !important;
}

/* Report Engine results — dark mode (totals/master rows; overrides generic table cell reset below) */
:root[data-theme="dark"] .report-engine-results-page table.dataTable tbody td,
:root[data-theme="dark"] .report-engine-results-page table.report-engine-results-table tbody td,
:root[data-theme="dark"] .report-engine-results-page table.report-engine-results-table tfoot td {
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .report-engine-results-page table.report-engine-results-table tbody tr.report-engine-row-total > td,
:root[data-theme="dark"] .report-engine-results-page table.report-engine-results-table tbody tr.report-engine-row-total > .sorting_1,
:root[data-theme="dark"] .report-engine-results-page table.report-engine-results-table tbody tr.report-engine-row-total > .sorting_2,
:root[data-theme="dark"] .report-engine-results-page table.report-engine-results-table tbody tr.report-engine-row-total > .sorting_3,
:root[data-theme="dark"] .report-engine-results-page table.report-engine-results-table tfoot tr.report-engine-row-total > td,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tbody tr.report-engine-row-total > td,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tbody tr.report-engine-row-total > .sorting_1,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tbody tr.report-engine-row-total > .sorting_2,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tbody tr.report-engine-row-total > .sorting_3,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tfoot tr.report-engine-row-total > td,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tbody tr.dtrg-group.report-engine-row-total > td,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tbody tr.dtrg-group.dtrg-start.report-engine-row-total > td,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tbody tr.dtrg-group.dtrg-end.report-engine-row-total > td {
  background-color: var(--pp-surface-2) !important;
  border-bottom: 2px solid var(--pp-report-total-border-color) !important;
  color: var(--bs-body-color) !important;
}

/* Report Engine drill-down — park total footer rows (format 7 / 8 modals) */
:root[data-theme="dark"] .report-engine-drill-page table.report-engine-results-table tfoot tr.report-engine-drill-park-total > th,
:root[data-theme="dark"] .report-engine-drill-modal table.report-engine-drill-modal-table tfoot tr.report-engine-drill-park-total > th {
  background-color: var(--pp-surface-2) !important;
  border-top-color: var(--pp-report-total-border-color) !important;
  color: var(--bs-body-color) !important;
}

:root[data-theme="dark"] .report-engine-drill-page .report-engine-drill-rollup {
  background-color: var(--pp-surface-2);
  border-color: var(--pp-report-total-border-color);
  color: var(--bs-body-color);
}

:root[data-theme="dark"] .report-engine-results-page .report-engine-section-card table.report-engine-results-table tbody tr.report-engine-row-section-total > td,
:root[data-theme="dark"] .report-engine-results-page .report-engine-section-card table.dataTable.report-engine-results-table tbody tr.report-engine-row-section-total > td,
:root[data-theme="dark"] .report-engine-results-page .report-engine-grand-total-card tbody tr.report-engine-row-grand-total > td {
  background-color: var(--pp-surface-2) !important;
  border-top: 2px solid var(--pp-report-total-border-color) !important;
  border-bottom: 2px solid var(--pp-report-total-border-color) !important;
  color: var(--bs-body-color) !important;
}
:root[data-theme="dark"] .report-engine-results-page .report-engine-section-card table.report-engine-results-table tbody > tr:has(+ tr.report-engine-row-section-total) > td,
:root[data-theme="dark"] .report-engine-results-page .report-engine-section-card table.dataTable.report-engine-results-table tbody > tr:has(+ tr.report-engine-row-section-total) > td {
  border-bottom: none !important;
}
:root[data-theme="dark"] .report-engine-results-page table.report-engine-results-table tbody tr.report-engine-row-master > td,
:root[data-theme="dark"] .report-engine-results-page table.report-engine-results-table tbody tr.report-engine-row-master > .sorting_1,
:root[data-theme="dark"] .report-engine-results-page table.report-engine-results-table tbody tr.report-engine-row-master > .sorting_2,
:root[data-theme="dark"] .report-engine-results-page table.report-engine-results-table tbody tr.report-engine-row-master > .sorting_3,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tbody tr.report-engine-row-master > td,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tbody tr.report-engine-row-master > .sorting_1,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tbody tr.report-engine-row-master > .sorting_2,
:root[data-theme="dark"] .report-engine-results-page table.dataTable.report-engine-results-table tbody tr.report-engine-row-master > .sorting_3 {
  background-color: var(--pp-surface-2) !important;
  color: var(--bs-body-color) !important;
}
:root[data-theme="dark"] .report-engine-results-page .report-engine-section-heading {
  color: var(--bs-body-color);
}

/* Muted/secondary text — readable on dark surfaces */
:root[data-theme="dark"] .text-muted,
:root[data-theme="dark"] .text-secondary,
:root[data-theme="dark"] .text-body-secondary { color: var(--pp-muted) !important; }

/* Hard-coded light-mode colors (must override later rules) */
:root[data-theme="dark"] #from::placeholder { color: var(--pp-muted); }
:root[data-theme="dark"] #schedule-calendar a { color: var(--bs-link-color); }

/* productiveparks-new.css forces every table cell to white — clear it */
:root[data-theme="dark"] .table > :not(caption) > * > *,
:root[data-theme="dark"] table.dataTable > :not(caption) > * > *,
:root[data-theme="dark"] table.display > :not(caption) > * > * {
  background-color: transparent;
  border-color: var(--bs-border-color);
  color: var(--bs-body-color);
}

/* Bootstrap utility classes that hard-set light-mode colors */
:root[data-theme="dark"] .text-black,
:root[data-theme="dark"] a.text-black { color: var(--bs-body-color) !important; }

/* Top dashboard count tabs (Work Requests, Inspections, …) — list-group with text-black links */
:root[data-theme="dark"] .list-group-item a.text-black { color: var(--bs-body-color) !important; }
:root[data-theme="dark"] .list-group-item.bg-secondary a { color: var(--bs-white) !important; }

/* Weekly schedule grid: header day buttons, staff link colors */
:root[data-theme="dark"] .weekly-schedule-th-row,
:root[data-theme="dark"] .weekly-schedule-td-staff a { color: var(--bs-body-color); }

/* Task status buttons inside the staff schedule grid */
:root[data-theme="dark"] .table-weekly-schedule .task-btn.no-tasks,
:root[data-theme="dark"] .table-weekly-schedule .task-btn.completed-tasks {
  border: none;
  border-bottom: none;
}

:root[data-theme="dark"] .table-weekly-schedule .task-btn.no-tasks {
  background: var(--pp-surface);
  color: var(--bs-tertiary-color);
  border: 1px solid var(--bs-border-color);
}

:root[data-theme="dark"] .table-weekly-schedule .task-btn.no-tasks:hover {
  background: var(--bs-secondary-bg-subtle);
  border: 1px solid var(--bs-border-color);
  color: var(--bs-tertiary-color);
}

:root[data-theme="dark"] .table-weekly-schedule .task-btn.open-tasks {
  background: var(--pp-dashboard-open-bg);
  border: none;
  color: var(--pp-dashboard-open-color);
}

:root[data-theme="dark"] .table-weekly-schedule .task-btn.open-tasks:hover {
  background: var(--pp-dashboard-open-hover-bg);
  border: none;
  color: var(--pp-dashboard-open-color);
}

:root[data-theme="dark"] .table-weekly-schedule .staff-badge.btn-warning,
:root[data-theme="dark"] .table-weekly-schedule .staff-badge.staff-badge--outstanding {
  --bs-btn-active-bg: var(--pp-dashboard-open-hover-bg);
  --bs-btn-active-border-color: transparent;
  --bs-btn-active-color: var(--pp-dashboard-open-color);
  --bs-btn-bg: var(--pp-dashboard-open-bg);
  --bs-btn-border-color: transparent;
  --bs-btn-color: var(--pp-dashboard-open-color);
  --bs-btn-hover-bg: var(--pp-dashboard-open-hover-bg);
  --bs-btn-hover-border-color: transparent;
  --bs-btn-hover-color: var(--pp-dashboard-open-color);
  background-color: var(--pp-dashboard-open-bg);
  border-color: transparent;
  color: var(--pp-dashboard-open-color);
}

:root[data-theme="dark"] .table-weekly-schedule .staff-badge.btn-warning:hover,
:root[data-theme="dark"] .table-weekly-schedule .staff-badge.btn-warning:focus,
:root[data-theme="dark"] .table-weekly-schedule .staff-badge.btn-warning:focus-visible,
:root[data-theme="dark"] .table-weekly-schedule .staff-badge.staff-badge--outstanding:hover,
:root[data-theme="dark"] .table-weekly-schedule .staff-badge.staff-badge--outstanding:focus,
:root[data-theme="dark"] .table-weekly-schedule .staff-badge.staff-badge--outstanding:focus-visible {
  background-color: var(--pp-dashboard-open-hover-bg);
  border-color: transparent;
  color: var(--pp-dashboard-open-color);
}

:root[data-theme="dark"] .table-weekly-schedule .staff-badge.staff-badge--upcoming-zero.btn-outline-secondary.disabled {
  --bs-btn-color: var(--bs-secondary-color);
  --bs-btn-disabled-color: var(--bs-secondary-color);
  --bs-btn-hover-color: var(--bs-secondary-color);
  --bs-btn-active-color: var(--bs-secondary-color);
  color: var(--bs-secondary-color);
}

:root[data-theme="dark"] .table-weekly-schedule .task-btn.completed-tasks {
  background: var(--pp-row-status-completed-bg);
  color: var(--pp-row-status-completed-link);
}

:root[data-theme="dark"] .table-weekly-schedule .task-btn.completed-tasks:hover {
  background: color-mix(in oklab, var(--pp-row-status-completed-bg) 85%, var(--bs-success) 15%);
  border: none;
  border-bottom: none;
}

:root[data-theme="dark"] .dashboard-alert-box {
  background: color-mix(in oklab, var(--bs-warning) 20%, var(--pp-surface));
  border-bottom-color: var(--bs-warning);
  color: var(--bs-warning-text-emphasis);
}

/* Weekly schedule day headers — dark mode (light mode in productiveparks-new.css) */
:root[data-theme="dark"] .weekly-schedule-day-header-btn.btn-outline-secondary {
  --bs-btn-color: var(--bs-body-color);
  --bs-btn-hover-color: var(--bs-body-color);
  --bs-btn-active-color: var(--bs-body-color);
  --bs-btn-border-color: transparent;
  --bs-btn-hover-border-color: transparent;
  --bs-btn-active-border-color: transparent;
  --bs-btn-hover-bg: var(--bs-tertiary-bg);
  --bs-btn-active-bg: var(--bs-tertiary-bg);
  border-color: transparent;
  color: var(--bs-body-color);
}

:root[data-theme="dark"] .weekly-schedule-day-header-btn.btn-outline-secondary:hover,
:root[data-theme="dark"] .weekly-schedule-day-header-btn.btn-outline-secondary:focus,
:root[data-theme="dark"] .weekly-schedule-day-header-btn.btn-outline-secondary:focus-visible {
  background-color: var(--bs-tertiary-bg);
}

:root[data-theme="dark"] .weekly-schedule-day-header-btn.btn-secondary {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-secondary);
  --bs-btn-border-color: var(--bs-secondary);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: color-mix(in oklab, var(--bs-secondary) 85%, #000 15%);
  --bs-btn-hover-border-color: color-mix(in oklab, var(--bs-secondary) 85%, #000 15%);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: color-mix(in oklab, var(--bs-secondary) 75%, #000 25%);
  --bs-btn-active-border-color: color-mix(in oklab, var(--bs-secondary) 75%, #000 25%);
  background-color: var(--bs-secondary);
  border-color: var(--bs-secondary);
  color: var(--bs-white);
}

:root[data-theme="dark"] .weekly-schedule-day-header-btn.btn-secondary:hover,
:root[data-theme="dark"] .weekly-schedule-day-header-btn.btn-secondary:focus,
:root[data-theme="dark"] .weekly-schedule-day-header-btn.btn-secondary:focus-visible {
  background-color: color-mix(in oklab, var(--bs-secondary) 85%, #000 15%);
  border-color: color-mix(in oklab, var(--bs-secondary) 85%, #000 15%);
  color: var(--bs-white);
}

:root[data-theme="dark"] .table-weekly-schedule th.current-date-hilight,
:root[data-theme="dark"] .table-weekly-schedule td.current-date-hilight {
  background-color: rgba(var(--bs-secondary-rgb), 0.12);
}

/* Project link utilities that hardcode dark colors */
:root[data-theme="dark"] .decoration-none { color: var(--bs-body-color); }
:root[data-theme="dark"] .decoration-none:hover { color: var(--bs-link-color); }

/* Weekly schedule Out/Up staff chips — dark mode (light mode in productiveparks-new.css) */
:root[data-theme="dark"] .table-weekly-schedule .staff-badge.btn-outline-secondary,
:root[data-theme="dark"] .table-weekly-schedule .staff-badge.btn-outline-secondary.disabled {
  --bs-btn-color: var(--bs-body-color);
  --bs-btn-hover-color: var(--bs-body-color);
  --bs-btn-active-color: var(--bs-body-color);
  --bs-btn-border-color: var(--bs-border-color);
  --bs-btn-hover-border-color: var(--bs-border-color);
  --bs-btn-hover-bg: var(--bs-tertiary-bg);
  --bs-btn-active-bg: var(--bs-tertiary-bg);
  --bs-btn-disabled-bg: var(--bs-body-bg);
  --bs-btn-disabled-border-color: var(--bs-border-color);
  --bs-btn-disabled-color: var(--bs-body-color);
  --bs-btn-disabled-opacity: 1;
  border-color: var(--bs-border-color);
  color: var(--bs-body-color);
}

:root[data-theme="dark"] .table-weekly-schedule .staff-badge.btn-outline-secondary:hover,
:root[data-theme="dark"] .table-weekly-schedule .staff-badge.btn-outline-secondary:focus,
:root[data-theme="dark"] .table-weekly-schedule .staff-badge.btn-outline-secondary:focus-visible {
  background-color: var(--bs-tertiary-bg);
}

:root[data-theme="dark"] .table-weekly-schedule .staff-status-dot.has-outstanding {
  background: var(--pp-dashboard-open-icon-color);
}

:root[data-theme="dark"] .table-weekly-schedule .staff-status-dot.zero {
  background: var(--bs-success);
}

/* Staff actions panel — dark mode */
:root[data-theme="dark"] .staff-actions-panel {
  box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.9);
}

:root[data-theme="dark"] .staff-actions-panel.is-open {
  box-shadow: 0 0.35rem 0.75rem rgba(0, 0, 0, 0.9);
}

:root[data-theme="dark"] .staff-actions-panel__header {
  border-bottom-color: var(--bs-border-color);
}

:root[data-theme="dark"] .staff-actions-panel .btn-close {
  filter: invert(1) grayscale(100%) brightness(200%);
  opacity: 0.9;
}

:root[data-theme="dark"] .staff-actions-panel .btn-close:hover {
  opacity: 1;
}

:root[data-theme="dark"] .staff-actions-panel__task-link:hover,
:root[data-theme="dark"] .staff-actions-panel__task-link:focus-visible {
  background-color: var(--pp-dt-row-hot-hover-bg);
  color: var(--bs-body-color);
}

:root[data-theme="dark"] .staff-actions-list .list-group-item {
  background: transparent;
  color: var(--bs-body-color);
}

:root[data-theme="dark"] .staff-actions-list .list-group-item.disabled,
:root[data-theme="dark"] .staff-actions-list .list-group-item:disabled {
  background: transparent;
  color: var(--bs-secondary-color);
}

:root[data-theme="dark"] .staff-actions-list .list-group-item-action:hover,
:root[data-theme="dark"] .staff-actions-list .list-group-item-action:focus {
  background: var(--bs-tertiary-bg);
  color: var(--bs-body-color);
}

:root[data-theme="dark"] .staff-name-toggle {
  color: var(--bs-body-color) !important;
}

:root[data-theme="dark"] .staff-name-toggle:hover,
:root[data-theme="dark"] .staff-name-toggle:focus,
:root[data-theme="dark"] .staff-name-toggle.show {
  color: var(--bs-primary) !important;
}

/* DataTables sorting_X column highlight (the upstream CSS gives the sorted column a lighter bg) */
:root[data-theme="dark"] table.dataTable tbody tr > .sorting_1,
:root[data-theme="dark"] table.dataTable tbody tr > .sorting_2,
:root[data-theme="dark"] table.dataTable tbody tr > .sorting_3,
:root[data-theme="dark"] table.dataTable.display tbody tr.odd > .sorting_1,
:root[data-theme="dark"] table.dataTable.display tbody tr.even > .sorting_1,
:root[data-theme="dark"] table.dataTable.display tbody tr:hover > .sorting_1 {
  background-color: transparent !important;
  color: var(--bs-body-color);
}

/* In-process row highlight (gated when data-pp-table-row-status="off" on html) */
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) .in-process-task td,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) .in-process-task.odd td {
  background: var(--pp-row-status-in-process-bg) !important;
  color: var(--pp-row-status-in-process-text);
}
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) .in-process-task a:not(.btn) { color: var(--pp-row-status-in-process-link); }

/* Completed-task row highlight (gated when data-pp-table-row-status="off" on html) */
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) .completed-task td,
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) .completed-task.odd td {
  background: var(--pp-row-status-completed-bg) !important;
  color: var(--pp-row-status-completed-text, var(--bs-body-color));
}
:root[data-theme="dark"]:not([data-pp-table-row-status="off"]) .completed-task a:not(.btn) { color: var(--pp-row-status-completed-link); }

/* PP table status chips — dark mode (tables only) */
:root[data-theme="dark"] table.dataTable.display .pp-table-status-chip,
:root[data-theme="dark"] table.display .pp-table-status-chip,
:root[data-theme="dark"] table.table .pp-table-status-chip {
	background-color: var(--bs-body-bg) !important;
	border-color: var(--bs-border-color) !important;
	color: var(--bs-secondary-color) !important;
}
:root[data-theme="dark"] table.dataTable.display .status-outstanding.pp-table-status-chip,
:root[data-theme="dark"] table.display .status-outstanding.pp-table-status-chip,
:root[data-theme="dark"] table.table .status-outstanding.pp-table-status-chip {
	border-color: var(--pp-row-status-danger-link) !important;
	color: var(--pp-row-status-danger-link) !important;
}
:root[data-theme="dark"] table.dataTable.display .status-completed.pp-table-status-chip,
:root[data-theme="dark"] table.display .status-completed.pp-table-status-chip,
:root[data-theme="dark"] table.table .status-completed.pp-table-status-chip {
	border-color: var(--pp-row-status-completed-link) !important;
	color: var(--pp-row-status-completed-link) !important;
}

/* Low-stock / danger row */
:root[data-theme="dark"] .danger td,
:root[data-theme="dark"] tr.danger > td,
:root[data-theme="dark"] tr.danger > th,
:root[data-theme="dark"] tr.danger.odd > td,
:root[data-theme="dark"] tr.danger.even > td {
  background: var(--pp-row-status-danger-bg) !important;
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .danger a:not(.btn) { color: var(--pp-row-status-danger-link); }

/* Status column cell utilities (dark) — scoped to tables; reuses row-status tokens */
:root[data-theme="dark"] .dataTables_wrapper td.pp-status-in-process,
:root[data-theme="dark"] table.display td.pp-status-in-process,
:root[data-theme="dark"] table.table td.pp-status-in-process,
:root[data-theme="dark"] .dataTables_wrapper td.pp-status-in-process a:not(.btn),
:root[data-theme="dark"] table.display td.pp-status-in-process a:not(.btn),
:root[data-theme="dark"] table.table td.pp-status-in-process a:not(.btn) {
  color: var(--pp-row-status-in-process-emphasis);
  white-space: nowrap;
}
:root[data-theme="dark"] .dataTables_wrapper td.text-danger,
:root[data-theme="dark"] table.display td.text-danger,
:root[data-theme="dark"] table.table td.text-danger,
:root[data-theme="dark"] .dataTables_wrapper td.text-danger a:not(.btn),
:root[data-theme="dark"] table.display td.text-danger a:not(.btn),
:root[data-theme="dark"] table.table td.text-danger a:not(.btn),
:root[data-theme="dark"] .dataTables_wrapper td.text-danger.fw-semibold a:not(.btn),
:root[data-theme="dark"] table.display td.text-danger.fw-semibold a:not(.btn) {
  color: var(--pp-row-status-danger-link);
}
:root[data-theme="dark"] .dataTables_wrapper .text-danger,
:root[data-theme="dark"] table.display .text-danger {
  color: var(--pp-row-status-danger-link);
}

/* The project overrides .btn-secondary to be a white "chip" — invert for dark */
:root[data-theme="dark"] .btn-secondary {
  background: var(--pp-surface);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .btn-secondary:hover {
  background: var(--pp-surface-2);
  color: #fff;
  border-color: var(--bs-border-color);
}

/* PP count button — split shell (surface fill + tokenized stroke) */
:root[data-theme="dark"] .pp-count-btn--split {
  --pp-count-btn-bg: var(--bs-body-bg);
  --pp-count-btn-color: var(--bs-body-color);
  --pp-count-btn-hover-bg: var(--bs-tertiary-bg);
  --pp-count-btn-border-color: var(--bs-border-color);
}

/* Date input ("Floating Task" datepicker) — was color:#111 / placeholder:#111 */
:root[data-theme="dark"] .customDatepicker input {
  color: var(--bs-body-color);
  background: var(--pp-surface);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .customDatepicker input::placeholder { color: var(--pp-muted) !important; }
:root[data-theme="dark"] .customDatepicker .bi-calendar { color: var(--bs-body-color); }

/* jQuery UI datepicker popup — match dark shell (partials/datepicker.blade.php) */
:root[data-theme="dark"] .ui-datepicker {
	background: var(--pp-surface);
	border-color: var(--bs-border-color);
	color: var(--bs-body-color);
	box-shadow: 0 0.5rem 1.25rem rgba(0, 0, 0, 0.45);
}
:root[data-theme="dark"] .ui-datepicker.ui-widget-content {
	background: var(--pp-surface);
	border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .ui-datepicker .ui-widget-header {
	background: var(--pp-surface-2);
	border-bottom-color: var(--bs-border-color);
	color: var(--bs-body-color);
}
:root[data-theme="dark"] .ui-datepicker .ui-datepicker-prev,
:root[data-theme="dark"] .ui-datepicker .ui-datepicker-next {
	background: var(--pp-surface);
	border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .ui-datepicker .ui-datepicker-prev::before,
:root[data-theme="dark"] .ui-datepicker .ui-datepicker-next::before {
	color: var(--bs-body-color);
}
:root[data-theme="dark"] .ui-datepicker select.ui-datepicker-month,
:root[data-theme="dark"] .ui-datepicker select.ui-datepicker-year {
	background-color: var(--pp-surface);
	border-color: var(--bs-border-color);
	color: var(--bs-body-color);
}
:root[data-theme="dark"] .ui-datepicker th {
	color: var(--pp-muted);
}
:root[data-theme="dark"] .ui-datepicker td a.ui-state-default {
	background: var(--pp-surface);
	border-color: var(--bs-border-color);
	color: var(--bs-body-color);
}
:root[data-theme="dark"] .ui-datepicker td a.ui-state-hover,
:root[data-theme="dark"] .ui-datepicker td a.ui-state-focus {
	background: var(--pp-surface-2);
	border-color: var(--bs-border-color);
	color: #fff;
}
:root[data-theme="dark"] .ui-datepicker td a.ui-state-active {
	background: var(--bs-primary);
	border-color: var(--bs-primary);
	color: #fff;
}
:root[data-theme="dark"] .ui-datepicker-today a.ui-state-highlight:not(.ui-state-active) {
	background: var(--pp-surface-2) !important;
	color: var(--bs-body-color) !important;
	font-weight: 700;
	border: 2px solid var(--bs-body-color) !important;
}
:root[data-theme="dark"] .ui-datepicker .ui-datepicker-buttonpane {
	border-top-color: var(--bs-border-color);
}
:root[data-theme="dark"] .ui-datepicker .ui-datepicker-buttonpane button {
	background: var(--pp-surface);
	border-color: var(--bs-border-color);
	color: var(--bs-body-color);
}
:root[data-theme="dark"] .ui-datepicker .ui-datepicker-buttonpane button:hover,
:root[data-theme="dark"] .ui-datepicker .ui-datepicker-buttonpane button.ui-state-hover {
	background: var(--pp-surface-2);
	color: #fff;
}

/* jQuery Timepicker dropdown — match dark shell (assign task, task form, My Tasks) */
:root[data-theme="dark"] .ui-timepicker-container,
:root[data-theme="dark"] .ui-timepicker-container.ui-timepicker-standard,
:root[data-theme="dark"] .ui-timepicker-standard {
	background-color: var(--pp-surface) !important;
	border-color: var(--bs-border-color) !important;
	color: var(--bs-body-color) !important;
	box-shadow: 0 0.5rem 1.25rem rgba(0, 0, 0, 0.45);
}
/* Inner jQuery UI menu panel (Smoothness .ui-widget-content paints white) */
:root[data-theme="dark"] .ui-timepicker-container .ui-timepicker.ui-widget-content,
:root[data-theme="dark"] .ui-timepicker-container .ui-menu.ui-widget-content {
	background-color: var(--pp-surface) !important;
	background-image: none !important;
	border-color: var(--bs-border-color) !important;
	color: var(--bs-body-color) !important;
}
:root[data-theme="dark"] .ui-timepicker-container .ui-timepicker-viewport {
	background-color: transparent !important;
}
:root[data-theme="dark"] .ui-timepicker-container .ui-timepicker a,
:root[data-theme="dark"] .ui-timepicker-standard a {
	color: var(--bs-body-color) !important;
	background: transparent !important;
	background-image: none !important;
	border-color: transparent !important;
}
:root[data-theme="dark"] .ui-timepicker-container .ui-timepicker a.ui-state-hover,
:root[data-theme="dark"] .ui-timepicker-container .ui-timepicker a.ui-state-focus,
:root[data-theme="dark"] .ui-timepicker-container .ui-widget-content .ui-state-hover,
:root[data-theme="dark"] .ui-timepicker-container .ui-widget-content .ui-state-focus,
:root[data-theme="dark"] .ui-timepicker-container .ui-menu .ui-state-hover,
:root[data-theme="dark"] .ui-timepicker-container .ui-menu .ui-state-focus,
:root[data-theme="dark"] .ui-timepicker-standard .ui-state-hover,
:root[data-theme="dark"] .ui-timepicker-standard a.ui-state-hover {
	background: var(--pp-surface-2) !important;
	background-image: none !important;
	border-color: transparent !important;
	color: #fff !important;
	font-weight: 500;
}
:root[data-theme="dark"] .ui-timepicker-container .ui-timepicker li.ui-timepicker-selected a,
:root[data-theme="dark"] .ui-timepicker-container .ui-timepicker li.ui-timepicker-selected a.ui-state-hover,
:root[data-theme="dark"] .ui-timepicker-container .ui-timepicker li.ui-timepicker-selected a.ui-state-focus,
:root[data-theme="dark"] .ui-timepicker-standard li.ui-timepicker-selected a {
	background: var(--bs-primary) !important;
	background-image: none !important;
	border-color: transparent !important;
	color: #fff !important;
}

/* Bootstrap .text-primary uses --bs-primary (#0d6efd) — too dark on dark surfaces */
:root[data-theme="dark"] .text-primary { color: var(--bs-link-color) !important; }

/* Bootstrap .link-dark forces #000 — flip for dark mode */
:root[data-theme="dark"] .link-dark,
:root[data-theme="dark"] a.link-dark { color: var(--bs-body-color) !important; }
:root[data-theme="dark"] .link-dark:hover { color: var(--bs-link-hover-color) !important; }

/* Laravel paginator (Tailwind template, but .bg-white is also a Bootstrap utility) */
:root[data-theme="dark"] nav[role="navigation"] span,
:root[data-theme="dark"] nav[role="navigation"] a {
  background-color: var(--pp-surface) !important;
  color: var(--bs-body-color) !important;
  border-color: var(--bs-border-color) !important;
}
:root[data-theme="dark"] nav[role="navigation"] svg { fill: var(--bs-body-color); }
:root[data-theme="dark"] nav[role="navigation"] a:hover {
  background-color: var(--pp-surface-2) !important;
  color: #fff !important;
}
:root[data-theme="dark"] nav[role="navigation"] [aria-current="page"] span {
  background-color: var(--bs-primary) !important;
  color: #fff !important;
}

/* Inspection / display_inspection page: section titles, checkbox labels. */
:root[data-theme="dark"] .bg-light {
  background-color: var(--pp-surface-2) !important;
  color: var(--bs-body-color);
}
/* DataTables: breathing room between the filter/length controls and the table */
:root[data-theme="dark"] .dataTables_wrapper .dataTables_filter,
:root[data-theme="dark"] .dataTables_wrapper .dataTables_length {
  margin-bottom: .75rem;
}
/* Elevate the .bg-light wrapper around tables inside cards/modals so it reads as a distinct block */
:root[data-theme="dark"] .modal-content .bg-light,
:root[data-theme="dark"] .card .bg-light {
  background-color: color-mix(in oklab, var(--pp-surface) 90%, #fff 10%) !important;
  border: 1px solid var(--bs-border-color);
  border-radius: .5rem;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.03);
}
/* Inner DataTables wrapper sits inside the elevated .bg-light — keep it flat (no double-block) */
:root[data-theme="dark"] .card .bg-light .dataTables_wrapper,
:root[data-theme="dark"] .modal-content .bg-light .dataTables_wrapper {
  background: transparent !important;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  padding: 0;
}
/* Make the table header inside the elevated container clearly distinct */
:root[data-theme="dark"] .modal-content .bg-light table.dataTable thead th,
:root[data-theme="dark"] .modal-content .bg-light table.display thead th,
:root[data-theme="dark"] .modal-content .bg-light .table thead th,
:root[data-theme="dark"] .card .bg-light table.dataTable thead th,
:root[data-theme="dark"] .card .bg-light table.display thead th {
  background-color: var(--pp-surface) !important;
  border-bottom: 2px solid var(--bs-border-color);
  color: var(--bs-body-color);
  font-weight: 600;
}
:root[data-theme="dark"] .section-title {
  background: var(--pp-row-status-in-process-bg);
  color: var(--pp-row-status-in-process-text);
  border-color: var(--bs-warning-border-subtle, var(--bs-border-color));
}
:root[data-theme="dark"] .checkbox-div .check-with-label + .label-for-check,
:root[data-theme="dark"] .checkbox-sm-div .check-with-label + .label-for-check {
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .checklist-line-item-name,
:root[data-theme="dark"] .checklist-line-item-notes { color: var(--bs-body-color); }

/* Bootstrap nav-tabs (active tab inherits --bs-emphasis-color = #000 by default) */
:root[data-theme="dark"] .nav-tabs {
  --bs-nav-tabs-border-color: var(--bs-border-color);
  --bs-nav-tabs-link-hover-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-border-color);
  --bs-nav-tabs-link-active-color: var(--bs-body-color);
  --bs-nav-tabs-link-active-bg: var(--pp-surface);
  --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--pp-surface);
}
:root[data-theme="dark"] .nav-tabs .nav-link { color: var(--bs-link-color); }
:root[data-theme="dark"] .nav-tabs .nav-link:hover { color: var(--bs-link-hover-color); }
:root[data-theme="dark"] .nav-tabs .nav-link.active { color: var(--bs-body-color); background-color: var(--pp-surface); }

/* Bootstrap tooltips — ensure readable contrast in dark mode */
:root[data-theme="dark"] .tooltip {
  --bs-tooltip-bg: #1f2937;
  --bs-tooltip-color: #f9fafb;
}
:root[data-theme="dark"] .tooltip-inner {
  background-color: #1f2937 !important;
  color: #f9fafb !important;
  border: 1px solid var(--bs-border-color);
}
:root[data-theme="dark"] .tooltip-arrow::before,
:root[data-theme="dark"] .bs-tooltip-top .tooltip-arrow::before,
:root[data-theme="dark"] .bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before { border-top-color: #1f2937; }
:root[data-theme="dark"] .bs-tooltip-bottom .tooltip-arrow::before,
:root[data-theme="dark"] .bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before { border-bottom-color: #1f2937; }
:root[data-theme="dark"] .bs-tooltip-start .tooltip-arrow::before,
:root[data-theme="dark"] .bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before { border-left-color: #1f2937; }
:root[data-theme="dark"] .bs-tooltip-end .tooltip-arrow::before,
:root[data-theme="dark"] .bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before { border-right-color: #1f2937; }

/* Bootstrap popovers — ensure readable contrast in dark mode */
:root[data-theme="dark"] .popover {
  --bs-popover-bg: #1f2937;
  --bs-popover-color: #f9fafb;
  --bs-popover-header-bg: #111a2e;
  --bs-popover-header-color: #f9fafb;
  --bs-popover-body-color: #f9fafb;
  --bs-popover-border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .popover-header {
  background-color: #111a2e !important;
  color: #f9fafb !important;
  border-bottom-color: var(--bs-border-color);
}
:root[data-theme="dark"] .popover-body {
  background-color: #1f2937 !important;
  color: #f9fafb !important;
}
:root[data-theme="dark"] .popover .popover-arrow::before,
:root[data-theme="dark"] .bs-popover-top .popover-arrow::before,
:root[data-theme="dark"] .bs-popover-auto[data-popper-placement^="top"] .popover-arrow::before { border-top-color: var(--bs-border-color); }
:root[data-theme="dark"] .popover .popover-arrow::after,
:root[data-theme="dark"] .bs-popover-top .popover-arrow::after,
:root[data-theme="dark"] .bs-popover-auto[data-popper-placement^="top"] .popover-arrow::after { border-top-color: #1f2937; }
:root[data-theme="dark"] .bs-popover-bottom .popover-arrow::before,
:root[data-theme="dark"] .bs-popover-auto[data-popper-placement^="bottom"] .popover-arrow::before { border-bottom-color: var(--bs-border-color); }
:root[data-theme="dark"] .bs-popover-bottom .popover-arrow::after,
:root[data-theme="dark"] .bs-popover-auto[data-popper-placement^="bottom"] .popover-arrow::after { border-bottom-color: #111a2e; }
:root[data-theme="dark"] .bs-popover-start .popover-arrow::before,
:root[data-theme="dark"] .bs-popover-auto[data-popper-placement^="left"] .popover-arrow::before { border-left-color: var(--bs-border-color); }
:root[data-theme="dark"] .bs-popover-start .popover-arrow::after,
:root[data-theme="dark"] .bs-popover-auto[data-popper-placement^="left"] .popover-arrow::after { border-left-color: #1f2937; }
:root[data-theme="dark"] .bs-popover-end .popover-arrow::before,
:root[data-theme="dark"] .bs-popover-auto[data-popper-placement^="right"] .popover-arrow::before { border-right-color: var(--bs-border-color); }
:root[data-theme="dark"] .bs-popover-end .popover-arrow::after,
:root[data-theme="dark"] .bs-popover-auto[data-popper-placement^="right"] .popover-arrow::after { border-right-color: #1f2937; }

/* Bootstrap nav-pills (used on small_equipment_dashboard etc.) */
:root[data-theme="dark"] .nav-pills .nav-link:not(.pp-touch-nav-cta) {
  color: var(--bs-body-color);
  background-color: transparent;
  border: 1px solid var(--bs-primary);
}
:root[data-theme="dark"] .nav-pills .nav-link:not(.pp-touch-nav-cta):hover {
  background-color: var(--pp-surface-2);
  color: var(--bs-link-hover-color);
  border-color: var(--bs-primary);
}
:root[data-theme="dark"] .nav-pills .nav-link:not(.pp-touch-nav-cta).active,
:root[data-theme="dark"] .nav-pills .show > .nav-link:not(.pp-touch-nav-cta) {
  color: #fff;
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}
:root[data-theme="dark"] .pp-pill-badge-neutral {
  background-color: #475569 !important;
  color: #f8fafc;
}
:root[data-theme="dark"] .pp-pill-badge-attention {
  background-color: transparent !important;
  color: var(--bs-danger);
  border: 1px solid var(--bs-danger);
}
:root[data-theme="dark"] .nav-pills .nav-link.active .pp-pill-badge-neutral,
:root[data-theme="dark"] .nav-pills .show > .nav-link .pp-pill-badge-neutral {
  background-color: rgba(255, 255, 255, 0.25) !important;
  color: #fff;
  border-color: transparent;
}
:root[data-theme="dark"] .nav-pills .nav-link.active .pp-pill-badge-attention,
:root[data-theme="dark"] .nav-pills .show > .nav-link .pp-pill-badge-attention {
  background-color: transparent !important;
  color: #fff;
  border-color: rgba(255, 255, 255, 0.85);
}

/* Days-off counter button on user listing (#maintain_staff_absences > button forces white) */
:root[data-theme="dark"] #maintain_staff_absences button:not(.pp-days-off-submit) {
  background: var(--pp-surface-2);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .pp-days-off-submit {
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .pp-days-off-submit:hover,
:root[data-theme="dark"] .pp-days-off-submit:focus,
:root[data-theme="dark"] .pp-days-off-submit:focus-visible {
  color: var(--bs-body-color);
}

/* Task Categories page (inline <style> uses white .accordion bg + light-blue active/hover) */
:root[data-theme="dark"] .accordion.accordion-flex {
  background-color: var(--pp-surface);
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .accordion.accordion-flex.active,
:root[data-theme="dark"] .accordion.accordion-flex:hover {
  background-color: var(--pp-surface-2);
  border-bottom-color: var(--bs-border-color) !important;
}
:root[data-theme="dark"] .primary-task-panel {
  background-color: var(--pp-surface-2);
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .accordion-flex { border-bottom-color: var(--bs-border-color); }

/* Checklist builder (inspection template editor) */
:root[data-theme="dark"] .inspection-checklist-section {
  background: var(--pp-surface);
  color: var(--bs-body-color);
  border-color: var(--bs-primary);
}
:root[data-theme="dark"] .sortable-line-item-list li {
  background: var(--pp-surface-2);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] li .no-content-yet {
  color: var(--pp-muted);
  background: transparent;
}

/* Crew assignment staff list (light bgs in inline <style> at crew_assignment.blade.php) */
.pp-crew-assignment .btn-group-wrap {
  margin-bottom: 0.5rem;
}
:root[data-theme="dark"] .user-label {
  background-color: var(--pp-surface-2);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .user-label .bi-person-fill-add { color: var(--bs-body-color); }
:root[data-theme="dark"] .crew-label {
  background-color: var(--pp-surface-2);
  color: var(--pp-muted);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .crew-label .bi { color: var(--pp-muted); }
/* Disabled "is off on" rows */
:root[data-theme="dark"] .user-label.disabled,
:root[data-theme="dark"] .crew-label.disabled {
  background-color: var(--pp-surface);
  color: var(--pp-muted);
  border-color: var(--bs-border-color);
}

/* "Completed" pill (large-check unchecked state) — was #eee bg with #9f9f9f text */
:root[data-theme="dark"] .large-check input[type="checkbox"] + label {
  background: var(--pp-surface-2);
  color: var(--pp-muted);
  border-color: var(--bs-border-color);
}

/* Accordion default (collapsed) state — Bootstrap defaults to --bs-body-bg surfaces */
:root[data-theme="dark"] .accordion-item {
  background-color: var(--pp-surface);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .accordion-button {
  background-color: var(--pp-surface);
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .accordion-button.collapsed { background-color: var(--pp-surface); }

/* Select Work Order radio list (#work_order has color:#111 on labels + lightyellow checked highlight) */
:root[data-theme="dark"] #work_order input[type="radio"] + label { color: var(--bs-body-color); }
:root[data-theme="dark"] #work_order input[type="radio"]:checked + label {
  color: #fde68a;
  background: #3a2f15;
}

/* Migrated legacy alerts (productiveparks-new.css Phase 1) */
.alert-success {
  color: var(--bs-success-text-emphasis);
  background-color: var(--bs-success-bg-subtle);
  border-color: var(--bs-success-border-subtle);
}
:root[data-theme="dark"] .alert-success {
  --bs-alert-color: #bfdbfe;
  --bs-alert-bg: #1e3a5f;
  --bs-alert-border-color: #2563eb;
  color: #bfdbfe;
  background-color: #1e3a5f;
  border-color: #2563eb;
}
:root[data-theme="dark"] .alert-success .btn-close {
  filter: invert(1) grayscale(100%) brightness(200%);
  opacity: 0.85;
}
:root[data-theme="dark"] .alert-success .btn-close:hover {
  opacity: 1;
}
:root[data-theme="dark"] .alert-danger {
  background-color: color-mix(in oklab, var(--bs-danger) 35%, var(--pp-surface) 65%);
  border-color: var(--bs-danger);
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .alert {
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .alert-text {
  color: color-mix(in oklab, var(--bs-danger) 65%, var(--bs-body-color) 35%);
}
:root[data-theme="dark"] .crew-alert-text {
  background: var(--pp-row-status-in-process-bg);
  color: var(--pp-row-status-in-process-text);
}
:root[data-theme="dark"] .date-alert-text {
  background: var(--pp-surface-2);
  color: var(--bs-body-color);
  border: 1px solid var(--bs-border-color);
}

/* Task accordion alerts — border matches alert palette (light + dark, both palettes via tokens) */
.accordion-body .alert-primary {
  border-color: var(--bs-primary-border-subtle);
}
.accordion-body .alert-warning {
  border-color: var(--bs-warning-border-subtle);
}

:root[data-theme="dark"] .accordion-body .alert-primary {
  background-color: #1e3a5f;
  border-color: var(--bs-primary-border-subtle);
  color: #bfdbfe;
}
:root[data-theme="dark"] .alert-warning {
  background-color: var(--bs-warning-bg-subtle);
  border-color: var(--bs-warning-border-subtle);
  color: var(--bs-warning-text-emphasis);
}
:root[data-theme="dark"] .alert-info {
  background-color: #1e3a5f;
  border-color: #2563eb;
  color: #bfdbfe;
}
:root[data-theme="dark"] .bd-callout-info {
  --bd-callout-color: #bfdbfe;
  --bd-callout-bg: #1e3a5f;
  --bd-callout-border: #2563eb;
}
:root[data-theme="dark"] .alert-secondary {
  background-color: var(--pp-surface-2);
  border-color: var(--bs-border-color);
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .alert-primary {
  background-color: #1e3a5f;
  border-color: var(--bs-primary-border-subtle);
  color: #bfdbfe;
}

/* Task list modal panels & inspection section headers */
:root[data-theme="dark"] .tasklist-modal-div {
  background: var(--pp-surface);
  border-color: var(--bs-border-color);
  border-bottom-color: var(--bs-border-color);
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .hours-entry {
  color: var(--pp-muted);
}
:root[data-theme="dark"] .hours-entry a {
  color: var(--bs-link-color);
}
:root[data-theme="dark"] .total-hours {
  background: var(--pp-surface-2);
  border-color: var(--bs-border-color);
  color: var(--bs-body-color);
}

/* Dark mode — outline-primary pills & toggles follow palette --bs-primary */
:root[data-theme="dark"] .btn-outline-primary {
  --bs-btn-color: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-bg: color-mix(in oklab, var(--bs-primary) 18%, var(--pp-surface) 82%);
  --bs-btn-hover-border-color: var(--bs-primary);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-primary);
  --bs-btn-active-border-color: var(--bs-primary);
  --bs-btn-active-color: var(--bs-white);
}
:root[data-theme="dark"] .btn-check:checked + .btn-outline-primary {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
}
:root[data-theme="dark"] .form-switch .form-check-input:not(:checked) {
	--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2394a3b8'/%3e%3c/svg%3e");
	background-color: var(--pp-surface-2);
	border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .form-switch .form-check-input:not(:checked):focus {
	--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2394a3b8'/%3e%3c/svg%3e");
	box-shadow: none;
}
:root[data-theme="dark"] .form-switch .form-check-input:checked,
:root[data-theme="dark"] .assign-task-form-switch .form-check-input:checked {
  background-color: var(--pp-form-switch-checked-bg);
  border-color: var(--pp-form-switch-checked-border);
}
:root[data-theme="dark"] .assign-task-form-switch .form-check-label {
  color: var(--bs-body-color);
}

/* Assign task — Log time now panel (assign to yourself) */
:root[data-theme="dark"] .assign-task-hours-panel {
  background-color: var(--pp-surface);
  color: var(--bs-body-color);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] .assign-task-hours-fields:not(:empty) {
  color: var(--pp-muted);
}
:root[data-theme="dark"] #multi-asset-hours .fieldwrapper {
  background-color: var(--pp-surface-2);
  border-color: var(--bs-border-color);
}
:root[data-theme="dark"] #multi-asset-hours .fieldwrapper > label,
:root[data-theme="dark"] #multi-asset-hours .fieldwrapper .form-label {
  color: var(--bs-body-color);
}
:root[data-theme="dark"] #multi-asset-hours .fieldwrapper select[id^="hours_"]:not([id*="hours_type"]),
:root[data-theme="dark"] #multi-asset-hours .fieldwrapper select[name^="minutes_"],
:root[data-theme="dark"] #multi-asset-hours .fieldwrapper select[id^="hours_type_"] {
  background-color: #0f172a;
  color: var(--bs-body-color);
  border-color: color-mix(in oklab, var(--bs-border-color) 100%, #fff 25%);
}

/* Assign task — assets selected summary: path/category suffix readable on dark panel */
:root[data-theme="dark"] #activity_center .assign-task-assets-selected-text .assign-task-asset-path,
:root[data-theme="dark"] #activity_center .assign-task-assets-selected-text .assign-task-asset-separator,
:root[data-theme="dark"] .modern-asset-picker .assign-task-assets-selected-text .assign-task-asset-path,
:root[data-theme="dark"] .modern-asset-picker .assign-task-assets-selected-text .assign-task-asset-separator {
  color: var(--bs-body-color);
}

/* Assign asset picker — accordion headers & category rows (dark) */
:root[data-theme="dark"] #activity_center #pp-asset-picker-accordion .accordion-header:has(+ .accordion-collapse.show),
:root[data-theme="dark"] .modern-asset-picker #pp-asset-picker-accordion .accordion-header:has(+ .accordion-collapse.show) {
  background-color: transparent;
  border-bottom-color: var(--bs-border-color);
}
:root[data-theme="dark"] #activity_center .asset-dashboard-category-row,
:root[data-theme="dark"] .modern-asset-picker .asset-dashboard-category-row {
  background-color: var(--pp-surface-2);
  border-color: var(--bs-border-color) !important;
}
:root[data-theme="dark"] #activity_center .asset-dashboard-category-row .text-secondary,
:root[data-theme="dark"] .modern-asset-picker .asset-dashboard-category-row .text-secondary {
  color: var(--pp-muted) !important;
}
:root[data-theme="dark"] #activity_center .assign-asset-search-trigger,
:root[data-theme="dark"] #activity_center .assign-asset-map-trigger,
:root[data-theme="dark"] #activity_center .assign-asset-gps-trigger,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-search-trigger,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-map-trigger,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-gps-trigger {
	background-color: var(--pp-surface);
	border-color: var(--bs-border-color);
	color: var(--pp-muted);
}
:root[data-theme="dark"] #activity_center .assign-asset-search-trigger:hover,
:root[data-theme="dark"] #activity_center .assign-asset-search-trigger:focus,
:root[data-theme="dark"] #activity_center .assign-asset-search-trigger:focus-visible,
:root[data-theme="dark"] #activity_center .assign-asset-map-trigger:hover,
:root[data-theme="dark"] #activity_center .assign-asset-map-trigger:focus,
:root[data-theme="dark"] #activity_center .assign-asset-map-trigger:focus-visible,
:root[data-theme="dark"] #activity_center .assign-asset-gps-trigger:hover,
:root[data-theme="dark"] #activity_center .assign-asset-gps-trigger:focus,
:root[data-theme="dark"] #activity_center .assign-asset-gps-trigger:focus-visible,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-search-trigger:hover,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-search-trigger:focus,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-search-trigger:focus-visible,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-map-trigger:hover,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-map-trigger:focus,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-map-trigger:focus-visible,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-gps-trigger:hover,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-gps-trigger:focus,
:root[data-theme="dark"] .modern-asset-picker .assign-asset-gps-trigger:focus-visible {
	background-color: var(--pp-surface);
	border-color: var(--bs-border-color);
	color: var(--pp-muted);
}

/* Assign task — category/type selects (incl. disabled Task Type state) */
:root[data-theme="dark"] #task_type .row:has(#primary_task_category_id option[value="0"]:checked) #primary_task_type_id {
  background-color: var(--pp-surface-2);
  color: var(--pp-muted);
}
:root[data-theme="dark"] select.form-select option {
  background-color: var(--pp-surface);
  color: var(--bs-body-color);
}

/* Spotlight asset search */
:root[data-theme="dark"] .spotlight-overlay {
  background-color: rgba(0, 0, 0, 0.65);
}
:root[data-theme="dark"] .spotlight-modal {
  background-color: var(--pp-surface);
  color: var(--bs-body-color);
}
:root[data-theme="dark"] .spotlight-result-item:hover,
:root[data-theme="dark"] .spotlight-result-item.selected {
  background-color: var(--pp-surface-2);
}
:root[data-theme="dark"] .spotlight-result-item.selected {
  background-color: color-mix(in oklab, var(--bs-primary) 28%, var(--pp-surface) 72%);
}
:root[data-theme="dark"] .spotlight-result-icon {
  background-color: var(--pp-surface-2);
}
:root[data-theme="dark"] .spotlight-result-category,
:root[data-theme="dark"] .spotlight-result-enter,
:root[data-theme="dark"] .spotlight-search-icon {
  color: var(--pp-muted);
}

/* Fallback for unclassed text inputs / textareas / selects (many forms skip .form-control) */
:root[data-theme="dark"] input[type="text"]:not(.no-dark):not(.btn),
:root[data-theme="dark"] input[type="email"],
:root[data-theme="dark"] input[type="password"],
:root[data-theme="dark"] input[type="number"],
:root[data-theme="dark"] input[type="search"],
:root[data-theme="dark"] input[type="tel"],
:root[data-theme="dark"] input[type="url"],
:root[data-theme="dark"] input[type="date"],
:root[data-theme="dark"] input[type="datetime-local"],
:root[data-theme="dark"] input[type="time"],
:root[data-theme="dark"] textarea,
:root[data-theme="dark"] select {
  color: var(--bs-body-color);
  background-color: var(--pp-surface);
  border: 1px solid color-mix(in oklab, var(--bs-border-color) 100%, #fff 25%);
  border-radius: .375rem;
  padding: .375rem .75rem;
  transition: border-color .15s ease, box-shadow .15s ease;
}
:root[data-theme="dark"] input[type="text"]:not(.no-dark):not(.btn):focus,
:root[data-theme="dark"] input[type="email"]:focus,
:root[data-theme="dark"] input[type="password"]:focus,
:root[data-theme="dark"] input[type="number"]:focus,
:root[data-theme="dark"] input[type="search"]:focus,
:root[data-theme="dark"] input[type="tel"]:focus,
:root[data-theme="dark"] input[type="url"]:focus,
:root[data-theme="dark"] input[type="date"]:focus,
:root[data-theme="dark"] input[type="datetime-local"]:focus,
:root[data-theme="dark"] input[type="time"]:focus,
:root[data-theme="dark"] textarea:focus,
:root[data-theme="dark"] select:focus {
  outline: 0;
  border-color: var(--bs-link-color);
  box-shadow: 0 0 0 .2rem rgba(147,197,253,.15);
}
:root[data-theme="dark"] input::placeholder,
:root[data-theme="dark"] textarea::placeholder { color: var(--pp-muted); }

/* Native <select> arrow is browser-default (dark) — replace with a light chevron */
:root[data-theme="dark"] select:not(.form-select) {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23e5e7eb' stroke-width='2'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .75rem center;
  background-size: 1rem;
  padding-right: 2.25rem;
}
/* Also brighten the Bootstrap .form-select chevron in dark mode */
:root[data-theme="dark"] .form-select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23e5e7eb' stroke-width='2'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
}


/* =========================================================
   7) STICKY HEADER (My Tasks date row + scroll offsets)
   ========================================================= */
.mobile-sticky-header {
  position: sticky;
  top: calc(var(--navbar-h) + var(--safe-top));
  z-index: 999;
  background: var(--bs-body-bg, #fff);
  padding: .25rem 0;
  margin-bottom: 0 !important;
  transition: box-shadow .2s ease, border-color .2s ease;
}
.mobile-sticky-header.is-stuck {
  border-bottom: 1px solid rgba(var(--bs-dark-rgb, 15, 23, 42), .25);
}

/* Jump links and accordion restore respect navbar + safe area */
[id],
.accordion-item,
.accordion-header,
.accordion-button {
  scroll-margin-top: calc(var(--navbar-h) + var(--safe-top));
}

@media (max-width: 767.98px) {
  :root {
    --pp-page-gutter-x: 0.75rem;
  }
}

.offcanvas-backdrop {
  z-index: var(--pp-z-offcanvas-backdrop);
}

.offcanvas {
  z-index: var(--pp-z-offcanvas);
}

.modal-backdrop {
  z-index: var(--pp-z-modal-backdrop);
}

.modal {
  z-index: var(--pp-z-modal);
}

#from::placeholder {
  color: var(--bs-emphasis-color);
}

#schedule-calendar {
  margin:1.5625rem 0;
}
#schedule-calendar a {
  color: var(--bs-link-color);
}
.fc-event {
  cursor: pointer; 
}

/* Reserve space for HubSpot chat bubble (bottom-right fixed widget) */
:root {
  --pp-hubspot-chat-offset: 5rem;
}

body {
  padding-bottom: calc(var(--pp-hubspot-chat-offset) + env(safe-area-inset-bottom, 0px));
}

/* Browser print (Command+P) — hide main header nav; show site footer (never bare .navbar; see frontend-guidelines.md) */
@media screen {
  .pp-print-footer {
    display: none;
  }
}

@media print {
  @page {
    margin-bottom: 2.5cm;
  }

  nav.navbar-expand-lg.navbar-dark.bg-success {
    display: none !important;
  }

  body {
    padding-top: 0 !important;
    padding-bottom: 2rem !important;
  }

  .pp-print-footer {
    display: block !important;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 9999;
    text-align: center;
    font-size: 9pt;
    line-height: 1.3;
    color: #666 !important;
    background: transparent !important;
    padding: 0.2rem 0.5rem;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  .pp-print-footer-text {
    color: #666 !important;
  }

	/* Report `112`: inline attribution after Grand Total — hide fixed footer on every page */
	body:has(.report-engine-results-page) .pp-print-footer,
	body:has(.quick-report-results-page) .pp-print-footer {
		display: none !important;
	}

	body:has(.report-engine-results-page),
	body:has(.quick-report-results-page) {
		padding-bottom: 0 !important;
	}
}