/* Shared mobile contract. Component styles may follow this file, so overrides
   target the actual controls rather than masking document overflow. */
@media (max-width: 767.98px) {
    .page :is(.card, .card-body, .card-header, .card-footer, .row > *, .input-group, .erp-table-toolbar > *) { min-width: 0; }
    .page :is(.card-header, .card-footer, .page-header .btn-list, .erp-table-toolbar, .erp-table-pagination-footer) { flex-wrap: wrap; gap: .65rem; }
    .page :is(input.form-control, select.form-select, textarea.form-control) { font-size: 16px !important; }
    .page :is(.btn, .dropdown-item, .form-control, .form-select, summary, .nav-link) { min-height: 44px; }
    .page .btn { white-space: normal; overflow-wrap: anywhere; }
    .page .form-label { display: block; }
    .page :is(.form-check-label, .form-hint, .card-body p, .card-body dd) { overflow-wrap: anywhere; }
    .page .form-check { display: flex; align-items: center; min-height: 44px; gap: .5rem; padding-left: 0; }
    .page .form-check-input { flex: 0 0 auto; margin-left: 0; margin-top: 0; width: 20px; height: 20px; }
    .page .btn-icon, .page .todo-check, .page .todo-star { min-width: 44px; min-height: 44px; }
    .page-header .row > .col-auto { flex: 1 1 100%; max-width: 100%; }
    .page-header .row > .col-auto .btn-list { display: flex; width: 100%; }
    .page-header .row > .col-auto .btn-list > * { flex: 1 1 140px; width: auto; max-width: 100%; }
    .page .erp-table-toolbar, .page .erp-table-tools { display: flex; flex-wrap: wrap; width: 100%; }
    .page .erp-table-toolbar > *, .page .erp-table-tools > * { flex: 1 1 140px; max-width: 100%; }
    .page .erp-table-toolbar > .erp-table-search { flex: 1 1 100%; }
    .page .erp-table-toolbar-sticky { position: static !important; }
    .page :is(.case-cockpit-tabs, .wf-part-tabs, .invoice-workspace-tabs, .nav-tabs) { max-width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; }
    .page .table-responsive { max-width: 100%; }
    .page .modal-dialog { margin: .5rem; max-width: calc(100vw - 1rem); }
    .page .modal-content { max-height: calc(100dvh - 1rem); }
    .page .modal-body { overflow-y: auto; min-height: 0; }
    .page .modal-footer > * { max-width: 100%; }
    .page .navbar:first-child > .container-xl { flex-wrap: nowrap; gap: .4rem; }
    .page .navbar:first-child .navbar-brand { flex: 1 1 auto; margin: 0; padding: 0; text-align: left; max-width: none; font-size: 17px; }
    .page .navbar:first-child .navbar-nav.flex-row { flex: 0 0 auto; gap: .35rem; }
    .page .navbar:first-child .navbar-nav.flex-row > .nav-item { margin-right: 0 !important; }
    .page .erp-header-health { min-width: 40px; padding: .55rem; }
    .page .erp-header-health-text { display: none; }
    .page .erp-navigation-header .erp-module-search { width: 100%; max-width: none; }
    .page .erp-navigation-header .dropdown-menu { max-height: none; }
    .page .erp-navigation-header .nav-link { min-height: 44px; }
    .page .erp-search-select-panel { position: fixed !important; inset: auto .5rem calc(env(safe-area-inset-bottom, 0px) + .5rem) !important; max-height: min(70dvh, 34rem); display: flex; flex-direction: column; border-radius: .8rem; box-shadow: 0 0 0 100vmax #0005; }
    .page .erp-search-select-panel.d-none { display: none !important; }
    .page .erp-search-select-list { min-height: 0; max-height: none; flex: 1 1 auto; overflow-y: auto; overscroll-behavior: contain; }
    .page .erp-search-select-option { min-height: 48px; }
    .page .erp-search-select-create { flex: 0 0 auto; min-height: 44px; }
    .page .erp-search-select-search { flex: 0 0 auto; }
    .page .case-selected-services button { min-width: 40px; min-height: 40px; }
    .page .wf-card-menu > summary, .page .wf-template-menu > summary { width: 40px; height: 40px; min-height: 40px; }
    .page .wf-route-step { padding-right: 52px; }
    .page .wf-card-menu button { min-height: 44px; }
    .page .wf-stage-insert { opacity: 1; min-width: 30px; }
    .page .wf-stage-track { touch-action: pan-x pan-y; }
    .page :is(.stage-discussion__header, #case-discussions .card-header) { gap: .5rem; }
    .page :is(.case-cockpit-discussion, .wf-discussion-column) { position: static; }
    .page .stage-discussion__composer textarea { font-size: 16px; }
    .page .invoice-preview-page { max-width: 100%; }
    .document-template-row .card-header { min-height: 48px; }

    /* Cards for ordinary record lists. Financial matrices/rowspan tables keep
       bounded horizontal scrolling, with an explicit hint and keyboard access. */
    .page .mobile-record-wrap { max-height: none !important; overflow: visible !important; }
    .page table.mobile-record-table { display: block; table-layout: auto; width: 100% !important; min-width: 0 !important; margin: 0; }
    .page table.mobile-record-table > colgroup { display: none; }
    .page table.mobile-record-table > thead { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    .page table.mobile-record-table > tbody { display: grid; gap: .75rem; padding: .75rem; width: 100%; }
    .page table.mobile-record-table > tbody > tr:not([hidden]):not(.d-none) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: .75rem; border: 1px solid var(--tblr-border-color); border-radius: .65rem; background: var(--tblr-bg-surface); box-shadow: 0 2px 8px #00000005; }
    .page table.mobile-record-table > tbody > tr[hidden], .page table.mobile-record-table > tbody > tr.d-none { display: none !important; }
    .page table.mobile-record-table > tbody > tr > td { display: block; width: auto !important; min-width: 0 !important; max-width: none !important; padding: .4rem .5rem; border: 0; text-align: left !important; white-space: normal !important; overflow-wrap: anywhere; box-shadow: none; }
    .page table.mobile-record-table > tbody > tr > td::before { content: attr(data-mobile-label); display: block; margin-bottom: .25rem; color: var(--tblr-secondary); font-size: 11px; font-weight: 600; letter-spacing: .02em; }
    .page table.mobile-record-table > tbody > tr > td:first-child, .page table.mobile-record-table > tbody > tr > td.mobile-record-actions, .page table.mobile-record-table td[colspan] { grid-column: 1 / -1; }
    .page table.mobile-record-table td .btn-list, .page table.mobile-record-table td form.d-flex { flex-wrap: wrap !important; }
    .page table.mobile-record-table td input, .page table.mobile-record-table td select { width: 100%; }
    .page table.mobile-record-table td input[type=checkbox], .page table.mobile-record-table td input[type=radio] { width: 20px; }
    .page .mobile-table-options { margin: .5rem .75rem; border-bottom: 1px solid var(--tblr-border-color); }
    .page .mobile-table-options > summary { display: flex; align-items: center; color: var(--tblr-primary); font-weight: 600; }
    .page .mobile-table-options > div { display: flex; flex-wrap: wrap; gap: .5rem; padding: 0 0 .75rem; }
    .page .mobile-table-options button { min-height: 44px; }
    .page .mobile-scroll-hint { display: block; margin: .5rem .75rem; color: var(--tblr-secondary); font-size: 12px; }
    .page table.mobile-record-table > tbody > tr { position: relative; }
    .page table.mobile-record-table > tbody > tr > td.mobile-record-primary { grid-column: 1 / -1; }
    .page table.mobile-record-table > tbody > tr > td.mobile-record-select { position: absolute; right: .65rem; top: .65rem; width: 44px !important; min-height: 44px; display: grid; place-items: center; padding: 0; }
    .page table.mobile-record-table td.mobile-record-select::before { display: none; }
    .page table.mobile-record-table tr:has(.mobile-record-select) > td.mobile-record-primary { padding-right: 48px; }
    .page table.mobile-record-table > tbody > tr.table-warning { border-color: var(--cbp-warn-ink, #b88436); }
    .page table.mobile-record-table > tbody > tr.table-danger { border-color: var(--cbp-danger-ink, #b43548); }
    .page .row:has(> .col-md-3 > .card) > .col-md-3 { flex: 0 0 50%; max-width: 50%; }
    .page .row:has(> .col-md-3 > .card) > .col-md-3 > .card .card-body { padding: .8rem; }
    .page .row > .col-sm-6.col-lg-3:has(> .card.card-sm) { flex: 0 0 50%; max-width: 50%; }
    .page .row > .col-sm-6.col-lg-3 > .card.card-sm .card-body { padding: .8rem; }
}
@media (min-width: 768px) {
    .mobile-table-options, .mobile-scroll-hint { display: none; }
}
@media (min-width: 768px) and (max-width: 1199.98px) {
    .erp-navigation-header .container-xl { flex-wrap: wrap; gap: .5rem; }
    .erp-navigation-header .navbar-nav { flex-wrap: wrap; }
    .erp-navigation-header .erp-module-search { flex: 1 1 100%; width: 100%; max-width: none; }
}

/* Keep the header health panel fully visible on phones and small tablets. */
@media (max-width: 991.98px) {
    .erp-health-dropdown {
        position: fixed !important;
        top: calc(env(safe-area-inset-top, 0px) + 4.25rem) !important;
        right: .5rem !important;
        bottom: auto !important;
        left: .5rem !important;
        width: auto !important;
        min-width: 0 !important;
        box-sizing: border-box;
        padding: 0 !important;
        max-width: none;
        max-height: calc(100vh - env(safe-area-inset-top, 0px) - 5rem) !important;
        max-height: calc(100dvh - env(safe-area-inset-top, 0px) - 5rem) !important;
        overflow: hidden !important;
        margin: 0 !important;
        transform: none !important;
        z-index: 1080;
    }

    .erp-health-dropdown.dropdown-menu-arrow::before,
    .erp-health-dropdown.dropdown-menu-arrow::after {
        display: none;
    }

    .erp-health-dropdown > .card {
        display: flex;
        min-height: 0;
        max-height: inherit;
        flex-direction: column;
    }

    .erp-health-dropdown .erp-health-scroll {
        min-height: 0;
        max-height: none;
        flex: 1 1 auto;
    }
}
