/* Shared UI fixes: tables, tabs, toolbars, observation, dark editor. */

.page-wrapper,
.page-content,
.wrapper,
.row > [class*="col-"] {
    min-width: 0;
    max-width: 100%;
}

.table-container,
.table-responsive,
.table-responsive-wrapper,
.wds-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
    min-width: 0;
}

.custom-table tbody td:not(.text-center),
.custom-table tbody td:not(.text-center) .copyable {
    text-align: left;
}

.button-strip {
    scrollbar-width: thin;
}

.button-strip::-webkit-scrollbar {
    display: block !important;
    height: 6px;
}

.button-strip::-webkit-scrollbar-thumb {
    background: rgba(52, 161, 155, 0.45);
    border-radius: 999px;
}

/* List footer: record count left, page numbers center, page size right. */
.table-footer.d-flex {
    justify-content: flex-start;
    align-items: stretch;
}

.table-footer > .list-pagination {
    width: 100%;
    max-width: 100%;
    flex: 1 1 100%;
    min-width: 0;
}

.list-pagination {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center;
    gap: 0.75rem 1rem;
    width: 100%;
    margin: 0.75rem 0;
}

.list-pagination__count {
    justify-self: start;
    min-width: 0;
}

.list-pagination__pages {
    justify-self: center;
}

.list-pagination__pages .pagination {
    margin-bottom: 0;
}

.list-pagination__size {
    justify-self: end;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
    white-space: nowrap;
}

.list-pagination__size .form-control {
    width: auto;
}

@media (max-width: 767.98px) {
    .list-pagination {
        grid-template-columns: 1fr;
        justify-items: center;
    }

    .list-pagination__count,
    .list-pagination__pages,
    .list-pagination__size {
        justify-self: center;
    }
}

.page-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    min-width: 0;
}

.page-toolbar .page-toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    min-width: 0;
    flex: 1 1 auto;
    justify-content: flex-end;
}

@media (min-width: 768px) {
    .page-toolbar,
    .page-toolbar.flex-column,
    .page-toolbar.flex-wrap {
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        align-items: center !important;
    }

    .page-toolbar > form,
    .page-toolbar > form[style] {
        display: inline-flex !important;
        flex: 0 0 auto;
        width: auto !important;
        max-width: none !important;
        margin: 0;
        align-items: center;
    }

    /* Create/action forms follow the filters so the button sits on the far right. */
    .page-toolbar > form:not([data-search-form]):not(.page-filter-bar):not(.list-search-form) {
        order: 2;
    }

    .page-toolbar > .page-filter-bar,
    .page-toolbar > form.page-filter-bar {
        order: 1;
    }

    .page-toolbar > form > .btn {
        width: auto !important;
        white-space: nowrap;
    }

    .page-toolbar .form-select,
    .page-toolbar select.form-select {
        width: auto !important;
        min-width: 10rem;
        max-width: 16rem;
        flex: 0 0 auto;
    }

    .page-filter-bar,
    .table-container form.page-filter-bar,
    .page-filter-bar.flex-wrap,
    .page-filter-bar.d-flex {
        display: flex !important;
        flex-wrap: nowrap !important;
        align-items: center !important;
        width: auto !important;
        max-width: none !important;
        margin-left: auto !important;
        flex: 0 0 auto;
        gap: 0.5rem;
    }

    .page-filter-bar .form-select,
    .page-filter-bar select,
    .page-filter-bar .form-select.form-select-sm {
        width: auto !important;
        min-width: 10rem;
        max-width: 16rem;
        flex: 0 0 auto;
    }

    .page-filter-bar > .btn,
    .page-filter-bar > a.btn {
        flex: 0 0 auto;
        width: auto !important;
        white-space: nowrap;
    }

    .page-toolbar-actions,
    .page-toolbar-actions.flex-wrap,
    .page-toolbar-actions.flex-column,
    .page-toolbar-actions.w-100,
    .table-container .filter {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        align-items: center !important;
        width: auto !important;
        max-width: none !important;
        flex: 1 1 auto;
        justify-content: flex-end;
    }

    .page-toolbar-actions > .w-100,
    .table-container .filter > .w-100 {
        width: auto !important;
        flex: 1 1 20rem;
        max-width: 32rem;
        min-width: 18rem;
    }

    .table-container .list-search-form,
    .page-toolbar-actions .list-search-form,
    .table-container .filter .list-search-form {
        width: auto;
        max-width: 32rem;
        min-width: 18rem;
        flex: 1 1 20rem;
        margin-left: 0;
    }

    .table-container .list-search-form .form-control,
    .page-toolbar-actions .list-search-form .form-control,
    .table-container .filter .list-search-form .form-control {
        min-width: 14rem;
    }

    .page-toolbar-actions > .dropdown,
    .table-container .filter > .dropdown {
        flex: 0 0 auto;
        width: auto;
        align-self: center;
    }

    .page-toolbar-actions > .dropdown .btn,
    .table-container .filter > .dropdown .btn {
        width: auto !important;
    }

    .page-toolbar-actions > form:not([data-search-form]):not(.list-search-form),
    .table-container .filter > form:not([data-search-form]):not(.list-search-form) {
        width: auto;
        flex: 0 0 auto;
    }

    .upd-page .upd-rules-toolbar.page-toolbar {
        flex-direction: column !important;
        align-items: stretch !important;
        flex-wrap: nowrap !important;
        width: 100%;
    }

    .upd-page .upd-rules-toolbar-top {
        width: 100%;
        justify-content: space-between;
        flex-wrap: nowrap;
    }

    .upd-page .upd-rules-toolbar-top .page-toolbar-actions {
        margin-left: auto;
        flex: 0 0 auto;
        width: auto !important;
        justify-content: flex-end;
    }

    .upd-page .upd-rules-filters {
        width: 100%;
        margin-left: 0 !important;
        justify-content: flex-end;
    }

    .page-toolbar-actions > form:not([data-search-form]) > .btn,
    .table-container .filter > form:not([data-search-form]) > .btn {
        width: auto;
    }

    .progress-steps-scroll {
        justify-content: space-between;
        overflow: visible;
    }
}

@media (min-width: 992px) {
    .primary-menu .navbar-nav > .nav-pin-end {
        margin-left: auto !important;
        margin-right: 0 !important;
        flex: 0 0 auto !important;
        order: 1;
    }

    .primary-menu .navbar {
        height: auto;
    }

    .primary-menu .offcanvas-body {
        min-width: 0;
        width: 100%;
    }

    .primary-menu .navbar .navbar-nav {
        flex-wrap: nowrap;
        height: auto !important;
        min-width: 0;
        width: 100%;
    }

    .primary-menu .navbar .navbar-nav > .nav-item {
        flex: 0 0 auto;
    }
}

.nav-overflow > .dropdown-menu {
    max-height: min(70vh, 28rem);
    overflow-y: auto;
}

.obs-table-scroll table,
.obs-table-scroll table.obs-table-fit,
.wds-page .wds-table:not(.wds-table-list) {
    min-width: 0 !important;
}

.obs-toolbar,
.grid-stack-item-content {
    min-width: 0;
}

.obs-toolbar .form-select-sm,
.obs-toolbar .form-control-sm {
    max-width: none !important;
    min-width: 8.5rem;
}

.progress-steps-scroll {
    display: flex;
    gap: 0.75rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 0.35rem;
}

.progress-steps-scroll .progress-step-item {
    flex: 0 0 auto;
    min-width: 4.75rem;
    text-align: center;
}

.progress-steps-scroll .progress-step-item small {
    display: block;
    white-space: nowrap;
}

.api-key-cell,
.api-url-block {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
    max-width: 100%;
}

.api-key-cell code,
.api-url-block code,
.api-url-text {
    min-width: 0;
    flex: 1 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    display: block;
    text-align: left;
}

.api-key-cell button,
.api-url-block button {
    flex: 0 0 auto;
}

.service-details-content p,
.service-details-content,
.contract-prose,
.contract-prose * {
    text-align: left !important;
    text-justify: auto;
    word-spacing: normal !important;
    hyphens: manual;
}

.payment-method .payment-name {
    position: relative;
    z-index: 1;
}

@media (max-width: 767.98px) {
    .page-content.dashboard-page,
    .page-content:has(.header-section) {
        padding-top: 1.25rem;
    }

    .page-content {
        padding-left: 0.75rem !important;
        padding-right: 0.75rem !important;
    }

    .page-content > .row,
    .page-content > div > .row {
        margin-left: 0;
        margin-right: 0;
    }

    .page-content .row > [class*="col-"] {
        padding-left: 0;
        padding-right: 0;
    }

    .table-container {
        margin-left: 0 !important;
        margin-right: 0 !important;
        max-width: 100% !important;
    }

    .table-container > .p-4,
    .table-container > .p-4.pb-0 {
        padding-left: 0.75rem !important;
        padding-right: 0.75rem !important;
    }

    .page-toolbar,
    .table-container .p-4 > .d-flex,
    .table-container .p-4 > .mb-3 > .d-flex.justify-content-between,
    .table-container .p-4 > .mb-3 > .page-toolbar {
        flex-direction: column !important;
        align-items: stretch !important;
        flex-wrap: wrap !important;
        width: 100%;
        max-width: none !important;
    }

    .page-toolbar-actions,
    .table-container .filter {
        display: flex !important;
        flex-direction: row !important;
        align-items: stretch !important;
        flex-wrap: wrap !important;
        width: 100% !important;
        max-width: none !important;
        gap: 0.5rem;
    }

    .page-toolbar-actions > .w-100,
    .table-container .filter > .w-100,
    .page-toolbar-actions > .list-search-form,
    .table-container .filter > .list-search-form,
    .page-toolbar-actions > form[data-search-form],
    .table-container .filter > form[data-search-form] {
        flex: 1 1 100%;
        width: 100% !important;
        max-width: none !important;
        margin-left: 0 !important;
    }

    .table-container .list-search-form .input-group,
    .page-toolbar-actions .list-search-form .input-group {
        flex-wrap: nowrap !important;
        width: 100%;
    }

    .table-container .list-search-form .form-control,
    .page-toolbar-actions .list-search-form .form-control {
        flex: 1 1 auto !important;
        width: auto !important;
        min-width: 0 !important;
    }

    .table-container .list-search-form .btn,
    .table-container .list-search-submit,
    .page-toolbar-actions .list-search-form .btn,
    .page-toolbar-actions .list-search-submit,
    .table-container .input-group > .btn {
        width: auto !important;
        flex: 0 0 auto !important;
        min-width: 2.5rem;
        max-width: none;
    }

    .page-toolbar-actions > .dropdown,
    .table-container .filter > .dropdown {
        flex: 1 1 calc(50% - 0.25rem);
        min-width: 0;
        width: auto;
        align-self: stretch;
    }

    .page-toolbar-actions > .dropdown .btn,
    .table-container .filter > .dropdown .btn {
        width: 100% !important;
    }

    .page-toolbar-actions > form:not([data-search-form]):not(.list-search-form),
    .table-container .filter > form:not([data-search-form]):not(.list-search-form) {
        width: 100%;
        flex: 1 1 100%;
    }

    .page-toolbar-actions > form:not([data-search-form]) > .btn,
    .table-container .filter > form:not([data-search-form]) > .btn {
        width: 100%;
    }

    .page-toolbar > form:not([data-search-form]):not(.page-filter-bar):not(.list-search-form) {
        display: block !important;
        width: 100% !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }

    .page-toolbar > form:not([data-search-form]):not(.page-filter-bar):not(.list-search-form) > .btn {
        width: 100%;
    }

    .page-action-pair {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        align-items: stretch !important;
        width: 100%;
        gap: 0.5rem;
    }

    .page-action-pair > form,
    .page-action-pair > .btn {
        flex: 1 1 0;
        min-width: 0;
        margin: 0 !important;
        width: auto;
    }

    .page-action-pair .btn {
        width: 100%;
        white-space: normal;
    }

    .page-filter-bar,
    .table-container form.page-filter-bar {
        display: flex !important;
        flex-wrap: wrap !important;
        width: 100% !important;
        max-width: none !important;
        margin-left: 0 !important;
        gap: 0.5rem;
    }

    .page-filter-bar .form-select,
    .page-filter-bar select {
        width: 100% !important;
        min-width: 0 !important;
        max-width: none !important;
        flex: 1 1 100%;
    }

    .page-filter-bar > .btn,
    .page-filter-bar > a.btn {
        flex: 1 1 calc(50% - 0.5rem);
        width: auto;
        min-width: 0;
    }

    .cc-bucket-switch {
        display: flex !important;
        flex-wrap: wrap !important;
        width: 100%;
        max-width: 100%;
        overflow: visible;
        border-radius: 12px;
        height: auto;
    }

    .cc-bucket-btn {
        flex: 1 1 calc(50% - 4px);
        white-space: normal !important;
        text-align: center;
        justify-content: center;
        line-height: 1.25;
        min-width: 0;
    }

    .cc-admin-search {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 0.5rem;
        width: 100%;
    }

    .cc-admin-search .form-control,
    .cc-admin-search .cc-date-input,
    .cc-admin-search .btn,
    .cc-admin-search input[name="searchTerm"] {
        width: 100% !important;
        max-width: none !important;
        min-width: 0 !important;
        flex: 0 0 auto !important;
    }

    h5.text-nowrap {
        white-space: normal !important;
    }

    .obs-toolbar {
        flex-wrap: wrap !important;
        width: 100%;
        margin-left: 0 !important;
    }

    .obs-toolbar .form-select-sm,
    .obs-toolbar .obs-topn,
    .obs-toolbar .obs-search,
    .obs-toolbar .form-control-sm,
    .obs-toolbar .btn {
        max-width: none !important;
        flex: 1 1 8rem;
        min-width: 0;
    }

    .card-header .obs-toolbar {
        flex-basis: 100%;
    }

    .grid-stack > .grid-stack-item {
        width: 100% !important;
        left: 0 !important;
        position: relative !important;
        margin-bottom: 0.75rem;
        inset: auto !important;
        transform: none !important;
        height: auto !important;
        min-height: 16rem;
    }

    .grid-stack {
        height: auto !important;
    }

    .grid-stack-item-content .text-muted,
    .grid-stack-item-content p,
    .grid-stack-item-content .small {
        white-space: normal !important;
        word-break: normal;
        overflow-wrap: anywhere;
        max-width: 100%;
    }

    .ws-page .ws-topbar {
        flex-wrap: wrap;
        row-gap: 0.5rem;
    }

    .ws-page .ws-photo-steps {
        margin-top: 0.25rem;
    }

    .button-strip {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        flex-wrap: nowrap !important;
        max-width: 100%;
    }

    .upd-page .upd-rules-toolbar-top {
        flex-direction: column;
        align-items: stretch;
    }

    .upd-page .upd-rules-toolbar-top .page-toolbar-actions,
    .upd-page .upd-rules-toolbar-top .page-toolbar-actions form {
        width: 100%;
    }

    .upd-page .upd-rules-toolbar-top .btn {
        width: 100%;
    }

    .ws-page .table-responsive {
        overflow-x: auto !important;
        max-width: 100%;
    }
}

html.dark-theme .ck.ck-editor__main > .ck-editor__editable,
html.dark-theme .ck-editor__editable,
html[class*="dark-theme"] .ck.ck-editor__main > .ck-editor__editable {
    background: #1e2633 !important;
    color: #e8edf4 !important;
    caret-color: #e8edf4;
}

html.dark-theme .ck.ck-toolbar,
html[class*="dark-theme"] .ck.ck-toolbar {
    background: #232b38 !important;
    border-color: #3a4555 !important;
}

html.dark-theme .ck.ck-button,
html.dark-theme .ck.ck-toolbar .ck-button,
html.dark-theme .ck.ck-dropdown .ck-button {
    color: #e8edf4 !important;
}

html.dark-theme .ck.ck-content,
html.dark-theme .ck-content p,
html.dark-theme .ck-content h1,
html.dark-theme .ck-content h2,
html.dark-theme .ck-content h3,
html.dark-theme .ck-content li {
    color: #e8edf4 !important;
}

html.dark-theme .ck-content code {
    background: #111827 !important;
    color: #f9a8d4 !important;
}

html.dark-theme .definition-form .form-section {
    background: #232b38;
    border-color: #3a4555;
}

html.dark-theme .definition-form .form-section-title,
html.dark-theme .definition-form .form-label {
    color: #e8edf4;
}

html.dark-theme .definition-form .info-text {
    color: #8b95a5;
}

html.dark-theme .definition-form .editor-toggle-btn {
    background: #1e2633;
    border-color: #3a4555;
    color: #e8edf4;
}
