/* Screen-only UI alignment for the core modules. Keep print and shift grid geometry intact. */
:is(#diaryView, #ordersView, #rebarView, #pourView, #planningView, #settingsView, #shiftPlansView) {
  font-family: var(--bs-font-family);
}

/* Header text and actions retain each module's existing layout and artwork. */
:is(#diaryView, #ordersView, #rebarView, #pourView, #planningView, #settingsView, #shiftPlansView)
  :is(.delivery-heading, .planning-heading, .settings-heading, .shift-heading-warm) h1 {
  font-size: var(--bs-text-30);
  line-height: 1.15;
  letter-spacing: -.025em;
}
:is(#diaryView, #ordersView, #rebarView, #pourView, #planningView, #settingsView, #shiftPlansView)
  :is(.delivery-heading, .planning-heading, .settings-heading, .shift-heading-warm) .kicker {
  font-size: var(--bs-text-14);
  line-height: 1.35;
}
:is(#diaryView, #ordersView, #rebarView, #pourView, #planningView, #settingsView, #shiftPlansView)
  :is(.delivery-heading, .planning-heading, .settings-heading, .shift-heading-warm) p:not(.kicker) {
  line-height: 1.45;
}

/* Equal action hierarchy in headers, toolbars, and dialog footers. */
:is(#diaryView, #ordersView, #rebarView, #pourView, #planningView, #shiftPlansView, .hotel-card, .hotel-dialog, .module-detail-dialog)
  :is(.primary-order-btn, .primary-small, .secondary-btn, .module-dialog-close) {
  min-height: 44px;
  border-radius: var(--bs-radius-md);
  font: 600 var(--bs-text-15)/1.25 var(--bs-font-family);
}
:is(#diaryView, #ordersView, #rebarView, #pourView, #planningView, #shiftPlansView, .hotel-card, .hotel-dialog, .module-detail-dialog)
  :is(.primary-order-btn, .primary-small, .secondary-btn, .module-dialog-close):focus-visible {
  outline: 3px solid var(--bs-color-focus);
  outline-offset: 2px;
}
:is(#diaryView, #ordersView, #rebarView, #pourView, #planningView, #shiftPlansView, .hotel-card, .hotel-dialog, .module-detail-dialog)
  :is(.primary-order-btn, .primary-small, .secondary-btn, .module-dialog-close):disabled {
  cursor: not-allowed;
  opacity: .55;
}

/* Toolbar labels, fields and spacing. Existing native date inputs remain native. */
:is(#rebarView, #ordersView, #pourView) .module-register-toolbar,
#shiftPlansView .shift-directory-toolbar,
#shiftPlansView .shift-publication-tools,
.hotel-toolbar {
  gap: var(--bs-space-3);
}
#rebarView .rebar-register-toolbar {
  grid-template-columns: minmax(180px, 240px) minmax(240px, 1fr) auto;
}
#rebarView .rebar-register-toolbar .module-register-search {
  grid-column: auto;
}
#shiftPlansView .shift-travel-toolbar {
  grid-template-columns: minmax(160px, 1fr) 166px 166px minmax(165px, 1fr) minmax(180px, 1.3fr);
}
:is(#rebarView, #ordersView, #pourView) .module-register-toolbar label > span:not(.sr-only),
#shiftPlansView :is(.shift-directory-toolbar, .shift-publication-tools) label > span,
.hotel-toolbar label > span,
#planningView .planning-controls label > span {
  color: #344e60;
  font: 600 var(--bs-text-14)/1.4 var(--bs-font-family);
  letter-spacing: normal;
  text-transform: none;
}
:is(#rebarView, #ordersView, #pourView) .module-register-toolbar :is(input, select),
#shiftPlansView :is(.shift-directory-toolbar, .shift-publication-tools) :is(input, select),
.hotel-toolbar :is(input, select),
#planningView .planning-controls :is(input, select),
#diaryView .diary-search input {
  box-sizing: border-box;
  min-height: 44px;
  border: 1px solid #cbd6da;
  border-radius: var(--bs-radius-md);
  color: var(--bs-color-text);
  font: 400 var(--bs-text-15)/1.4 var(--bs-font-family);
}
:is(#rebarView, #ordersView, #pourView) .module-register-toolbar :is(input, select):focus-visible,
#shiftPlansView :is(.shift-directory-toolbar, .shift-publication-tools) :is(input, select):focus-visible,
.hotel-toolbar :is(input, select):focus-visible,
#planningView .planning-controls :is(input, select):focus-visible,
#diaryView .diary-search input:focus-visible {
  outline: 3px solid var(--bs-color-focus);
  outline-offset: 2px;
}
:is(#rebarView, #ordersView, #pourView) .module-register-toolbar :is(input, select):disabled,
#shiftPlansView :is(.shift-directory-toolbar, .shift-publication-tools) :is(input, select):disabled,
.hotel-toolbar :is(input, select):disabled {
  color: var(--bs-color-text-muted);
  background: var(--bs-color-surface-subtle);
  cursor: not-allowed;
}

/* The three delivery registers and the Hotel/Fly lists share a quiet header. */
#ordersView .order-list-head,
#rebarView .rebar-register-table th,
#pourView .pour-review-table th,
#shiftPlansView :is(.hotel-group th, .shift-travel-list-head) {
  min-height: 44px;
  background: #f4f7f8;
  border-color: var(--bs-color-border);
  color: #344e60;
  font: 600 var(--bs-text-14)/1.35 var(--bs-font-family);
  letter-spacing: normal;
  text-transform: none;
}
#rebarView .rebar-register-table td,
#pourView .pour-review-table td,
#shiftPlansView .hotel-group td {
  font-size: var(--bs-text-15);
  border-color: var(--bs-color-border);
}
#shiftPlansView .hotel-group td {
  padding-block: var(--bs-space-3);
}
#shiftPlansView .hotel-row-menu {
  min-width: 44px;
  min-height: 44px;
}

/* Status meaning and color are unchanged; only type size and shape align. */
:is(#ordersView, #rebarView, #pourView, #shiftPlansView)
  :is(.order-status, .hotel-status, .hotel-saved, .shift-heading-status > span) {
  font-size: var(--bs-text-14);
  line-height: 1.35;
}
:is(#ordersView, #rebarView, #pourView) .order-status {
  min-height: 32px;
  border-radius: var(--bs-radius-pill);
}

/* Readable feedback, without changing the underlying loading or error flow. */
:is(#shiftPlansView, #planningView, #pourView) :is(.shift-empty, .planning-empty, .empty-pours) strong {
  font-size: var(--bs-text-16);
}
:is(#shiftPlansView, #planningView, #pourView) :is(.shift-empty, .planning-empty, .empty-pours) p,
#shiftPlansView :is(.shift-loading, .shift-travel-detail-empty) {
  font-size: var(--bs-text-15);
  line-height: 1.5;
}

/* Dialog widths are deliberately module-specific; close and footer controls align. */
:is(.module-detail-dialog, .hotel-dialog, #templatePanel) {
  border-radius: var(--bs-radius-lg);
  box-shadow: var(--bs-shadow-dialog);
}
.hotel-dialog > header button[data-hotel-close] {
  width: 44px;
  min-height: 44px;
  border-radius: var(--bs-radius-md);
}
.hotel-dialog > header button[data-hotel-close]:focus-visible,
#templatePanel .template-header button:focus-visible {
  outline: 3px solid var(--bs-color-focus);
  outline-offset: 2px;
}

@media (max-width: 760px) {
  #rebarView .rebar-register-toolbar { grid-template-columns: minmax(0, 1fr); }
  #shiftPlansView .shift-travel-toolbar { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  #shiftPlansView .shift-travel-toolbar label:last-child { grid-column: 1 / -1; }
  :is(#diaryView, #ordersView, #rebarView, #pourView, #planningView, #settingsView, #shiftPlansView)
    :is(.delivery-heading, .planning-heading, .settings-heading, .shift-heading-warm) h1 {
    font-size: var(--bs-text-24);
  }
  :is(#diaryView, #ordersView, #rebarView, #pourView, #planningView, #shiftPlansView, .hotel-card, .hotel-dialog, .module-detail-dialog)
    :is(.primary-order-btn, .primary-small, .secondary-btn, .module-dialog-close) {
    min-height: 44px;
  }
  #shiftPlansView .hotel-metrics button { min-height: 44px; font-size: var(--bs-text-14); }
  #shiftPlansView .hotel-group td { padding-block: var(--bs-space-2); }
  .hotel-dialog > footer { flex-wrap: wrap; }
  .hotel-dialog > footer > button { flex: 1 1 150px; }
}

@media (max-width: 440px) {
  /* Native date values need the full row at 390px, including the calendar button. */
  #shiftPlansView .shift-travel-toolbar { grid-template-columns: minmax(0, 1fr); }
  #shiftPlansView .shift-travel-toolbar :is(input, select) { min-width: 0; width: 100%; font-size: var(--bs-text-16); }
  .hotel-dialog > footer > button { flex-basis: 100%; }
  .module-detail-dialog .module-dialog-close { min-width: 44px; }
}
