/* AST28: opt-in module styles. No invoice editor, modal or global form overrides. */
.module-ui {
    --module-ui-gap: 1rem;
    min-width: 0;
    color: var(--bs-body-color);
    overflow-wrap: anywhere;
    scroll-margin-top: 5rem;
}
.module-ui .page-header,
.module-ui .module-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--module-ui-gap);
    margin-bottom: 1.5rem;
}
.module-ui .page-header > *,
.module-ui .module-toolbar > * { min-width: 0; }
.module-ui .page-header > .d-flex { flex-wrap: wrap; }
.module-ui .form-label {
    color: var(--bs-body-color);
    font-size: .875rem;
    text-transform: none;
    letter-spacing: normal;
    margin-bottom: .5rem;
}
.module-ui .module-filters { margin-bottom: 1rem; }
.module-ui .module-filters-title { font-size: 1rem; font-weight: 600; margin-bottom: 1rem; }
.module-ui .module-filters summary { width: fit-content; cursor: pointer; font-weight: 600; }
.module-ui .form-control,
.module-ui .form-select,
.module-ui .btn { min-height: 2.5rem; }
.module-ui .btn { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; white-space: normal; }
.module-ui .btn-sm { min-height: 2.25rem; }
.module-ui .btn-outline-primary { --bs-btn-color: var(--bs-primary-text-emphasis); }
.module-ui .btn-outline-secondary { --bs-btn-color: var(--bs-secondary-text-emphasis); }
.module-ui .btn-outline-info { --bs-btn-color: var(--bs-info-text-emphasis); }
.module-ui .btn-outline-success { --bs-btn-color: var(--bs-success-text-emphasis); }
.module-ui .btn-outline-danger { --bs-btn-color: var(--bs-danger-text-emphasis); }
.module-ui .module-actions { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 1rem; }
.module-ui .module-actions > form { min-width: 0; max-width: 100%; }
.module-ui .module-actions > form:last-child { flex: 1 1 18rem; }
.module-ui .payment-review-actions { display: grid; gap: 1rem; max-width: 56rem; }
.module-ui .payment-review-approve,
.module-ui .payment-review-reject { min-width: 0; max-width: 100%; }
.module-ui .payment-review-reject { padding-top: 1rem; border-top: 1px solid var(--bs-border-color); }
.module-ui .expense-items-table td { font-size: .925rem; line-height: 1.35; }
.module-ui .expense-item-name { color: var(--bs-emphasis-color); font-weight: 500; }
.module-ui .expense-item-type { color: var(--bs-secondary-color); font-size: .875rem; }
.module-ui .reserve-config-header { background: var(--bs-tertiary-bg); color: var(--bs-emphasis-color); border-bottom-color: var(--bs-border-color); }
.module-ui .reserve-config-header h5 { color: inherit; font-weight: 600; }
.module-ui :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible,
.lr-sidebar :where(a, button):focus-visible,
.lr-topbar :where(a, button):focus-visible,
.module-skip-link:focus-visible {
    outline: 3px solid var(--bs-emphasis-color);
    outline-offset: 3px;
}
.module-ui:focus { outline: 3px solid var(--bs-emphasis-color); outline-offset: -3px; }
.module-ui .module-table-scroll {
    max-width: 100%;
    overflow: auto;
    overscroll-behavior-inline: contain;
    scrollbar-gutter: stable;
    border: 1px solid var(--bs-border-color);
    border-radius: .5rem;
}
.module-ui .module-table-scroll[data-module-sticky] { max-height: 65vh; max-height: 65dvh; }
.module-ui .module-table-scroll[data-module-sticky] > .table > thead > tr > th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
}
.module-ui .module-table-scroll > .table { margin-bottom: 0; }
.module-ui .module-scroll-help { margin: .5rem 0; color: var(--bs-secondary-color); font-size: .875rem; }
.module-ui .module-empty { padding: 2rem 1rem; text-align: center; color: var(--bs-secondary-color); }
.module-ui .module-empty p { margin: 0; }
.module-ui .module-empty strong { display: block; color: var(--bs-body-color); margin-bottom: .5rem; }
.module-ui .module-errors { border: 1px solid var(--bs-danger); }
.module-ui .module-pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1rem; }
.module-ui .module-pagination nav { max-width: 100%; }
.module-ui .module-pagination .pagination { flex-wrap: wrap; gap: .25rem; margin-bottom: 0; }
.module-ui .module-pagination .page-link { min-width: 2.5rem; min-height: 2.5rem; display: inline-flex; align-items: center; justify-content: center; }
.module-ui [aria-current="page"] { font-weight: 700; text-decoration: underline; text-underline-offset: .2em; }
.module-ui .badge.bg-warning { color: var(--bs-black); }
.lr-sidebar-link.active { text-decoration: underline; text-underline-offset: .2em; }
.lr-sidebar-link.active { color: var(--bs-primary-text-emphasis); }
.lr-sidebar :is(a, button) { transition-property: color, background-color, border-color, box-shadow; }
.module-skip-link { position: fixed; top: .5rem; left: .5rem; z-index: 1090; padding: .75rem 1rem; background: var(--bs-body-bg); color: var(--bs-emphasis-color); border: 2px solid currentColor; transform: translateY(-200%); }
.module-skip-link:focus { transform: none; }
.module-sidebar-close { display: none; }
html:not(.module-ui-enhanced) .lr-sidebar .collapse { display: block; }
@media (max-width: 991.98px) {
    .lr-sidebar { height: 100dvh; min-height: 0; }
    .lr-sidebar:not(.show) { visibility: hidden; }
    .module-sidebar-close { display: inline-flex; margin: .75rem; align-self: flex-end; }
    .lr-sidebar :where(a, button), .lr-topbar button { min-height: 44px; min-width: 44px; }
    /* With JS unavailable, navigation stays in the document flow. */
    html:not(.module-ui-enhanced) .lr-shell { flex-direction: column; }
    html:not(.module-ui-enhanced) .lr-sidebar { position: static; transform: none; visibility: visible; width: 100%; height: auto; }
    html:not(.module-ui-enhanced) :is(.lr-sidebar-mobile-btn, .module-sidebar-close) { display: none; }
}
@media (max-width: 575.98px) {
    .module-ui > .container-fluid { padding-inline: 1rem !important; }
    .module-ui :is(.btn, .page-link, .form-control, .form-select, summary) { min-height: 44px; }
    .module-ui :is(.btn, .page-link) { min-width: 44px; }
    .module-ui .module-pagination .page-link { min-height: 44px; min-width: 44px; }
    .module-ui .module-table-scroll td > a:not(.btn) { display: inline-block; padding-block: .75rem; }
    .module-ui .module-filters .col-6 { width: 100%; }
    .module-ui .module-actions { flex-direction: column; }
    .module-ui .module-actions > form:last-child { flex-basis: auto; width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
    html.module-ui-enhanced, .lr-sidebar, .lr-sidebar *, .lr-topbar *, .module-ui * { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
@media print {
    .module-skip-link, .module-sidebar-close, .module-ui .module-scroll-help { display: none !important; }
    .module-ui .module-table-scroll[data-module-sticky] { max-height: none; overflow: visible; }
    .module-ui .module-table-scroll[data-module-sticky] > .table > thead > tr > th { position: static; }
}