/*
 * Shared visual stability layer for operator cards.
 * Presentation only: no selectors here change display state or application flow.
 * This file is loaded after the theme and mobile overrides so the same layout
 * contract wins on desktop, mobile, and dark mode.
 */

:root {
  --erpds-card-gap: 12px;
  --erpds-card-pad: 12px;
  --erpds-sticky-layer: var(--erpds-z-sticky-bar, 950);
  --erpds-tab-layer: var(--erpds-z-sticky, 10);
  --erpds-dialog-layer: var(--erpds-z-modal, 9100);
  --erpds-transition-min-height: 280px;
}

/* Keep cards and their content inside the available grid track. */
.erpds-card,
.j_card_div,
.erpds-task-hero,
.erpds-task-layout,
.erpds-task-sidebar,
.erpds-equip-card,
.erpds-inventory-layout,
.erpds-inventory-page,
.calendar_all_wrapper {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

.erpds-card-header,
.erpds-card-title-row,
.erpds-card__title-row,
.erpds-card__header,
.erpds-card-view-switch,
.erpds-task-toolbar,
.erpds-equipment-actions {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

.erpds-card-header__label,
.erpds-card__title,
.erpds-card__value,
.erpds-task-title,
.erpds-task-hero-subtitle,
.erpds-equip-card a,
.erpds-equip-card strong,
.erpds-equip-card span {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* One stable layer order for sticky controls and popovers. */
.erpds-sticky-bar {
  z-index: var(--erpds-sticky-layer) !important;
  backface-visibility: hidden;
  transition: transform 180ms ease, opacity 120ms ease;
}

.erpds-sticky-bar:not(.erpds-sticky-bar--visible) {
  opacity: 0;
}

ul#navigation,
ul#navigation2 {
  z-index: var(--erpds-tab-layer) !important;
  isolation: isolate;
}

.erpds-v4 .erpds-task-sidebar {
  z-index: var(--erpds-tab-layer);
}

.erpds-inventory-page--edit .erpds-inventory-form-actions {
  z-index: var(--erpds-tab-layer) !important;
  background: color-mix(in srgb, var(--erpds-surface) 96%, transparent) !important;
  border-color: var(--erpds-border) !important;
}

#dialog-box,
#dialogConfirmbox,
.erpds-sp-overlay,
.erpds-state-comment-overlay,
.erpds-calendar-mode-overlay {
  z-index: var(--erpds-dialog-layer) !important;
}

/* Loading keeps a meaningful footprint while the response is replaced. */
.erpds-customer-tab-transition-loading,
#dialog_message.erpds-ajax-transition-loading {
  min-height: var(--erpds-transition-min-height);
  box-sizing: border-box;
  contain: layout;
  opacity: 0.62;
  transition: opacity 160ms ease;
}

/* Do not animate dimensions: content updates should fade, never push the card. */
.erpds-v4 .j_card_comment_div,
.erpds-v4 .erpds-comment-body {
  transition: background-color 140ms ease, border-color 140ms ease,
    color 140ms ease, opacity 180ms ease, transform 180ms ease;
}

.erpds-hero-btn--overdue,
.journal-group-skeleton__name,
.journal-group-skeleton__count {
  animation: none !important;
}

/* Calendar has one vertical scroll owner: the calendar wrapper. */
#calendar_body_id:has(.calendar_all_wrapper) {
  max-height: none !important;
  overflow: visible !important;
}

.calendar_all_wrapper {
  overflow-x: auto !important;
  overflow-y: auto !important;
  overscroll-behavior: contain;
  scrollbar-width: thin;
}

.calendar_all_wrapper .calendar_header th {
  z-index: calc(var(--erpds-tab-layer) + 3);
}

.calendar_all_wrapper .calendar_item_hour {
  z-index: calc(var(--erpds-tab-layer) + 2);
}

.calendar_all_wrapper .calendar_header th.calendar_header_date:first-child,
.calendar_all_wrapper .calendar_header th:first-child {
  z-index: calc(var(--erpds-tab-layer) + 4);
}

.calendar-now-line {
  z-index: calc(var(--erpds-tab-layer) + 5);
}

.calendar_all_wrapper .calendar_item_element .erpds-calendar-task-card {
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
  border-color: var(--erpds-border);
  color: var(--erpds-text);
}

/* Normalize task statuses through the theme tokens, including dark hover state. */
.erpds-v4 .erpds-task-state[data-system-role="successful"],
.erpds-v4 .erpds-pill[data-system-role="successful"],
.erpds-v4 .erpds-pill--success {
  background: var(--erpds-ok-soft) !important;
  border-color: var(--erpds-ok-border) !important;
  color: var(--erpds-ok-text) !important;
}

.erpds-v4 .erpds-task-state[data-system-role="failed"],
.erpds-v4 .erpds-task-state[data-system-role="cancelled"],
.erpds-v4 .erpds-pill[data-system-role="failed"],
.erpds-v4 .erpds-pill[data-system-role="cancelled"],
.erpds-v4 .erpds-pill--danger {
  background: var(--erpds-bad-soft) !important;
  border-color: var(--erpds-err-border) !important;
  color: var(--erpds-bad-text) !important;
}

.erpds-v4 .erpds-task-state[data-system-role="run"] {
  background: var(--erpds-info-soft) !important;
  border-color: var(--erpds-info-border) !important;
  color: var(--erpds-info-text) !important;
}

.erpds-v4 .erpds-task-state[data-system-role="holded"],
.erpds-v4 .erpds-task-state[data-system-role="unfinished"] {
  background: var(--erpds-hold-soft) !important;
  border-color: var(--erpds-warn-border) !important;
  color: var(--erpds-hold-text) !important;
}

/* Mobile dialog: shell is clipped, content is the only general scroll area. */
@media (max-width: 900px) {
  .erpds-customer-body,
  .erpds-task-layout,
  .erpds-inventory-layout {
    padding-right: max(var(--erpds-grid-padding-x-mobile, 12px), env(safe-area-inset-right, 0px));
    padding-left: max(var(--erpds-grid-padding-x-mobile, 12px), env(safe-area-inset-left, 0px));
  }

  #dialog-box,
  #dialog-box[style*="overflow"] {
    overflow: hidden !important;
  }

  #dialog-box > .dialog-content {
    min-width: 0;
    max-width: 100%;
    max-height: calc(100dvh - 76px) !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    scrollbar-width: thin;
  }

  #dialog-box:has(.erpds-inv-move-dialog) > .dialog-content,
  #dialog-box:has(.erpds-inv-issue-dialog) > .dialog-content,
  #dialog-box:has(.erpds-inv-hot-replace-dialog) > .dialog-content {
    max-height: calc(100dvh - 78px) !important;
  }

  .erpds-sticky-bar__tiles {
    min-width: 0;
    overflow-x: auto;
    overflow-y: hidden;
  }

  .erpds-task-flow-nav,
  .erpds-task-toolbar,
  .erpds-equipment-actions {
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
  }

  .erpds-task-flow-nav::-webkit-scrollbar,
  .erpds-task-toolbar::-webkit-scrollbar,
  .erpds-equipment-actions::-webkit-scrollbar {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .erpds-sticky-bar,
  .erpds-customer-tab-transition-loading,
  #dialog_message.erpds-ajax-transition-loading,
  .erpds-v4 .j_card_comment_div,
  .erpds-v4 .erpds-comment-body {
    transition: none !important;
  }
}
