/*
 * v99: action colours and restrained control polish.
 * Load LAST, after v97-layout.css. CSS only: no event, permission or route handlers.
 * Green = start/resume; blue = primary save/add; red = finish/stop/destructive;
 * amber = caution; neutral = back/close/view/navigation. Labels stay authoritative.
 * Explicit action selectors, not label matching, also cover dynamically rendered UI.
 */
:root {
  --srt99-primary: #2457a7;
  --srt99-start: #176b43;
  --srt99-danger: #b42332;
  --srt99-caution: #865500;
  --srt99-on-action: #ffffff;
  --srt99-control-border: #7c8491;
  --srt99-focus: #2457a7;
  --srt99-disabled-bg: #e9edf2;
  --srt99-disabled-ink: #596474;
  --srt99-disabled-border: #8b95a3;
}

body.night-mode {
  --srt99-primary: #ffffff;
  --srt99-start: #00c972;
  --srt99-danger: #ff263c;
  --srt99-caution: #ff9800;
  --srt99-on-action: #050505;
  --srt99-control-border: #353535;
  --srt99-focus: #9e9e9e;
  --srt99-disabled-bg: #212121;
  --srt99-disabled-ink: #9e9e9e;
  --srt99-disabled-border: #3a3a3a;
}

/* The extra specificity/important declarations override the older theme layers. */
body :is(.button, .cr-button) {
  min-height: 44px !important;
  min-width: 44px;
  max-width: 100%;
  height: auto;
  padding: 10px 14px !important;
  border: 1px solid var(--srt99-control-border) !important;
  border-radius: 10px !important;
  background: var(--panel) !important;
  color: var(--ink) !important;
  font-size: calc(13px * var(--text-scale, 1)) !important;
  font-weight: 650;
  line-height: 1.4 !important;
  white-space: normal !important;
  overflow-wrap: anywhere;
  text-align: center;
  box-shadow: none !important;
  transform: none !important;
  transition: filter 120ms ease, box-shadow 120ms ease;
  touch-action: manipulation;
}

/* Normal submit/create controls, including the existing retorque save footer. */
body :is(.button-primary, .cr-primary),
body .retorque-save98 button[type="submit"] {
  background: var(--srt99-primary) !important;
  border-color: var(--srt99-primary) !important;
  color: var(--srt99-on-action) !important;
}

body :is(.button-warning, .safety-button-warning),
body button[data-action="ongoing-status"][data-status="On hold"] {
  background: var(--srt99-caution) !important;
  border-color: var(--srt99-caution) !important;
  color: var(--srt99-on-action) !important;
}

/* Start actions are green in the menu, next-step card and actual submission. */
body button[data-action="open-prestart"],
body button.simple-menu-card[data-action="open-prestart"],
body button[data-action="start-ongoing-work"],
body button[data-action="start-shift-break"],
body button[data-action="ongoing-status"][data-status="Active"],
body :is(.button-restore, .safety-button-restore),
body #prestart-form button[type="submit"] {
  background: var(--srt99-start) !important;
  border-color: var(--srt99-start) !important;
  color: var(--srt99-on-action) !important;
}

/* Finish is RED, not the former v97 amber. A cancelled dialog is not a cancelled job. */
body button[data-action="open-poststart"],
body button.simple-menu-card[data-action="open-poststart"],
body button[data-shift98="finished"],
body button[data-shift98="cancelled"],
body button[data-action="finish-shift-break"],
body button[data-action="ongoing-status"][data-status="Stopped"],
body button[data-action="management-change-cancel-job"],
body button[data-action="delete-break-v83"],
body button[data-action="discard-draft-v85"],
body button[data-action="remove-yard-v83"],
body button[data-action="archive-amms-permit"],
body button[data-action="archive-handover-note"],
body button[data-action="archive-load-plan"],
body :is(.button-danger, .button-control-danger, .safety-button-danger),
body #poststart-form button[type="submit"],
body #management-shift-resolution-form button[type="submit"],
body #delete-break-v83-form button[type="submit"] {
  background: var(--srt99-danger) !important;
  border-color: var(--srt99-danger) !important;
  color: var(--srt99-on-action) !important;
}

/* These open/report a concern rather than destroy data, even if legacy class is danger. */
body button[data-action="open-hazard"],
body button[data-action="open-defect"],
body button.simple-menu-card[data-action="open-hazard"],
body button.simple-menu-card[data-action="open-defect"] {
  background: var(--srt99-caution) !important;
  border-color: var(--srt99-caution) !important;
  color: var(--srt99-on-action) !important;
}

/* Solid action cards need white secondary copy too, in both day and night mode. */
body button[data-action]:is(
  [data-action="open-prestart"], [data-action="start-ongoing-work"],
  [data-action="open-poststart"], [data-action="open-hazard"], [data-action="open-defect"]
) :is(strong, small, em, .simple-menu-arrow, .simple-menu-meta, .cr-rowbody, .cr-rowbody + svg) {
  color: var(--srt99-on-action) !important;
  opacity: 1;
}

body button[data-action]:is(
  [data-action="open-prestart"], [data-action="open-poststart"],
  [data-action="open-hazard"], [data-action="open-defect"]
) :is(.simple-menu-icon, .simple-next-icon, .cr-icon) {
  background: transparent !important;
  color: var(--srt99-on-action) !important;
}

/* Navigation is neutral, including the legacy primary "Open my work" button. */
body button[data-action="modal-back"],
body button[data-action="close-modal"],
body button[data-action="page-back"],
body button[data-action="view-paper-book"],
body button[data-action="open-weekly-driver-book"],
body button[data-cr="mywork"],
body button[data-cr="back-section"] {
  background: var(--panel) !important;
  border-color: var(--srt99-control-border) !important;
  color: var(--ink) !important;
}

body #compact-review :is(.cr-tabs, .cr-nav) button,
body .srt93-tabs button {
  min-height: 44px;
  color: var(--ink) !important;
  line-height: 1.4;
}

body #compact-review .cr-tabs button[aria-pressed="true"],
body #compact-review .cr-nav button[aria-current="page"],
body .srt93-tabs button[aria-pressed="true"] {
  background: var(--surface-soft) !important;
  color: var(--ink) !important;
  font-weight: 700;
}

body #compact-review .cr-tabs button[aria-pressed="true"],
body .srt93-tabs button[aria-pressed="true"] {
  border-bottom-color: var(--ink) !important;
}

/* Keep icon hit areas usable without expanding vehicle-diagram hotspots. */
body #compact-review .cr-iconbutton,
body.compact-review #modal .modal-close {
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  flex: 0 0 44px;
  padding: 9px;
  border-radius: 10px;
  color: var(--ink);
}

body #compact-review .cr-sectionhead > button,
body.compact-review .cr-notice-actions button {
  min-height: 44px;
  min-width: 44px;
  padding: 8px;
  line-height: 1.4;
}

body #compact-review :is(.cr-pagehead, .cr-sectionhead) {
  flex-wrap: wrap;
  row-gap: 8px;
}

body #compact-review .cr-quick,
body.compact-review :is(.cr-detail-actions, .cr-service-actions, .form-actions, .confirmation-actions, .v89-thread-actions) {
  flex-wrap: wrap;
  gap: 10px !important;
}

body #compact-review .cr-quick > button,
body.compact-review :is(.cr-detail-actions, .cr-service-actions, .form-actions, .confirmation-actions) > :is(.button, .cr-button) {
  flex: 1 1 140px;
  min-width: 0;
}

body.compact-review #modal .cr-message-toolbar {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 140px), 1fr));
  gap: 10px;
}

/* Calm hover feedback, not a moving target. No hover-only information. */
@media (hover: hover) {
  body :is(.button, .cr-button):not(:disabled):not([aria-disabled="true"]):hover {
    filter: brightness(0.94);
  }
}

/* Keyboard focus stays visible against both solid actions and themed surfaces. */
body :is(button, a.button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--srt99-focus) !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 2px var(--panel) !important;
}

/* Inset rings avoid clipping inside the bounded tab bar and record lists. */
body #compact-review :is(.cr-tabs, .cr-nav, .cr-list) button:focus-visible {
  outline-offset: -3px !important;
}

body #compact-review .cr-list button:is(
  [data-action="open-prestart"], [data-action="open-poststart"],
  [data-action="open-hazard"], [data-action="open-defect"]
):focus-visible {
  outline-color: var(--srt99-on-action) !important;
}

/* Disabled means unavailable, not a faint but apparently live coloured action. */
body button:is(.button, .cr-button, .simple-next-action, .simple-menu-card):is(:disabled, [aria-disabled="true"]),
body a.button[aria-disabled="true"],
body :is(#prestart-form, #poststart-form, #management-shift-resolution-form, #delete-break-v83-form, .retorque-save98) button[type="submit"]:disabled {
  background: var(--srt99-disabled-bg) !important;
  color: var(--srt99-disabled-ink) !important;
  border-color: var(--srt99-disabled-border) !important;
  border-style: dashed !important;
  cursor: not-allowed !important;
  opacity: 1 !important;
  filter: none !important;
  box-shadow: none !important;
  transform: none !important;
}

body :is(#compact-review, #modal, #app-shell, #access-screen) button:is(:disabled, [aria-disabled="true"]) :is(strong, small, em, .simple-menu-arrow, .simple-menu-meta, .simple-menu-icon, .simple-next-icon, .cr-icon, .cr-rowbody, .cr-rowbody + svg) {
  color: var(--srt99-disabled-ink) !important;
  background: transparent !important;
  opacity: 1 !important;
}

@media (max-width: 380px) {
  body #compact-review .cr-quick > button,
  body.compact-review :is(.cr-detail-actions, .cr-service-actions, .form-actions, .confirmation-actions) > :is(.button, .cr-button) {
    flex-basis: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  body :is(.button, .cr-button) {
    transition: none;
  }
}

@media (forced-colors: active) {
  body :is(.button, .cr-button, .simple-next-action, .simple-menu-card) {
    forced-color-adjust: auto;
    border-color: ButtonText !important;
  }
  body :is(button, a.button, input, select, textarea, summary, [tabindex]):focus-visible {
    outline-color: Highlight !important;
  }
}

/* Clearly separate freight weighing evidence from the driver's paper book. */
body #compact-review .cr-document-shortcuts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: 14px 0;
}
body #compact-review .cr-document-shortcuts .cr-row,
body #compact-review .cr-record-kind {
  border: 1px solid var(--srt99-control-border);
  border-radius: 12px;
  padding: 14px;
  min-width: 0;
  align-items: flex-start;
}
body #compact-review .cr-document-shortcuts .srt-weight-docket,
body #compact-review .cr-record-kind.srt-weight-docket { background: #eff6ff; }
body #compact-review .cr-document-shortcuts .srt-driver-docket,
body #compact-review .cr-record-kind.srt-driver-docket { background: #f5f0ff; }
body #compact-review .cr-record-kind { display: flex; gap: 12px; margin: 12px 0; color: var(--ink); font-size: calc(14px * var(--text-scale, 1)); line-height: 1.5; }
body #compact-review .cr-record-kind strong { font-size: calc(16px * var(--text-scale, 1)); }
body #compact-review .cr-record-kind p { margin: 6px 0 0; }
body #compact-review .cr-document-shortcuts .cr-rowbody { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
body #compact-review .cr-document-shortcuts strong { font-size: calc(15px * var(--text-scale, 1)); }
body.night-mode #compact-review .cr-document-shortcuts .srt-weight-docket,
body.night-mode #compact-review .cr-record-kind.srt-weight-docket { background: #212121; border-color: #1084fe; }
body.night-mode #compact-review .cr-document-shortcuts .srt-driver-docket,
body.night-mode #compact-review .cr-record-kind.srt-driver-docket { background: #292929; border-color: #8fa0f6; }
body .retorque-direct99 .cr-sectionhead { flex-wrap: wrap; gap: 6px; }
body .retorque-direct99 .cr-sectionhead small { flex-basis: 100%; }
body .retorque-asset98,
body .retorque-approved98 { padding: 12px; margin: 10px 0; border: 1px solid var(--srt99-control-border); border-radius: 10px; background: var(--surface-soft); overflow-wrap: anywhere; }
body .retorque-approved98 p { margin: 8px 0; }
body .retorque-picker98,
body .retorque-tools98,
body .retorque-optional98 { margin: 12px 0; }
body .retorque-picker98 > summary,
body .retorque-tools98 > summary,
body .retorque-optional98 > summary { padding: 10px 0; min-height: 44px; cursor: pointer; font-weight: 650; }
@media (max-width: 540px) {
  body #compact-review .cr-document-shortcuts { grid-template-columns: minmax(0, 1fr); }
}
body .retorque-asset98 strong,
body .retorque-asset98 span { display: block; }
body .retorque-asset98 span { margin-top: 4px; }
body .retorque-approved98 dl { margin: 0; }
body .retorque-approved98 dl > div { padding: 6px 0; }
body .retorque-approved98 dt { font-weight: 650; }
body .retorque-approved98 dd { margin: 2px 0 0; }

/* Night controls follow the neutral Grok palette. Semantic actions are restored after the ghost fill. */
body.night-mode :is(.button, .cr-button) {
  background: rgb(255 255 255 / 8%) !important;
  color: #ffffff !important;
  border-color: rgb(255 255 255 / 14%) !important;
}
body.night-mode :is(.button-primary, .cr-primary),
body.night-mode .retorque-save98 button[type="submit"] {
  background: var(--srt99-primary) !important;
  border-color: var(--srt99-primary) !important;
  color: var(--srt99-on-action) !important;
}
body.night-mode :is(.button-warning, .safety-button-warning),
body.night-mode button[data-action="ongoing-status"][data-status="On hold"],
body.night-mode button[data-action="open-hazard"],
body.night-mode button[data-action="open-defect"],
body.night-mode button.simple-menu-card[data-action="open-hazard"],
body.night-mode button.simple-menu-card[data-action="open-defect"] {
  background: var(--srt99-caution) !important;
  border-color: var(--srt99-caution) !important;
  color: var(--srt99-on-action) !important;
}
body.night-mode button[data-action="open-prestart"],
body.night-mode button.simple-menu-card[data-action="open-prestart"],
body.night-mode button[data-action="start-ongoing-work"],
body.night-mode button[data-action="start-shift-break"],
body.night-mode button[data-action="ongoing-status"][data-status="Active"],
body.night-mode :is(.button-restore, .safety-button-restore),
body.night-mode #prestart-form button[type="submit"] {
  background: var(--srt99-start) !important;
  border-color: var(--srt99-start) !important;
  color: var(--srt99-on-action) !important;
}
body.night-mode button[data-action="open-poststart"],
body.night-mode button.simple-menu-card[data-action="open-poststart"],
body.night-mode button[data-shift98="finished"],
body.night-mode button[data-shift98="cancelled"],
body.night-mode button[data-action="finish-shift-break"],
body.night-mode button[data-action="ongoing-status"][data-status="Stopped"],
body.night-mode button[data-action="management-change-cancel-job"],
body.night-mode button[data-action="delete-break-v83"],
body.night-mode button[data-action="discard-draft-v85"],
body.night-mode button[data-action="remove-yard-v83"],
body.night-mode button[data-action="archive-amms-permit"],
body.night-mode button[data-action="archive-handover-note"],
body.night-mode button[data-action="archive-load-plan"],
body.night-mode :is(.button-danger, .button-control-danger, .safety-button-danger),
body.night-mode #poststart-form button[type="submit"],
body.night-mode #management-shift-resolution-form button[type="submit"],
body.night-mode #delete-break-v83-form button[type="submit"] {
  background: var(--srt99-danger) !important;
  border-color: var(--srt99-danger) !important;
  color: var(--srt99-on-action) !important;
}
@media (hover: hover) {
  body.night-mode :is(.button, .cr-button):not(:disabled):not([aria-disabled="true"]):hover {
    filter: none;
    background: rgb(255 255 255 / 10%) !important;
  }
  body.night-mode :is(.button-primary, .cr-primary):not(:disabled):not([aria-disabled="true"]):hover,
  body.night-mode .retorque-save98 button[type="submit"]:not(:disabled):hover {
    filter: none;
    background: #dedede !important;
    border-color: #dedede !important;
    color: #050505 !important;
  }
  body.night-mode button[data-action="open-prestart"]:not(:disabled):hover,
  body.night-mode button.simple-menu-card[data-action="open-prestart"]:not(:disabled):hover,
  body.night-mode button[data-action="start-ongoing-work"]:not(:disabled):hover,
  body.night-mode button[data-action="start-shift-break"]:not(:disabled):hover,
  body.night-mode button[data-action="ongoing-status"][data-status="Active"]:not(:disabled):hover,
  body.night-mode :is(.button-restore, .safety-button-restore):not(:disabled):hover {
    filter: none;
    background: #05a95f !important;
    border-color: #05a95f !important;
    color: #050505 !important;
  }
  body.night-mode :is(.button-warning, .safety-button-warning):not(:disabled):hover,
  body.night-mode button[data-action="open-hazard"]:not(:disabled):hover,
  body.night-mode button[data-action="open-defect"]:not(:disabled):hover,
  body.night-mode button[data-action="ongoing-status"][data-status="On hold"]:not(:disabled):hover {
    filter: none;
    background: #d77f02 !important;
    border-color: #d77f02 !important;
    color: #050505 !important;
  }
  body.night-mode button[data-action="open-poststart"]:not(:disabled):hover,
  body.night-mode :is(.button-danger, .button-control-danger, .safety-button-danger):not(:disabled):hover,
  body.night-mode button[data-shift98="finished"]:not(:disabled):hover,
  body.night-mode button[data-shift98="cancelled"]:not(:disabled):hover {
    filter: none;
    background: #ff263c !important;
    border-color: #ff263c !important;
    color: #050505 !important;
  }
}
body.night-mode :is(.button, .cr-button):not(:disabled):not([aria-disabled="true"]):active {
  background: rgb(255 255 255 / 12%) !important;
}
body.night-mode :is(.button-primary, .cr-primary):not(:disabled):not([aria-disabled="true"]):active {
  background: #dedede !important;
  border-color: #dedede !important;
  color: #050505 !important;
}
