/* ---------------------------------------------------------------------------
   Statistical Business Register modules (loaded after custom.css).
   Colours come from the theme variables so light and dark themes both work.
   --------------------------------------------------------------------------- */

/* "?" help icon next to form labels (initFieldHelp in project.js) */
.app-help {
    display: inline-flex;
    align-items: center;
    margin-left: .25rem;
    color: color-mix(in srgb, var(--app-text-color, var(--bs-body-color)) 55%, transparent);
    cursor: help;
    font-size: 13px;
    line-height: 1;
    vertical-align: middle;
}

.app-help:hover,
.app-help:focus {
    color: var(--app-base-color);
    outline: none;
}

/* administrators: edit button of a field explanation (initRegisterHelp in register.js) */
.app-help-edit {
    display: inline-flex;
    align-items: center;
    margin-left: .2rem;
    color: color-mix(in srgb, var(--app-text-color, var(--bs-body-color)) 40%, transparent);
    cursor: pointer;
    font-size: 12px;
    line-height: 1;
    vertical-align: middle;
}

.app-help-edit:hover,
.app-help-edit:focus {
    color: var(--app-base-color);
    outline: none;
}

.app-help-popover {
    --bs-popover-max-width: 360px;
    --bs-popover-font-size: 12px;
    /* the theme puts .popover at z-index 999, under the dialogs (1055) the help lives in */
    z-index: 1080;
}

/* user access tabs: the permission matrix is a plain <table> styled like the app's
   Tabulator grids (same border, 45px bold header, row lines, padding, hover) */
.permission-matrix {
    max-height: 520px;
    overflow: auto;
    border: 1px solid rgba(34, 36, 38, .15);
    border-radius: 4.5px;
    background-color: #fff;
}

.permission-matrix table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 12px;
    color: #333;
}

.permission-matrix th,
.permission-matrix td {
    padding: 9px;
    vertical-align: middle;
    border-bottom: 1px solid rgba(34, 36, 38, .1);
}

.permission-matrix thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    height: 45px;
    padding: 11px 9px;
    font-weight: 700;
    white-space: nowrap;
    color: rgba(0, 0, 0, .87);
    background-color: #f9fafb;
}

.permission-matrix tbody tr:last-child td {
    border-bottom: none;
}

.permission-matrix tbody tr:not(.permission-group):hover td {
    background-color: #ebebeb;
}

.permission-matrix tr.permission-group td {
    font-weight: 700;
    color: rgba(0, 0, 0, .87);
    background-color: #f3f4f6;
}

.permission-matrix .form-check-input {
    margin: 0;
    cursor: pointer;
}

[data-theme=dark] .permission-matrix {
    border-color: var(--app-base-border-color);
    background-color: var(--app-base-background-color);
}

[data-theme=dark] .permission-matrix table {
    color: var(--app-text-color);
}

[data-theme=dark] .permission-matrix th,
[data-theme=dark] .permission-matrix td {
    border-bottom-color: var(--app-base-border-color);
    border-right: 1px solid var(--app-base-border-color);
}

[data-theme=dark] .permission-matrix th:last-child,
[data-theme=dark] .permission-matrix td:last-child {
    border-right: none;
}

[data-theme=dark] .permission-matrix thead th {
    color: var(--app-text-color);
    background-color: var(--app-table-header-color);
}

[data-theme=dark] .permission-matrix tbody tr:not(.permission-group):hover td {
    background-color: color-mix(in srgb, white 10%, var(--app-base-background-color) 90%);
}

[data-theme=dark] .permission-matrix tr.permission-group td {
    color: var(--app-text-color);
    background-color: color-mix(in srgb, white 5%, var(--app-base-background-color) 95%);
}

/* scrollbar like .tabulator-tableholder in dark-theme.css */
[data-theme=dark] .permission-matrix::-webkit-scrollbar-track {
    background: var(--app-base-background-color);
}

[data-theme=dark] .permission-matrix::-webkit-scrollbar-thumb {
    background: var(--app-base-border-color);
}

[data-theme=dark] .permission-matrix::-webkit-scrollbar-thumb:hover {
    background: var(--app-base-color-highlight);
}

.user-access .access-search {
    max-width: 360px;
}

.access-tree {
    height: 460px;
    overflow: auto;
    background-color: var(--app-base-background-color, var(--bs-body-bg));
}

.access-tree ul.fancytree-container {
    border: none;
    outline: none;
    background-color: transparent;
}

.access-tree span.fancytree-title {
    white-space: normal;
}

/* register forms: section titles, read-only summary cards and warnings */
.app-section-title {
    display: flex;
    align-items: center;
    gap: .4rem;
    margin: .5rem 0 .75rem;
    padding-bottom: .35rem;
    font-size: 13px;
    font-weight: 600;
    border-bottom: 1px solid var(--app-base-border-color, var(--bs-border-color));
}

.app-summary {
    padding: .6rem .8rem;
    border: 1px solid var(--app-base-border-color, var(--bs-border-color));
    border-radius: .5rem;
    background-color: color-mix(in srgb, var(--app-base-color) 4%, transparent);
}

.app-summary .app-summary-label {
    font-size: 11px;
    color: color-mix(in srgb, var(--app-text-color, var(--bs-body-color)) 60%, transparent);
}

.app-summary .app-summary-value {
    font-size: 13px;
    font-weight: 600;
}

.save-warnings ul li + li {
    margin-top: .15rem;
}

.app-badge-status {
    font-size: 11px;
    font-weight: 500;
}

/* grids inside register dialogs */
.app-subgrid {
    min-height: 200px;
}

.app-subgrid-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin-bottom: .5rem;
}

.bootbox .tab-content > .tab-pane {
    min-height: 240px;
}

/* change history list */
.app-history-item {
    padding: .5rem 0;
    border-bottom: 1px dashed var(--app-base-border-color, var(--bs-border-color));
    font-size: 12px;
}

.app-history-item:last-child {
    border-bottom: none;
}

.app-history-item .app-history-change {
    color: color-mix(in srgb, var(--app-text-color, var(--bs-body-color)) 75%, transparent);
}

.app-history-old {
    text-decoration: line-through;
    opacity: .7;
}

/* register dialogs (static/js/register.js) */
.register-dialog .nav-tabs {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
}

.register-dialog .nav-tabs .nav-link {
    white-space: nowrap;
}

.register-dialog .tab-count {
    font-size: 10px;
    font-weight: 500;
}

.reg-field select.is-invalid + .select2 .select2-selection {
    border-color: var(--bs-form-invalid-border-color, #dc3545);
}

.reg-field .form-switch {
    min-height: 31px;
    display: flex;
    align-items: center;
    gap: .35rem;
}

.structure-tree {
    max-height: 540px;
    overflow: auto;
    background-color: var(--app-base-background-color, var(--bs-body-bg));
}

.structure-tree ul.fancytree-container {
    border: none;
    outline: none;
    background-color: transparent;
}

.structure-tree span.fancytree-title {
    white-space: normal;
}

/* file import (register.js initFileImport) */
.file-import .import-progress {
    height: 8px;
}

.file-import .import-preview {
    max-width: 280px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.app-details-table th {
    width: 35%;
    font-weight: 500;
    color: color-mix(in srgb, var(--app-text-color, var(--bs-body-color)) 70%, transparent);
}

/* select2 inside Bootstrap input groups / small forms */
.select2-container .select2-selection--single .select2-selection__rendered {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
