/* One contract for staff screens, generated Django forms and Jazzmin.
   No theme colours or page-shell rules: this must not restyle Jazzmin as the staff app. */
.compact-icon { display: none; }
.compact-break-space { display: none; }
.compact-date-short { display: none; }
.compact-text-dialog { box-sizing: border-box; max-width: min(640px, calc(100vw - 32px)); border: 1px solid #bdcbd5; border-radius: 16px; padding: 20px; }
.compact-text-dialog::backdrop { background: rgb(15 30 45 / 40%); }
.compact-text-dialog header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.compact-text-dialog h2 { margin: 0; font-size: 1rem; }
.compact-text-dialog button { min-width: 44px; min-height: 44px; cursor: pointer; }
.compact-text-dialog .compact-fulltext { overflow-x: auto; white-space: pre !important; max-width: 100%; padding: 12px 0; }

@media screen and (max-width: 1366px), screen and (any-pointer: coarse) {
  /* This is a product rule, including unknown/new fields. Specific legacy !important
     declarations are addressed below; do not replace it with a button-only rule. */
  html body, html body * {
    white-space: nowrap !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    hyphens: none;
  }
  html body .text-wrap,
  html body .nav-sidebar .nav-link p,
  html body .nav-sidebar .nav-header,
  html body .nav-sidebar .nav-header a { white-space: nowrap !important; overflow-wrap: normal !important; }
  html body .flex-wrap, .input-group, .sidebar-menu { flex-wrap: nowrap !important; }
  body :is(main, section, article, div, form, fieldset, header, footer, nav, ul, ol, dl) { min-width: 0; }
  body :is(input, select, textarea) { box-sizing: border-box; max-width: 100%; }
  /* Explicit newlines entered by the user remain data; soft wrapping is disabled. */
  html body textarea { white-space: pre !important; overflow: auto; }
  body br { display: none; }
  .compact-break-space { display: inline; }
  .compact-date-full { display: none; }
  .compact-date-short { display: inline; }
  body :is(h1, h2, h3, h4, h5, h6, p, dt, dd, legend, summary, caption),
  .compact-copy, .compact-field-label {
    min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis;
  }
  .compact-copy[data-compact-overflow="true"] { cursor: zoom-in; }
  .compact-staff-name { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
  .compact-copy:focus-visible { outline: 2px solid #0879a1; outline-offset: -2px; }
  .compact-field-label { display: inline-block; vertical-align: middle; overflow-x: auto; scrollbar-width: thin; }
  label { min-width: 0; max-width: 100%; }
  label:not(.compact-control) { display: block; }
  label:has(> input[type="checkbox"]), label:has(> input[type="radio"]) {
    display: inline-flex; align-items: center; gap: 6px;
  }
  label > :is(input[type="checkbox"], input[type="radio"]) { flex: 0 0 auto; }
  label > .compact-field-label { flex: 0 1 auto; }
  .compact-control {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    min-width: 0; max-width: 100%; vertical-align: middle;
  }
  .compact-control[hidden], .compact-control.hidden { display: none !important; }
  .compact-control.btn-block, .invite-card .compact-control { display: flex; }
  .compact-control > .compact-label, .compact-control > .ui-control-label {
    min-width: 0; overflow: hidden; text-overflow: ellipsis;
    max-width: 18rem; pointer-events: none;
  }
  .compact-control > .compact-label { display: block; }
  .compact-control[data-compact-icon] {
    min-width: 44px !important;
    min-height: 44px !important;
    height: auto !important;
    box-sizing: border-box;
    padding-inline: 10px;
  }
  .compact-control[data-compact-icon] > .compact-label,
  .compact-control[data-compact-icon] > .ui-control-label { display: none !important; }
  .compact-control[data-compact-short]::after { content: attr(data-compact-short); font-size: .8rem; }
  .compact-icon { display: inline-block; width: 20px; height: 20px; flex: 0 0 20px; pointer-events: none; }
  .compact-control :is(svg, i) { flex-shrink: 0; pointer-events: none; }
  /* Unknown actions also stay usable: bounded text, never an arbitrary guessed icon. */
  .compact-control:not([data-compact-icon]) { overflow: hidden; text-overflow: ellipsis; }
  .compact-rail,
  .cal-period-bar,
  .nav-tabs, .nav-pills, [role="tablist"], [role="toolbar"], .landing-hero__actions,
  .d-flex.flex-wrap,
  .toolbar-actions, .modal-actions, .sheet-actions, .feedback-actions,
  .profile-actions, .share-actions, .staff-actions, .staff-login-actions,
  .management-actions, .email-inline, .qual-list, .staff-display-preview-box,
  .team-date-nav, .team-job-filters, .team-legend, .team-day-segments,
  .team-capable-chips, .schedule-grid .capable-chips, .staffing-summary,
  .cal-legend, .cal-view-toggle, .cal-agenda-body, .cal-date-tabs,
  .legend, .side-tabs, .month-nav, .rule-weekday-presets, .rule-weekday-checks,
  .rule-list-actions, .secondment-actions, .admin-seg-edit, .admin-seg-actions,
  .admin-day-staff-row, .cr-actions, .dq-summary, .submit-row, .object-tools,
  .actions, .pagination, .breadcrumb {
    flex-wrap: nowrap !important; min-width: 0; max-width: 100%;
    overflow-x: auto; overflow-y: hidden; scrollbar-width: thin;
    overscroll-behavior-x: contain;
  }
  #change-list-date-hierarchy { max-width: 100%; overflow-x: auto; overflow-y: hidden; }
  .compact-rail > *, .toolbar-actions > *, .modal-actions > *,
  .nav-tabs > *, .nav-pills > *, [role="tablist"] > *,
  .team-capable-chips > *, .capable-chips > *, .staffing-summary > *,
  .staff-login-actions > *, .admin-seg-actions > *, .admin-seg-edit > *,
  .submit-row > *, .object-tools > *, .actions > * { flex-shrink: 0; }
  .staff-login-actions form { display: inline-flex; }
  .nav-tabs .compact-control, .nav-pills .compact-control { max-width: 12rem; }
  .compact-table-scroll {
    box-sizing: border-box; width: 100%; max-width: 100%; height: auto;
    max-height: none; overflow-x: auto; overflow-y: hidden;
    overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch;
  }
  .compact-table-scroll > table { margin-bottom: 0; }
  table :is(th, td) { max-width: 24rem; overflow: hidden; text-overflow: ellipsis; }
  .grid-wrap, .team-grid-wrap { max-height: none; height: auto; overflow-y: hidden; }
  .ui-line-notice { overflow: hidden; text-overflow: ellipsis; }
  .msg-item { max-width: 100%; overflow: hidden; }
  .msg-item .user-text { display: block; overflow: hidden; text-overflow: ellipsis; }
  .staff-card__meta:has(button) { overflow-x: auto; overflow-y: hidden; }
  .feed-url, .email-cell, .staff-temp-password-once { overflow-x: auto; max-width: 100%; }
  .toast, .ui-alert, .alert, .errornote, .errorlist, .help, .helptext { min-width: 0; max-width: 100%; }
  .ui-alert > *, .alert > * { min-width: 0; }
  p:has(a), .alert:has(a), .help:has(a), .helptext:has(a), .callout:has(a) {
    overflow-x: auto; overflow-y: hidden; scrollbar-width: thin;
  }
  .app-content, .app-main, .hub, .profile-main { box-sizing: border-box; max-width: 100%; }
  .app-header__controls, .app-header__nav, .app-header__user { flex-wrap: nowrap !important; min-width: 0; }
  .app-header__controls > * { flex-shrink: 0; }
  .app-header__controls > label { display: flex; align-items: center; gap: 6px; }
  .app-header__controls select { min-width: 120px; }
  .app-header__controls .month-nav { flex: 0 0 auto; max-width: none; }
  .app-header__controls .month-label-btn { min-width: 8rem; }
  .app-header__nav { overflow-x: auto; }
  .app-header__user #user-display { max-width: 8rem; }
  .app-header__nav .ui-control-label, .app-header .logout-button .ui-control-label,
  .management-header .ui-control-label, .mobile-header .ui-control-label { display: none !important; }
  .app-header__nav a, .app-header .logout-button, .management-header .ui-icon-control,
  .mobile-header .ui-icon-control { min-width: 44px; width: 44px; padding-inline: 0; }
  .mobile-header__title { overflow: hidden; text-overflow: ellipsis; }
  .mobile-header__actions { flex-shrink: 0; }
  .cal-header, .team-date-nav { min-width: 0; }
  .cal-header > span { overflow: hidden; text-overflow: ellipsis; }
  .schedule-grid .grid-day-btn { min-height: 44px; }
  .schedule-grid .grid-day-btn[data-compact-date] > .compact-label { display: none; }
  .schedule-grid .grid-day-btn[data-compact-date]::after { content: attr(data-compact-date); }
  .schedule-grid :is(th, td):not(.col-name):not([colspan]) { min-width: 52px; }
  .schedule-grid.team-schedule-grid thead th:not(.col-name) { min-width: 52px; }
  .landing-hero__inner, .landing-steps { grid-template-columns: minmax(0, 1fr); }
  .landing-hero__copy, .landing-steps li > div, .landing-access > div { min-width: 0; max-width: 100%; }
  .landing-preview { box-sizing: border-box; max-width: 560px; }
  .landing-access { box-sizing: border-box; flex-direction: column; align-items: stretch; }
  .landing-hero h1 { font-size: clamp(1.25rem, 3vw, 2rem); }
  .landing-section h2 { font-size: clamp(1.1rem, 2vw, 1.5rem); }
  .landing-footer__inner { min-width: 0; overflow-x: auto; }
  .landing-footer__inner > * { flex-shrink: 0; }
  .hub-grid { grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); }
  .error-page { display: block; padding-top: 20vh; }

  /* Generated Django / Jazzmin pages, including navigation and related widgets. */
  .app-wrapper, .app-content, .content-wrapper, .content, #content, #content-main,
  #changelist, .change-form, .card-body, .tab-content, .tab-pane { min-width: 0; }
  .app-wrapper .app-main { max-width: 100%; }
  .app-wrapper .app-header { max-width: 100%; }
  #jazzy-navbar .navbar-nav { flex-shrink: 0; }
  html body .nav-sidebar .nav-link p,
  html body .nav-sidebar .nav-header,
  html body .nav-sidebar .nav-header a {
    overflow: hidden !important; text-overflow: ellipsis !important; max-width: 100%;
  }
  .nav-sidebar .nav-link { display: flex; align-items: center; min-width: 0; gap: 6px; }
  .nav-sidebar .nav-link p { flex: 1; min-width: 0; }
  .nav-sidebar .nav-icon { flex-shrink: 0; }
  .nav-sidebar .nav-link p .right { position: static; float: right; }
  .admin-recent-col, #content-related, #recent-actions-module { min-width: 0; }
  #recent-actions-module .timeline-item { min-width: 0; }
  .select2-container { max-width: 100%; min-width: 0; }
  .select2-selection__rendered { overflow: hidden; text-overflow: ellipsis; }
  .select2-selection--multiple .select2-selection__rendered { display: flex !important; flex-wrap: nowrap !important; overflow-x: auto; }
  .selector, .selector-available, .selector-chosen { max-width: 100%; min-width: 0; }
  .related-widget-wrapper { min-width: 0; max-width: 100%; overflow-x: auto; }
  .related-widget-wrapper select { max-width: calc(100% - 80px); }
  .form-row, .form-group { min-width: 0; max-width: 100%; }
  .login-box { max-width: calc(100vw - 32px); }
  .compact-text-dialog .compact-fulltext { white-space: pre !important; }
}

@media screen and (max-width: 600px) {
  .app-header__user #user-display { display: none; }
  .app-header__nav { max-width: 44vw; }
  .landing-hero__actions { flex-direction: row; }
  .landing-hero__actions .landing-button { width: auto; flex: 1 0 44px; }
  .landing-feature-grid { grid-template-columns: minmax(0, 1fr); }
  .compact-control { min-height: 44px; }
}

@media print {
  /* Screen nowrap must not win over print (J9). */
  html body, html body * {
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
  }
  html body textarea { white-space: pre-wrap !important; }
  .compact-icon, .compact-break-space, .compact-text-dialog { display: none !important; }
  .compact-table-scroll { overflow: visible; }
  .compact-copy, .compact-field-label, .compact-staff-name {
    overflow: visible !important;
    text-overflow: clip !important;
    max-width: none !important;
  }
}
