/*
 * AICS_PROJECT_WIDE_MOBILE_CARD_STANDARD_V2_20260831
 * Shared presentation-only mobile fallback.
 * - no business logic
 * - no permissions
 * - no data mutation
 * - no navigation changes
 * - ordinary tables only; complex/specialised tables are skipped by JS
 */

:root {
  --aics-mobile-v2-border: #e7dcea;
  --aics-mobile-v2-surface: #ffffff;
  --aics-mobile-v2-soft: #fbf8fc;
  --aics-mobile-v2-text: #1f2235;
  --aics-mobile-v2-muted: #667085;
  --aics-mobile-v2-primary: #6a2875;
}

/* Tablet/narrow desktop: keep tables semantic and scroll locally if required. */
.aics-mobile-card-table-wrap {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 767px) {
  /* ------------------------------------------------------------------
     1. Project-wide viewport containment.
     Complex pages may keep their own internal scrollers, but the BODY
     must never become the horizontal scroller during ordinary use.
     ------------------------------------------------------------------ */
  html.aics-mobile-standard-v2-ready,
  html.aics-mobile-standard-v2-ready body {
    width: 100%;
    max-width: 100%;
    overflow-x: clip !important;
  }

  html.aics-mobile-standard-v2-ready body :where(
    .app-shell,
    .main,
    main,
    .content,
    .page,
    .aics-page,
    .aics-page-shell,
    .aics-directory-shell
  ) {
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  html.aics-mobile-standard-v2-ready body :where(
    .content,
    .page,
    .aics-page,
    .aics-page-shell
  ) {
    overflow-x: clip !important;
  }

  html.aics-mobile-standard-v2-ready body :where(
    .card,
    .aics-card,
    .panel,
    .aics-panel,
    article,
    section,
    details,
    fieldset,
    form
  ) {
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
  }

  html.aics-mobile-standard-v2-ready body :where(
    p,
    span,
    strong,
    small,
    a,
    td,
    th,
    label,
    .muted
  ) {
    overflow-wrap: anywhere;
  }

  /* ------------------------------------------------------------------
     2. Form containment and iOS-safe control sizing.
     JS only adds .aics-mobile-standard-form to ordinary forms. Existing
     specialised roster/availability/timesheet/medicine forms are skipped.
     ------------------------------------------------------------------ */
  html.aics-mobile-standard-v2-ready body .aics-mobile-standard-form {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
  }

  html.aics-mobile-standard-v2-ready body .aics-mobile-standard-form > :where(
    label,
    section,
    fieldset,
    .form-field,
    .aics-form-field,
    .full-width,
    .form-full-row,
    .row,
    .form-row
  ) {
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  html.aics-mobile-standard-v2-ready body [data-aics-mobile-stack="true"] {
    grid-template-columns: minmax(0, 1fr) !important;
    min-width: 0 !important;
    max-width: 100% !important;
  }

  html.aics-mobile-standard-v2-ready body :where(
    input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
    select,
    textarea
  ) {
    box-sizing: border-box !important;
    max-width: 100% !important;
    min-width: 0 !important;
    font-size: 16px !important;
  }

  html.aics-mobile-standard-v2-ready body input[type="file"] {
    width: 100%;
    max-width: 100%;
    white-space: normal;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  html.aics-mobile-standard-v2-ready body :where(
    .form-actions,
    .aics-form-actions,
    .action-row,
    .actions-row,
    .button-row,
    .card-actions
  ) {
    max-width: 100%;
    flex-wrap: wrap;
  }

  /* ------------------------------------------------------------------
     3. Final Edit User mobile containment.
     This deliberately overrides the older same-screen floating panel at
     the end of the cascade. The context text is hidden on phones because
     the user's identity is already present in the Edit User form/page.
     ------------------------------------------------------------------ */
  html.aics-mobile-standard-v2-ready body .aics-users-page-v1.aics-users-edit-mode,
  html.aics-mobile-standard-v2-ready body .aics-users-page-v1.aics-users-edit-mode > .users-single-column-fix,
  html.aics-mobile-standard-v2-ready body .aics-users-page-v1.aics-users-edit-mode .users-single-column-fix > .card,
  html.aics-mobile-standard-v2-ready body .aics-users-page-v1.aics-users-edit-mode #editUserForm {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    box-sizing: border-box !important;
    overflow-x: clip !important;
    contain: none !important;
  }

  html.aics-mobile-standard-v2-ready body.aics-staff-edit-mobile-open {
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: clip !important;
  }

  html.aics-mobile-standard-v2-ready body .aics-staff-edit-mobile-panel {
    left: 0 !important;
    right: 0 !important;
    inset-inline: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding-left: max(12px, env(safe-area-inset-left, 0px)) !important;
    padding-right: max(12px, env(safe-area-inset-right, 0px)) !important;
    box-sizing: border-box !important;
    overflow-x: clip !important;
  }

  html.aics-mobile-standard-v2-ready body .aics-staff-edit-mobile-toolbar {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    padding: 8px !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
  }

  html.aics-mobile-standard-v2-ready body .aics-staff-edit-mobile-toolbar .aics-staff-edit-mobile-context {
    display: none !important;
  }

  html.aics-mobile-standard-v2-ready body .aics-staff-edit-mobile-back {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    box-sizing: border-box !important;
    text-align: center !important;
  }

  html.aics-mobile-standard-v2-ready body .aics-users-page-v1.aics-users-edit-mode #editUserForm,
  html.aics-mobile-standard-v2-ready body .aics-users-page-v1.aics-users-edit-mode #editUserForm > :where(label, section, fieldset),
  html.aics-mobile-standard-v2-ready body .aics-users-page-v1.aics-users-edit-mode .aics-service-region-options,
  html.aics-mobile-standard-v2-ready body .aics-users-page-v1.aics-users-edit-mode .award-classification-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  /* ------------------------------------------------------------------
     4. Ordinary semantic tables -> labelled mobile cards.
     JS applies this class only to unhandled ordinary tables.
     ------------------------------------------------------------------ */
  html.aics-mobile-standard-v2-ready body .aics-mobile-card-table-wrap {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    overflow: visible !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table,
  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    table-layout: auto !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > thead {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    margin: -1px !important;
    padding: 0 !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
    border: 0 !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody {
    display: grid !important;
    gap: 12px !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 1px solid var(--aics-mobile-v2-border) !important;
    border-radius: 12px !important;
    background: var(--aics-mobile-v2-surface) !important;
    box-shadow: 0 4px 12px rgba(24, 18, 38, .05) !important;
    overflow: visible !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr > td,
  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr > th {
    display: grid !important;
    grid-template-columns: minmax(104px, 36%) minmax(0, 1fr) !important;
    gap: 10px !important;
    align-items: start !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    padding: 10px 12px !important;
    border: 0 !important;
    border-bottom: 1px solid #eee5f0 !important;
    box-sizing: border-box !important;
    white-space: normal !important;
    text-align: left !important;
    overflow: visible !important;
    overflow-wrap: anywhere !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr > :last-child {
    border-bottom: 0 !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr > td::before,
  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr > th::before {
    content: attr(data-aics-label);
    display: block;
    color: #667085;
    font-size: .72rem;
    font-weight: 800;
    line-height: 1.3;
    letter-spacing: .025em;
    text-transform: uppercase;
    overflow-wrap: anywhere;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr.aics-mobile-empty-row {
    box-shadow: none !important;
    background: var(--aics-mobile-v2-soft) !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr.aics-mobile-empty-row > td,
  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr.aics-mobile-empty-row > th {
    display: block !important;
    padding: 14px !important;
    color: var(--aics-mobile-v2-muted) !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr.aics-mobile-empty-row > td::before,
  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr.aics-mobile-empty-row > th::before {
    display: none !important;
    content: none !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table .aics-mobile-actions-cell {
    display: block !important;
    min-height: 52px !important;
    text-align: right !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table .aics-mobile-actions-cell::before {
    display: block !important;
    margin-bottom: 8px !important;
    text-align: left !important;
  }

  /* AICS_PROJECT_WIDE_ROW_ACTIONS_POPOVER_STABILITY_V2_20260901
     Keep compact three-dot triggers compact, but never constrain their opened
     popover to the 44px trigger column. The shared app.js positions the fixed
     popover within the viewport using inline left/top values. */
  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table .aics-mobile-actions-cell :where(
    .actions-menu,
    .row-actions,
    .aics-row-actions
  ) {
    width: auto !important;
    max-width: none !important;
    min-width: 44px !important;
    display: inline-flex !important;
    justify-content: flex-end !important;
    flex-wrap: nowrap !important;
    overflow: visible !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table .aics-mobile-actions-cell .actions-popover:not([hidden]) {
    position: fixed !important;
    transform: none !important;
    width: min(240px, calc(100vw - 20px)) !important;
    max-width: calc(100vw - 20px) !important;
    min-width: 0 !important;
    margin: 0 !important;
    box-sizing: border-box !important;
    float: none !important;
    right: auto !important;
    bottom: auto !important;
    z-index: 10000 !important;
    max-height: calc(100vh - 16px) !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table .aics-mobile-actions-cell .actions-popover:not([hidden]) :where(a, button, summary) {
    white-space: nowrap !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table .aics-mobile-actions-cell .actions-popover .actions-reject-form,
  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table .aics-mobile-actions-cell .actions-popover .actions-reject-form textarea {
    white-space: normal !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table :where(.status, .badge, .aics-badge) {
    display: inline-flex;
    max-width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* ------------------------------------------------------------------
     5. Pagination/filter/modal safety shared across modules.
     ------------------------------------------------------------------ */
  html.aics-mobile-standard-v2-ready body :where(
    .pagination,
    .pagination-controls,
    .aics-table-pagination,
    .staff-pagination
  ) {
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    -webkit-overflow-scrolling: touch;
  }

  html.aics-mobile-standard-v2-ready body :where(
    .filters,
    .filter-row,
    .filter-grid,
    .list-controls,
    .aics-list-controls
  ) {
    min-width: 0 !important;
    max-width: 100% !important;
  }

  html.aics-mobile-standard-v2-ready body :where(
    .confirm-modal,
    .modal,
    .dialog,
    [role="dialog"]
  ) {
    max-width: calc(100vw - 24px) !important;
    max-height: calc(100dvh - 24px) !important;
    box-sizing: border-box !important;
  }

  html.aics-mobile-standard-v2-ready body :where(
    .confirm-modal,
    .modal,
    .dialog
  ) {
    overflow-x: hidden !important;
    overflow-y: auto !important;
  }
}

@media (max-width: 390px) {
  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr > td,
  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr > th {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 4px !important;
  }

  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr > td::before,
  html.aics-mobile-standard-v2-ready body table.aics-mobile-card-table > tbody > tr > th::before {
    margin-bottom: 2px;
  }
}
