:root {
    --app-font-family: "Segoe UI Variable", "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, "Roboto", "Helvetica Neue", Arial, sans-serif;
    --bs-body-font-family: var(--app-font-family);
    --bs-primary: #2f6fbd;
    --bs-primary-rgb: 47, 111, 189;
    --bs-link-color: #2f6fbd;
    --bs-link-color-rgb: 47, 111, 189;
    --bs-link-hover-color: #255995;
    --bs-link-hover-color-rgb: 37, 89, 149;
    --app-surface: var(--bs-body-bg);
    --app-surface-muted: var(--bs-tertiary-bg);
    --app-surface-raised: var(--bs-body-bg);
    --app-border: var(--bs-border-color);
    --app-table-border: color-mix(in srgb, var(--bs-border-color) 72%, transparent);
    --app-table-header-bg: color-mix(in srgb, var(--bs-tertiary-bg) 76%, var(--bs-body-bg) 24%);
    --app-table-hover-bg: color-mix(in srgb, var(--bs-primary) 4%, var(--bs-body-bg) 96%);
    --app-radius: .65rem;
    --app-radius-sm: .45rem;
    --app-shadow-sm: 0 1px 8px rgba(15, 23, 42, .05);
    --app-shadow-md: 0 12px 32px rgba(15, 23, 42, .12);
    --app-focus-ring: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .18);
    --app-button-gap: .45rem;
    --app-primary-bg-subtle: rgba(var(--bs-primary-rgb), .04);
    --app-primary-bg-soft: rgba(var(--bs-primary-rgb), .08);
    --app-primary-bg-hover: rgba(var(--bs-primary-rgb), .11);
    --app-primary-bg-active: rgba(var(--bs-primary-rgb), .16);
    --app-primary-border-soft: rgba(var(--bs-primary-rgb), .45);
    --app-primary-border: rgba(var(--bs-primary-rgb), .55);
    --app-success-bg-soft: rgba(var(--bs-success-rgb), .08);
    --app-success-border-soft: rgba(var(--bs-success-rgb), .24);
    --app-warning-bg-soft: rgba(var(--bs-warning-rgb), .12);
    --app-warning-border-soft: rgba(var(--bs-warning-rgb), .28);
    --app-danger-bg-soft: rgba(var(--bs-danger-rgb), .1);
    --app-danger-border-soft: rgba(var(--bs-danger-rgb), .28);
}

[data-bs-theme="dark"] {
    --bs-primary: #6ea8fe;
    --bs-primary-rgb: 110, 168, 254;
    --bs-link-color: #8bb9fe;
    --bs-link-color-rgb: 139, 185, 254;
    --bs-link-hover-color: #a8caff;
    --bs-link-hover-color-rgb: 168, 202, 255;
    --app-surface: #171b20;
    --app-surface-muted: #1d232a;
    --app-surface-raised: #20262d;
    --app-border: rgba(148, 163, 184, .22);
    --app-table-border: rgba(148, 163, 184, .18);
    --app-table-header-bg: #1b2027;
    --app-table-hover-bg: color-mix(in srgb, var(--bs-primary) 11%, var(--app-surface) 89%);
    --app-shadow-sm: 0 1px 8px rgba(0, 0, 0, .28);
    --app-shadow-md: 0 14px 34px rgba(0, 0, 0, .38);
    --app-focus-ring: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .24);
    --app-primary-bg-soft: rgba(var(--bs-primary-rgb), .13);
    --app-primary-bg-hover: rgba(var(--bs-primary-rgb), .15);
    --app-primary-bg-active: rgba(var(--bs-primary-rgb), .2);
    --app-primary-border-soft: rgba(var(--bs-primary-rgb), .5);
    --app-primary-border: rgba(var(--bs-primary-rgb), .6);
    --app-success-bg-soft: rgba(var(--bs-success-rgb), .13);
    --app-warning-bg-soft: rgba(var(--bs-warning-rgb), .16);
    --app-danger-bg-soft: rgba(var(--bs-danger-rgb), .14);
}

html, body {
    font-family: var(--app-font-family);
    font-size: 14px;
    height: 100vh;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

body {
    overflow-y: hidden;
    overflow-x: hidden;
    background: var(--bs-body-bg);
}

button,
input,
select,
textarea {
    font-family: inherit;
}

.table > :not(caption) > * > * {
    padding: .42rem .65rem;
    border-bottom-width: 1px;
}

.table {
    --bs-table-bg: var(--app-surface);
    --bs-table-color: var(--bs-body-color);
    --bs-table-border-color: var(--app-table-border);
    --bs-table-striped-bg: color-mix(in srgb, var(--bs-primary) 2.5%, var(--bs-body-bg) 97.5%);
    --bs-table-hover-bg: var(--app-table-hover-bg);
    margin-bottom: 0;
    vertical-align: middle;
}

.table thead th {
    height: 46px;
    color: var(--bs-secondary-color);
    background: var(--app-table-header-bg);
    border-bottom: 1px solid var(--app-table-border);
    font-size: .8rem;
    font-weight: 650;
    vertical-align: middle;
}

.table thead th:has(.filter-dropdown-menu.show) {
    z-index: 40;
}

.table thead th.sticky-first-column:has(.filter-dropdown-menu.show),
.table thead th.sticky-date-column:has(.filter-dropdown-menu.show),
.table thead th.sticky-last-column:has(.filter-dropdown-menu.show) {
    z-index: 50;
}

.table .filter-dropdown:has(.filter-dropdown-menu.show) {
    z-index: 60;
}

.table .filter-dropdown-menu {
    z-index: 1080;
    min-width: max-content;
    max-width: min(28rem, calc(100vw - 2rem));
}

.table tbody td,
.table tbody th {
    border-color: var(--app-table-border);
}

.table tbody tr {
    transition: background-color .12s ease;
}

.table tbody tr.border-top {
    border-top-color: var(--app-table-border) !important;
}

.table.table-borderless > :not(caption) > * > * {
    border-bottom-width: 1px;
}

.table.table-borderless tbody tr:last-child > * {
    border-bottom-width: 0;
}

.table-hover > tbody > tr:hover > * {
    color: var(--bs-body-color);
}

.table th.sticky-first-column,
.table th.sticky-date-column,
.table th.sticky-last-column {
    background: var(--app-table-header-bg);
}

.table td.sticky-first-column,
.table td.sticky-date-column,
.table td.sticky-last-column {
    background: var(--app-surface);
}

.table-hover > tbody > tr:hover > td.sticky-first-column,
.table-hover > tbody > tr:hover > td.sticky-date-column,
.table-hover > tbody > tr:hover > td.sticky-last-column {
    background: var(--bs-table-hover-bg);
}

.table td.sticky-last-column,
.table th.sticky-last-column {
    box-shadow: -8px 0 14px -14px rgba(15, 23, 42, .42);
}

.table td.sticky-first-column,
.table th.sticky-first-column,
.table td.sticky-date-column,
.table th.sticky-date-column {
    box-shadow: 8px 0 14px -14px rgba(15, 23, 42, .42);
}

[data-bs-theme="dark"] .table td.sticky-last-column,
[data-bs-theme="dark"] .table th.sticky-last-column {
    box-shadow: -10px 0 16px -14px rgba(0, 0, 0, .9);
}

[data-bs-theme="dark"] .table td.sticky-first-column,
[data-bs-theme="dark"] .table th.sticky-first-column,
[data-bs-theme="dark"] .table td.sticky-date-column,
[data-bs-theme="dark"] .table th.sticky-date-column {
    box-shadow: 10px 0 16px -14px rgba(0, 0, 0, .9);
}

.modal-content,
.dropdown-menu {
    border-color: var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

[data-bs-theme="dark"] .modal-content,
[data-bs-theme="dark"] .dropdown-menu {
    border-color: var(--app-border);
    background: var(--app-surface-raised);
}

.modal-content {
    overflow: hidden;
    box-shadow: var(--app-shadow-md);
}

.modal-dialog {
    --bs-modal-border-radius: var(--app-radius);
    --bs-modal-inner-border-radius: calc(var(--app-radius) - 1px);
}

.modal-header {
    align-items: center;
    gap: .75rem;
    min-height: 3.25rem;
    padding: .78rem 1rem;
}

.modal-title {
    color: var(--bs-emphasis-color);
    font-size: 1.12rem;
    font-weight: 650;
    line-height: 1.25;
}

.modal-header .btn-close {
    width: .78rem;
    height: .78rem;
    margin: 0 0 0 auto;
    padding: .58rem;
    border-radius: 999px;
    opacity: .62;
}

.modal-header .btn-close:hover,
.modal-header .btn-close:focus {
    background-color: var(--app-primary-bg-soft);
    opacity: .9;
    box-shadow: none;
}

.modal-body {
    padding: 1rem 1rem .9rem;
}

.modal-body p {
    margin-bottom: .65rem;
    color: var(--bs-body-color);
    line-height: 1.45;
}

.modal-body p:last-child {
    margin-bottom: 0;
}

.modal-body form > .mb-3,
.modal-body form > div > .mb-3,
.modal-body .form-floating,
.modal-body .mb-3 {
    margin-bottom: .75rem !important;
}

.modal-body .mt-3 {
    margin-top: 0 !important;
}

.modal-body .form-label {
    margin-bottom: .3rem;
    color: var(--bs-secondary-color);
    font-size: .82rem;
    font-weight: 650;
}

.modal-body .form-control,
.modal-body .form-select {
    min-height: 2.35rem;
}

.modal-body textarea.form-control {
    min-height: 8rem;
}

.modal-body .row {
    --bs-gutter-x: .85rem;
    --bs-gutter-y: .85rem;
    row-gap: .75rem;
}

.modal-body > .row {
    --bs-gutter-x: 0;
    margin-right: 0;
    margin-left: 0;
}

.modal-body > .row > * {
    padding-right: 0;
    padding-left: 0;
}

.modal-body .form-floating > label.form-label {
    color: var(--bs-secondary-color);
    font-size: 1rem;
    font-weight: 400;
}

.modal-body form > .d-flex.justify-content-end {
    align-items: center;
    gap: var(--app-button-gap);
    margin-top: 1rem !important;
    padding-top: .85rem;
}

.modal-body form > .d-flex.justify-content-end .btn {
    min-width: 6.25rem;
    min-height: 2.35rem;
}

.modal-body .d-flex.form-floating {
    align-items: stretch;
}

.modal-body .floating-action-field {
    margin-bottom: .2rem !important;
}

.modal-body .d-flex.form-floating .btn {
    flex: 0 0 auto;
    min-width: 2.45rem;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.modal-body .floating-action-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.35rem;
    padding-inline: .7rem;
    color: var(--app-primary);
    background: var(--app-surface);
    border-color: var(--app-border);
}

.modal-body .floating-action-button:hover,
.modal-body .floating-action-button:focus {
    color: var(--app-primary);
    background: var(--app-surface-muted);
    border-color: var(--app-primary-border);
}

.modal-body .d-flex.form-floating .form-control {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.modal-body .list-group {
    gap: .35rem;
}

.modal-body .list-group-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .65rem;
    padding: .5rem .65rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-sm);
    background: var(--app-surface);
}

.modal-footer {
    justify-content: flex-end;
    padding: .72rem 1rem .95rem;
}

.modal-footer .btn {
    min-width: 6.25rem;
    min-height: 2.35rem;
}

.modal-footer-busy {
    margin-right: auto;
}

.empty-state {
    display: flex;
    align-items: center;
    gap: .65rem;
    min-height: 3.25rem;
    margin: .75rem;
    padding: .85rem 1rem;
    border: 1px dashed var(--app-border);
    border-radius: var(--app-radius-sm);
    color: var(--bs-secondary-color);
    font-size: .92rem;
    background: color-mix(in srgb, var(--app-surface-muted) 72%, transparent);
}

.empty-state .bi {
    color: rgba(var(--bs-primary-rgb), .68);
    font-size: 1.15rem;
}

.empty-state-title {
    color: var(--bs-emphasis-color);
    font-weight: 650;
}

.empty-state-text {
    display: flex;
    flex-direction: column;
    gap: .1rem;
}

.app-busy {
    display: inline-flex;
    flex: 0 0 auto;
    align-self: center;
    align-items: center;
    justify-content: flex-start;
    gap: .5rem;
    min-width: 2rem;
    min-height: calc(1.5em + .5rem + 2px);
    max-width: 18rem;
    margin: .75rem;
    padding: .25rem .65rem;
    color: var(--bs-primary);
    background: var(--app-primary-bg-soft);
    border: 1px solid rgba(var(--bs-primary-rgb), .28);
    border-radius: .42rem;
    box-shadow: none;
    white-space: nowrap;
}

.app-busy.is-hidden {
    display: none;
}

.app-busy .spinner-border {
    flex: 0 0 auto;
    width: .95rem;
    height: .95rem;
    border-width: .14rem;
}

.app-busy-text {
    overflow: hidden;
    color: var(--bs-emphasis-color);
    font-size: .88rem;
    font-weight: 550;
    text-overflow: ellipsis;
}

.time-recordings-progress {
    position: absolute;
    left: calc(100% + .75rem);
    top: 50%;
    transform: translateY(-50%);
    height: calc(1.5em + .5rem + 2px);
    width: 15rem;
    margin: 0;
}

.time-recordings-progress.is-hidden {
    display: none;
}

.content-headline .headline-primary-actions:has(.time-recordings-progress),
.content-headline .justify-content-start.align-items-center:has(.time-recordings-progress) {
    position: relative;
    align-items: center !important;
}

.app-toasts {
    z-index: 1090;
}

.app-toasts .toast {
    min-width: min(24rem, calc(100vw - 2rem));
    overflow: hidden;
    border: 1px solid rgba(var(--bs-primary-rgb), .18);
    border-left: .28rem solid rgba(var(--bs-primary-rgb), .65);
    border-radius: var(--app-radius);
    color: var(--bs-body-color);
    background: color-mix(in srgb, var(--app-surface-raised) 94%, var(--bs-primary) 6%);
    box-shadow: var(--app-shadow-md);
    backdrop-filter: blur(10px);
}

.app-toasts .toast + .toast {
    margin-top: .55rem;
}

.app-toasts .toast-header {
    gap: .45rem;
    min-height: 2.55rem;
    padding: .55rem .75rem .25rem .75rem;
    border-bottom: 0;
    color: var(--bs-emphasis-color);
    background: transparent;
    font-size: .88rem;
    font-weight: 700;
}

.app-toasts .toast-body {
    padding: .2rem .75rem .75rem .75rem;
    color: var(--bs-secondary-color);
    font-size: .86rem;
    line-height: 1.35;
}

.app-toasts .btn-close {
    width: .7rem;
    height: .7rem;
    margin-left: auto;
    padding: .55rem;
    border-radius: 999px;
    opacity: .55;
}

.app-toasts .btn-close:hover,
.app-toasts .btn-close:focus {
    background-color: var(--app-primary-bg-soft);
    opacity: .85;
    box-shadow: none;
}

.app-toasts .toast.text-bg-success,
.app-toasts .toast.bg-success {
    border-left-color: rgba(var(--bs-success-rgb), .72);
    background: color-mix(in srgb, var(--app-surface-raised) 92%, var(--app-success-bg-soft) 8%);
}

.app-toasts .toast.text-bg-warning,
.app-toasts .toast.bg-warning {
    border-left-color: rgba(var(--bs-warning-rgb), .78);
    background: color-mix(in srgb, var(--app-surface-raised) 90%, var(--app-warning-bg-soft) 10%);
}

.app-toasts .toast.text-bg-danger,
.app-toasts .toast.bg-danger {
    border-left-color: rgba(var(--bs-danger-rgb), .78);
    background: color-mix(in srgb, var(--app-surface-raised) 91%, var(--app-danger-bg-soft) 9%);
}

.app-toasts .toast.text-bg-info,
.app-toasts .toast.bg-info {
    border-left-color: rgba(var(--bs-info-rgb), .72);
    background: color-mix(in srgb, var(--app-surface-raised) 91%, var(--bs-info) 9%);
}

[data-bs-theme="dark"] .app-toasts .toast {
    border-color: rgba(var(--bs-primary-rgb), .2);
    background: color-mix(in srgb, var(--app-surface-raised) 92%, var(--bs-primary) 8%);
    backdrop-filter: blur(12px);
}

.card {
    --bs-card-border-radius: .35rem;
    --bs-card-inner-border-radius: calc(.35rem - 1px);
    border-color: var(--app-border);
    border-radius: var(--bs-card-border-radius) !important;
    background: var(--app-surface-raised);
    box-shadow: none;
    overflow: hidden;
}

.card-header,
.modal-header {
    border-color: var(--app-border);
    background: var(--app-surface-muted);
}

.card-header {
    border-bottom: unset;
}

.modal-footer {
    border-top: none;
    border-color: transparent;
    background: none;
    gap: var(--app-button-gap);
}

.modal-footer > * {
    margin: 0;
}

.card-header {
    display: flex;
    align-items: center;
    gap: var(--app-button-gap);
    flex-wrap: wrap;
    border-radius: var(--bs-card-inner-border-radius) !important;
}

.card:has(> .collapse.show) > .card-header,
.card:has(> .collapsing) > .card-header {
    border-bottom-right-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
}

.card > .card-body:last-child,
.card > .collapse:last-child,
.card > .collapsing:last-child,
.card > .collapse:last-child > .card-body:last-child,
.card > .collapsing:last-child > .card-body:last-child {
    border-bottom-right-radius: var(--bs-card-inner-border-radius);
    border-bottom-left-radius: var(--bs-card-inner-border-radius);
    overflow: hidden;
}

.card-title,
.modal-title {
    color: var(--bs-emphasis-color);
    font-weight: 550;
}

.btn {
    border-radius: var(--app-radius-sm);
    font-weight: 500;
    transition: color .15s ease, background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}

.card-header .btn {
    font-weight: inherit;
}

.card-header > .text-nowrap {
    display: inline-flex;
    align-items: center;
    gap: var(--app-button-gap);
}

.card-header > .btn + .btn,
.card-header > .btn + .dropdown,
.card-header > .dropdown + .btn {
    margin-left: 0;
}

.card-header > .btn:first-of-type {
    margin-right: 0;
}

.card-header .card-title {
    color: var(--bs-emphasis-color);
    font-size: .98rem !important;
    font-weight: 520;
    line-height: 1.25;
}

.btn-sm {
    border-radius: .42rem;
}

.btn .bi {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.1rem;
    color: var(--bs-primary);
    font-size: 1.05rem;
    line-height: 1;
    vertical-align: middle;
}

.btn:has(> .bi:only-child) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-sm:has(> .bi:only-child) {
    width: 2.15rem;
    height: 2.15rem;
    padding: 0;
}

.btn-sm.dropdown-toggle:has(> .bi:only-child) {
    width: 3rem;
    padding: 0 .45rem;
    gap: .2rem;
}

.btn-sm.dropdown-toggle:has(> .bi:only-child)::after {
    margin-left: 0;
}

.filter-reset-icon {
    position: relative;
}

.icon-strikethrough {
    position: relative;
}

.filter-reset-icon::after,
.icon-strikethrough::after {
    content: "";
    position: absolute;
    width: 1.55rem;
    height: .75px;
    border-radius: 999px;
    background: currentColor;
    transform: rotate(-42deg);
}

.btn-primary .bi,
.btn-secondary .bi {
    color: currentColor;
}

.btn:disabled .bi,
.btn.disabled .bi {
    opacity: .5;
}

td .btn + .btn,
.sticky-last-column .btn + .btn {
    margin-left: var(--app-button-gap);
}

.btn-outline-light.text-dark-emphasis,
.btn-outline-light {
    color: var(--bs-emphasis-color) !important;
    border-color: var(--app-border);
    background: var(--app-surface);
}

.btn img {
    opacity: .88;
    transition: opacity .15s ease, filter .15s ease;
}

.btn-outline-light.text-dark-emphasis:hover,
.btn-outline-light:hover,
.btn-outline-light:focus {
    color: var(--bs-primary) !important;
    border-color: var(--app-primary-border-soft);
    background: var(--app-primary-bg-soft);
}

.btn:hover img,
.btn:focus img {
    opacity: 1;
}

.btn:disabled img,
.btn.disabled img {
    opacity: .38;
}

[data-bs-theme="dark"] .btn img {
    filter: brightness(1.35) saturate(.85);
}

[data-bs-theme="dark"] .btn-outline-light.text-dark-emphasis,
[data-bs-theme="dark"] .btn-outline-light {
    color: var(--bs-body-color) !important;
    border-color: var(--app-border);
    background: color-mix(in srgb, var(--app-surface-raised) 72%, var(--bs-body-bg) 28%);
}

[data-bs-theme="dark"] .btn-outline-light.text-dark-emphasis:hover,
[data-bs-theme="dark"] .btn-outline-light:hover,
[data-bs-theme="dark"] .btn-outline-light:focus {
    color: var(--bs-primary) !important;
    border-color: var(--app-primary-border-soft);
    background: var(--app-primary-bg-soft);
}

.form-control,
.form-select,
.form-check-input {
    border-color: var(--app-border);
    transition: color .15s ease, background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}

.form-control,
.form-select {
    border-radius: var(--app-radius-sm);
    background-color: var(--app-surface);
    min-height: 2.2rem;
    box-shadow: inset 0 1px 1px rgba(15, 23, 42, .025);
}

.form-control:hover,
.form-select:hover {
    border-color: var(--app-primary-border-soft);
    background-color: rgba(var(--bs-primary-rgb), .015);
}

[data-bs-theme="dark"] .form-control,
[data-bs-theme="dark"] .form-select {
    background-color: color-mix(in srgb, var(--app-surface) 78%, var(--bs-body-bg) 22%);
    border-color: var(--app-border);
}

[data-bs-theme="dark"] .form-control:hover,
[data-bs-theme="dark"] .form-select:hover {
    background-color: color-mix(in srgb, var(--app-surface-raised) 84%, var(--bs-primary) 16%);
    border-color: rgba(var(--bs-primary-rgb), .42);
}

.form-control:disabled,
.form-select:disabled,
.form-control[readonly] {
    color: var(--bs-secondary-color);
    background-color: var(--app-surface-muted);
    border-color: var(--app-border);
    opacity: .8;
}

.form-check {
    min-height: 1.45rem;
}

.form-check-input {
    width: 1em;
    height: 1em;
    margin-top: .25em;
    background-color: var(--app-surface);
    border: 1px solid var(--bs-secondary-color);
    box-shadow: none;
    cursor: pointer;
}

.form-check-input:hover {
    border-color: var(--app-primary-border-soft);
    background-color: var(--app-primary-bg-subtle);
}

.form-check-input:checked {
    background-color: color-mix(in srgb, var(--bs-primary) 32%, transparent);
    border-color: var(--app-primary-border);
    --bs-form-check-bg-image: url("/icons/form-check-mark.svg");
    box-shadow: none;
}

[data-bs-theme="dark"] .form-check-input {
    background-color: color-mix(in srgb, var(--app-surface) 86%, var(--bs-body-bg) 14%);
    border-color: rgba(203, 213, 225, .58);
}

[data-bs-theme="dark"] .form-check-input:checked {
    background-color: color-mix(in srgb, var(--bs-primary) 34%, transparent);
    border-color: var(--app-primary-border);
}

.form-check-input:disabled {
    background-color: var(--app-surface-muted);
    border-color: var(--app-border);
    opacity: .6;
}

.form-check-input:checked:disabled {
    background-color: color-mix(in srgb, var(--bs-primary) 22%, var(--app-surface-muted));
    border-color: var(--app-primary-border-soft);
    opacity: 1;
}

[data-bs-theme="dark"] .form-check-input:checked:disabled {
    background-color: color-mix(in srgb, var(--bs-primary) 32%, var(--app-surface));
    border-color: rgba(var(--bs-primary-rgb), .5);
}

.form-check-label {
    color: var(--bs-body-color);
    padding-left: .15rem;
    user-select: none;
}

.form-switch {
    display: flex;
    align-items: center;
    gap: .32rem;
    min-height: 2.2rem;
    padding-left: 0;
}

.form-switch .form-check-input {
    width: 2rem;
    height: 1.05rem;
    margin-top: 0;
    margin-left: 0;
    background-color: var(--app-surface-muted);
    border-color: rgba(var(--bs-primary-rgb), .26);
    background-position: left center;
}

.form-switch .form-check-label {
    padding-left: .25rem;
    line-height: 1.2;
}

.form-switch .form-check-input:hover {
    border-color: rgba(var(--bs-primary-rgb), .44);
    background-color: rgba(var(--bs-primary-rgb), .055);
}

.form-switch .form-check-input:checked {
    background-color: rgba(var(--bs-primary-rgb), .18);
    border-color: var(--bs-primary);
}

.dropdown-item {
    border-radius: .4rem;
}

.dropdown-item:hover,
.dropdown-item:focus {
    color: var(--bs-primary);
    background: var(--app-primary-bg-soft);
}

[data-bs-theme="dark"] .dropdown-item {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .dropdown-item:hover,
[data-bs-theme="dark"] .dropdown-item:focus {
    color: var(--bs-primary);
    background: var(--app-primary-bg-soft);
}

.reconnect-modal > div {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1000;
    overflow: hidden;
    background-color: var(--app-surface);
    opacity: 0.8;
    text-align: center;
    font-weight: bold;
}

.components-reconnect-hide > div {
    display: none;
}

.components-reconnect-show > div {
    display: none;
}

.components-reconnect-show > .show {
    display: block;
}

.components-reconnect-failed > div {
    display: none;
}

.components-reconnect-failed > .failed {
    display: block;
}

.components-reconnect-rejected > div {
    display: none;
}

.components-reconnect-rejected > .rejected {
    display: block;
}


@media (max-width: 640.98px) {
    html, body {
        font-family: var(--app-font-family);
        height: 100vh;
    }

    .content-height-scroll {
        height: calc(100dvh - 180px);
        min-height: 0;
        padding-bottom: 100px;
    }

    .table-height-scroll {
        height: calc(100dvh - 180px);
        min-height: 0;
        margin-bottom: 0;
    }

    .table-height-scroll > .table {
        min-width: 38rem;
    }

    .table > :not(caption) > * > * {
        padding: .34rem .5rem;
    }

    .table {
        font-size: .86rem;
    }

    .table thead th {
        height: 42px;
        white-space: nowrap;
    }

    .table .dropdown-menu {
        max-width: calc(100vw - 2rem);
        max-height: calc(100dvh - 12rem);
        overflow: auto;
    }

    .table .filter-dropdown-menu {
        width: max-content;
        min-width: min(18rem, calc(100vw - 2rem));
    }

    .text-small-responsive {
        font-size: .82rem;
    }

    .mobile-hidden {
        display: none !important;
    }

}

@media (min-width: 641px) {

    .content-height-scroll {
        height: calc(100dvh - 208px);
        min-height: 0;
    }

    .table-height-scroll {
        height: calc(100dvh - 218px);
        min-height: 0;
    }

    .desktop-hidden {
        display: none !important;
    }

}


thead tr:nth-child(1) th {
    position: sticky;
    top: 0px;
}

.sticky-date-column {
    left: 54px;
    position: sticky;
}

.sticky-first-column {
    left: 0px;
    position: sticky;
}

.sticky-last-column {
    right: 0px;
    position: sticky;
}

th.sticky-date-column {
    opacity: 1;
    z-index: 1;
}

th.sticky-last-column {
    opacity: 1;
    z-index: 1;
}

th.sticky-first-column {
    opacity: 1;
    z-index: 1;
}

.content-headline {
    display: flex;
    flex-direction: column;
    gap: .65rem;
    height: 100px;
    padding: .1rem .15rem 0;
}

.content-headline > .d-flex {
    align-items: center;
    gap: .75rem;
    min-width: 0;
}

.headline-main,
.headline-primary-row {
    display: flex;
    align-items: center;
    min-width: 0;
}

.headline-main {
    justify-content: space-between;
    gap: .75rem;
}

.headline-main > .page-heading,
.headline-main > .page-heading-wrapper {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
}

.headline-primary-row {
    justify-content: space-between;
    align-items: flex-start;
    gap: var(--app-button-gap);
}

.headline-actions,
.headline-primary-actions {
    display: flex;
    align-items: center;
    gap: var(--app-button-gap) !important;
    min-width: 0;
}

.headline-actions {
    justify-content: flex-end;
    flex: 0 0 auto;
    flex-wrap: nowrap;
    white-space: nowrap;
}

.headline-primary-actions {
    justify-content: flex-start;
    flex-wrap: wrap;
}

.headline-meta {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    gap: .2rem;
    max-width: min(18rem, 34vw);
    min-width: 0;
    margin-left: auto !important;
    margin-right: 0 !important;
    color: var(--bs-secondary-color);
    font-size: .92rem;
    overflow: hidden;
}

.headline-meta > * {
    overflow: hidden;
    text-overflow: ellipsis;
}

.content-headline > .d-flex:first-child {
    min-height: 2.4rem;
}

.content-headline > .d-flex.justify-content-between {
    justify-content: space-between;
}

.content-headline .justify-content-end.align-items-center,
.content-headline .justify-content-start.align-items-center,
.content-headline .d-flex.gap-2,
.content-headline .headline-actions,
.content-headline .headline-primary-actions,
.content-headline .import-action-buttons {
    display: flex;
    align-items: center;
    gap: var(--app-button-gap) !important;
    flex-wrap: wrap;
    min-width: 0;
}

.content-headline .justify-content-start.align-items-center {
    justify-content: flex-start;
}

.content-headline .justify-content-end.align-items-center {
    justify-content: flex-end;
}

.content-headline .headline-actions {
    justify-content: flex-end;
    flex-wrap: nowrap;
    white-space: nowrap;
}

.content-headline .headline-primary-actions {
    justify-content: flex-start;
}

.content-headline .btn-group {
    display: inline-flex;
    align-items: center;
    margin: 0 !important;
}

.content-headline .btn-group > .btn,
.content-headline .btn-group > .dropdown-toggle {
    margin: 0 !important;
}

.content-headline .btn.ms-1,
.content-headline .btn.me-2,
.content-headline .btn-group.ms-2,
.content-headline .form-check.me-2,
.content-headline .form-switch.me-2 {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

.content-headline .form-switch {
    min-height: 2.15rem;
}

.content-headline .text-end.text-nowrap,
.content-headline .text-nowrap.mobile-hidden {
    color: var(--bs-secondary-color);
    font-size: .92rem;
}

.content-headline .d-flex.flex-column {
    gap: .2rem;
    margin-left: auto !important;
    margin-right: 0 !important;
}

.content-headline .d-flex.flex-column .mt-2 {
    display: none;
}

.headline-action {
    display: inline-flex;
    align-items: center;
    align-self: flex-start;
    width: auto;
    gap: .25rem;
    padding: .34rem .54rem;
    font-size: .9rem;
    line-height: 1.15;
    font-weight: 600;
}

.headline-action .bi {
    min-width: .95rem;
    font-size: .95rem;
}

.headline-action.btn-outline-primary {
    background: var(--app-primary-bg-subtle);
}

[data-bs-theme="dark"] .headline-action.btn-outline-primary {
    background: var(--app-primary-bg-soft);
}

.headline-action.btn-outline-primary:hover,
.headline-action.btn-outline-primary:focus {
    color: var(--bs-primary);
    border-color: var(--app-primary-border);
    background: var(--app-primary-bg-hover);
}

.headline-action.btn-outline-secondary:hover,
.headline-action.btn-outline-secondary:focus {
    color: var(--bs-primary);
    border-color: var(--app-primary-border-soft);
    background: var(--app-primary-bg-soft);
}

@media (max-width: 640.98px) {
    .content-headline .mobile-hidden {
        display: none !important;
    }

    .content-headline .headline-main,
    .content-headline > .d-flex:first-child {
        flex-wrap: nowrap;
    }

    .content-headline .page-heading {
        flex: 1 1 auto;
        width: auto !important;
        min-width: 0;
    }

    .content-headline .justify-content-end.align-items-center,
    .content-headline .headline-actions {
        flex: 0 0 auto;
        flex-wrap: nowrap;
        white-space: nowrap;
    }

    .content-headline {
        height: auto;
        min-height: 5.75rem;
        gap: .5rem;
    }

    .headline-primary-row {
        align-items: flex-start;
        min-width: 0;
        margin-bottom: .65rem;
    }

    .content-headline .headline-primary-actions {
        width: 100%;
        flex: 1 1 auto;
        flex-wrap: wrap !important;
        white-space: nowrap;
        overflow: visible;
        max-width: 100%;
        gap: .35rem;
        padding-bottom: .15rem;
    }

    .content-headline .headline-primary-actions .time-recordings-progress {
        align-self: flex-start;
        position: absolute;
        top: 0;
        left: auto;
        right: -.47rem;
        justify-content: center;
        align-items: center;
        gap: 0;
        box-sizing: border-box;
        width: 2.25rem;
        height: 2.25rem;
        max-width: none;
        min-width: 2.25rem;
        min-height: 2.25rem;
        margin: 0;
        padding: 0;
        transform: none;
        pointer-events: none;
        z-index: 2;
    }

    .content-headline .headline-primary-actions .time-recordings-progress .time-recordings-progress-text {
        display: none;
    }

    .content-headline .headline-primary-actions .time-recordings-progress .spinner-border {
        margin: 0;
    }

    .content-headline .headline-primary-actions > .btn,
    .content-headline .headline-primary-actions > .dropdown,
    .content-headline .headline-primary-actions > .btn-group {
        flex: 0 0 auto;
    }

    .headline-action {
        max-width: 100%;
    }

    .content-headline .headline-primary-actions .headline-action {
        justify-content: center;
        min-width: 2.25rem;
        padding-left: .5rem;
        padding-right: .5rem;
        gap: 0;
    }

    .content-headline .headline-primary-actions .headline-action span {
        display: none;
    }

    .content-headline .headline-primary-actions .headline-action .bi {
        margin-right: 0 !important;
    }

    .content-headline .headline-primary-actions .dropdown-toggle.headline-action::after {
        margin-left: .3rem;
    }
}

.headline-action:hover .bi,
.headline-action:focus .bi {
    color: currentColor;
}

.import-workflow {
    display: grid;
    grid-template-columns: minmax(27rem, 1.25fr) minmax(13rem, .65fr) minmax(22rem, 1fr);
    gap: .75rem;
    align-items: stretch;
    min-width: 64rem;
}

.import-headline {
    height: auto;
    min-height: 0;
    margin-bottom: 1rem;
    overflow-x: auto;
    overflow-y: hidden;
}

.import-page-heading {
    width: min(100%, 50rem);
}

.import-status-overview {
    display: grid;
    grid-template-columns: repeat(4, minmax(12rem, 1fr));
    gap: .35rem;
    min-width: 64rem;
    margin-bottom: .6rem;
}

.import-status-overview-item {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .55rem;
    min-width: 0;
    padding: .38rem .65rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-sm);
    background: var(--app-surface-muted);
    color: var(--bs-secondary-color);
    font-size: .82rem;
    font-weight: 650;
    user-select: none;
}

.import-status-overview-item.is-complete {
    border-color: var(--app-success-border-soft);
    background: var(--app-success-bg-soft);
    color: var(--bs-body-color);
}

.import-status-overview-icon {
    flex: 0 0 auto;
    color: var(--bs-secondary-color);
    font-size: .95rem;
}

.import-status-overview-item.is-complete .import-status-overview-icon {
    color: var(--bs-success-text-emphasis);
}

[data-bs-theme="dark"] .import-status-overview-item {
    background: color-mix(in srgb, var(--app-surface-raised) 72%, var(--bs-body-bg) 28%);
}

[data-bs-theme="dark"] .import-status-overview-item.is-complete {
    background: var(--app-success-bg-soft);
}

.import-panel {
    display: flex;
    flex-direction: column;
    gap: .55rem;
    position: relative;
    min-width: 0;
    padding: .75rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface);
    transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}

[data-bs-theme="dark"] .import-panel {
    background: color-mix(in srgb, var(--app-surface-raised) 76%, var(--bs-body-bg) 24%);
}

.import-step-panel.is-active {
    border-color: rgba(var(--bs-primary-rgb), .42);
    background: color-mix(in srgb, var(--app-surface) 86%, var(--app-primary-bg-soft) 14%);
    box-shadow: 0 .35rem 1rem rgba(var(--bs-primary-rgb), .08);
}

.import-step-panel.is-complete {
    border-color: color-mix(in srgb, var(--app-border) 70%, rgba(var(--bs-success-rgb), .35) 30%);
}

[data-bs-theme="dark"] .import-step-panel.is-active {
    background: color-mix(in srgb, var(--app-surface-raised) 82%, rgba(var(--bs-primary-rgb), .14) 18%);
}

.import-panel-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .65rem;
    color: var(--bs-secondary-color);
    font-size: .82rem;
    font-weight: 700;
}

.import-panel-title-left {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    min-width: 0;
}

.import-panel-title-main {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    min-width: 0;
}

.import-panel-title .bi {
    color: var(--bs-primary);
    margin-right: 0;
}

.import-step-index {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 1.35rem;
    height: 1.35rem;
    border: 1px solid var(--app-primary-border-soft);
    border-radius: 999px;
    color: var(--bs-primary);
    background: var(--app-primary-bg-subtle);
    font-size: .76rem;
    font-weight: 700;
    line-height: 1;
}

.import-step-panel.is-complete .import-step-index {
    color: var(--bs-success-text-emphasis);
    border-color: var(--app-success-border-soft);
    background: var(--app-success-bg-soft);
}

.import-step-state {
    flex: 0 0 auto;
    color: var(--bs-secondary-color);
    font-size: .74rem;
    font-weight: 650;
    user-select: none;
}

.import-step-panel.is-complete .import-step-state {
    color: var(--bs-success-text-emphasis);
}

.import-dropzone {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: .15rem .65rem;
    align-items: center;
    min-height: 4.1rem;
    padding: .7rem .8rem;
    border: 1px dashed rgba(var(--bs-primary-rgb), .38);
    border-radius: var(--app-radius-sm);
    background: var(--app-primary-bg-subtle);
    cursor: pointer;
}

[data-bs-theme="dark"] .import-dropzone {
    border-color: rgba(var(--bs-primary-rgb), .34);
    background: var(--app-primary-bg-soft);
}

.import-file-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 7.75rem;
    gap: .55rem;
    align-items: stretch;
}

.import-dropzone:hover {
    border-color: rgba(var(--bs-primary-rgb), .62);
    background: var(--app-primary-bg-soft);
}

[data-bs-theme="dark"] .import-dropzone:hover {
    border-color: rgba(var(--bs-primary-rgb), .58);
    background: var(--app-primary-bg-hover);
}

.import-dropzone-icon {
    grid-row: span 2;
    color: var(--bs-primary);
    font-size: 1.45rem;
}

.import-dropzone-text {
    font-weight: 650;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.import-dropzone-meta {
    min-width: 0;
    color: var(--bs-secondary-color);
    font-size: .84rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.import-file-input {
    display: none;
}

.import-inline-control,
.import-action-buttons {
    display: flex;
    align-items: center;
    gap: var(--app-button-gap);
    flex-wrap: wrap;
}

.import-delimiter-control {
    display: grid;
    grid-template-columns: 5.25rem 2.15rem;
    gap: .35rem var(--app-button-gap);
    align-items: center;
    justify-content: center;
    min-width: 7.75rem;
}

.import-delimiter-control .form-label {
    grid-column: 1 / -1;
    color: var(--bs-secondary-color);
    font-size: .72rem;
    font-weight: 650;
}

.import-delimiter-select {
    width: 5.25rem;
}

.import-delimiter-control .btn {
    width: 2.15rem;
    height: 2.15rem;
    padding: 0;
}

.import-reload-control {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 7.75rem;
}

.import-reload-control .btn {
    width: 2.15rem;
    height: 2.15rem;
    padding: 0;
}

.import-panel-hint {
    color: var(--bs-secondary-color);
    font-size: .84rem;
}

.import-warning {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    color: var(--bs-warning-text-emphasis);
    font-size: .84rem;
}

.import-summary-bar {
    display: flex;
    align-items: center;
    gap: .75rem;
    flex-wrap: wrap;
    padding: .65rem .75rem;
    border-bottom: 1px solid var(--app-border);
    background: var(--app-surface-muted);
}

.import-summary-title {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    gap: .35rem;
    color: var(--bs-secondary-color);
    font-weight: 700;
    white-space: nowrap;
}

.import-summary-content {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    flex-wrap: wrap;
    min-width: 0;
}

.import-data-card .table-height-scroll {
    height: calc(100dvh - 382px);
    min-height: 0;
}

.import-mapping-card {
    margin-top: .75rem;
}

.import-mapping-scroll {
    height: calc(100dvh - 382px);
    min-height: 0;
    overflow-x: auto;
    overflow-y: auto;
}

.import-mapping-scroll thead th {
    position: sticky;
    top: 0;
    z-index: 2;
}

.import-summary-item {
    color: var(--bs-secondary-color);
    font-weight: 650;
    white-space: nowrap;
}

.import-status-badge {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 1.55rem;
    padding: .18rem .65rem;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 650;
    line-height: 1.1;
    user-select: none;
}

.import-preview-status-badge {
    display: inline-grid;
    grid-template-columns: 1fr;
    width: 6.6rem;
    padding: .18rem 1.85rem .18rem .8rem;
}

.import-status-dropdown {
    display: inline-block;
}

.import-status-button {
    font-size: .75rem;
    min-height: 1.55rem;
    padding: .18rem 1.85rem .18rem .8rem;
    line-height: 1.1;
}

.import-status-button.dropdown-toggle::after {
    display: none;
}

.import-status-button:hover,
.import-status-button:focus,
.import-status-button:active,
.import-status-button.show {
    border-color: inherit;
    color: inherit;
    filter: brightness(.98);
}

.import-status-button.import-status-warning:hover,
.import-status-button.import-status-warning:focus,
.import-status-button.import-status-warning:active,
.import-status-button.import-status-warning.show {
    color: var(--bs-warning-text-emphasis);
    border-color: var(--app-warning-border-soft);
    background: var(--app-warning-bg-soft);
}

.import-status-button.import-status-ok:hover,
.import-status-button.import-status-ok:focus,
.import-status-button.import-status-ok:active,
.import-status-button.import-status-ok.show {
    color: var(--bs-success-text-emphasis);
    border-color: var(--app-success-border-soft);
    background: var(--app-success-bg-soft);
}

.import-status-button.import-status-error:hover,
.import-status-button.import-status-error:focus,
.import-status-button.import-status-error:active,
.import-status-button.import-status-error.show {
    color: var(--bs-danger-text-emphasis);
    border-color: var(--app-danger-border-soft);
    background: var(--app-danger-bg-soft);
}

.import-status-dropdown-icon {
    position: absolute;
    top: 50%;
    right: .8rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: .7rem;
    font-size: .7rem;
    line-height: 1;
    transform: translateY(-50%);
}

.import-status-label {
    display: block;
    min-width: 0;
    text-align: center;
}

.import-status-placeholder-icon {
    visibility: hidden;
}

.import-status-popover {
    width: max-content;
    min-width: 14rem;
    max-width: 24rem;
    padding: .55rem .65rem;
    border-color: var(--app-border);
    border-radius: var(--app-radius-sm);
    box-shadow: 0 .6rem 1.4rem rgba(15, 23, 42, .13);
}

.import-status-popover-title {
    margin-bottom: .35rem;
    color: var(--bs-body-color);
    font-size: .82rem;
    font-weight: 700;
}

.import-status-popover-line {
    color: var(--bs-secondary-color);
    font-size: .8rem;
    line-height: 1.25;
    white-space: normal;
}

.import-status-popover-line + .import-status-popover-line {
    margin-top: .28rem;
}

.import-row-status-detail {
    max-width: 11rem;
    margin-top: .25rem;
    color: var(--bs-secondary-color);
    font-size: .72rem;
    line-height: 1.2;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.import-save-summary {
    display: flex;
    flex-direction: column;
    gap: .35rem;
}

.import-save-summary-main {
    color: var(--bs-body-color);
    font-weight: 650;
}

.import-save-summary-detail {
    color: var(--bs-secondary-color);
    font-size: .92rem;
}

.import-status-ok {
    color: var(--bs-success-text-emphasis);
    border-color: var(--app-success-border-soft);
    background: var(--app-success-bg-soft);
}

.import-status-warning {
    color: var(--bs-warning-text-emphasis);
    border-color: var(--app-warning-border-soft);
    background: var(--app-warning-bg-soft);
}

.import-status-error {
    color: var(--bs-danger-text-emphasis);
    border-color: var(--app-danger-border-soft);
    background: var(--app-danger-bg-soft);
}

[data-bs-theme="dark"] .import-summary-bar {
    border-bottom-color: var(--app-table-border);
    background: var(--app-table-header-bg);
}

[data-bs-theme="dark"] .import-status-popover {
    background: var(--app-surface-raised);
    box-shadow: 0 .65rem 1.5rem rgba(0, 0, 0, .45);
}

.app-tooltip {
    --bs-tooltip-bg: color-mix(in srgb, var(--bs-primary) 8%, #ffffff 92%);
    --bs-tooltip-color: var(--bs-emphasis-color);
    --bs-tooltip-border-radius: var(--app-radius-sm);
    --bs-tooltip-font-size: .8rem;
    --bs-tooltip-max-width: min(22rem, calc(100vw - 2rem));
    --bs-tooltip-opacity: 1;
    filter: drop-shadow(0 .65rem 1.15rem rgba(15, 23, 42, .18));
}

.app-tooltip .tooltip-inner {
    padding: .48rem .68rem;
    border: 1px solid color-mix(in srgb, var(--bs-primary) 32%, var(--app-border) 68%);
    border-radius: var(--app-radius-sm);
    background: var(--bs-tooltip-bg);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .42);
    font-weight: 560;
    line-height: 1.3;
    text-align: left;
}

.app-tooltip .tooltip-arrow::before {
    border-top-color: color-mix(in srgb, var(--bs-primary) 32%, var(--app-border) 68%);
    border-bottom-color: color-mix(in srgb, var(--bs-primary) 32%, var(--app-border) 68%);
    border-left-color: color-mix(in srgb, var(--bs-primary) 32%, var(--app-border) 68%);
    border-right-color: color-mix(in srgb, var(--bs-primary) 32%, var(--app-border) 68%);
}

[data-bs-theme="dark"] .app-tooltip {
    --bs-tooltip-bg: color-mix(in srgb, var(--bs-primary) 18%, var(--app-surface-raised) 82%);
    --bs-tooltip-color: var(--bs-emphasis-color);
    filter: drop-shadow(0 .55rem 1.15rem rgba(0, 0, 0, .58));
}

[data-bs-theme="dark"] .app-tooltip .tooltip-inner {
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08);
}

@media (max-width: 991.98px) {
    .import-workflow {
        min-width: 52rem;
    }

    .import-status-overview {
        grid-template-columns: repeat(4, minmax(11rem, 1fr));
        min-width: 52rem;
    }
}

@media (max-width: 640.98px) {
    .import-file-row {
        grid-template-columns: minmax(0, 1fr) 7.75rem;
    }

    .import-data-card .table-height-scroll {
        height: calc(100dvh - 272px);
        min-height: 0;
    }

    .import-mapping-scroll {
        height: calc(100dvh - 382px);
        overflow-y: auto;
    }
}

.page-heading {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
}

.page-heading > span:not(.page-heading-icon) {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.page-heading-icon {
    flex: 0 0 auto;
    color: var(--bs-primary);
    font-size: 1.35rem;
    line-height: 1;
}

.page-heading-path {
    color: var(--bs-secondary-color);
    font-weight: 500;
}

a, .btn-link {
    color: var(--bs-link-color);
}

.btn-primary {
    color: var(--bs-primary);
    background-color: var(--app-primary-bg-subtle);
    border-color: rgba(var(--bs-primary-rgb), .48);
}

.btn-primary:hover,
.btn-primary:focus {
    color: var(--bs-primary);
    background-color: var(--app-primary-bg-hover);
    border-color: rgba(var(--bs-primary-rgb), .62);
}

.btn-primary:active,
.btn-primary.active,
.show > .btn-primary.dropdown-toggle {
    color: var(--bs-primary);
    background-color: var(--app-primary-bg-active);
    border-color: rgba(var(--bs-primary-rgb), .7);
}

.btn-secondary {
    color: var(--bs-secondary-color);
    background-color: var(--app-surface);
    border-color: var(--app-border);
}

.btn-secondary:hover,
.btn-secondary:focus {
    color: var(--bs-primary);
    background-color: var(--app-primary-bg-soft);
    border-color: var(--app-primary-border-soft);
}

.btn-secondary:active,
.btn-secondary.active,
.show > .btn-secondary.dropdown-toggle {
    color: var(--bs-primary);
    background-color: var(--app-primary-bg-active);
    border-color: var(--app-primary-border);
}

.btn-primary:disabled,
.btn-primary.disabled,
.btn-secondary:disabled,
.btn-secondary.disabled {
    color: var(--bs-secondary-color);
    background-color: var(--app-surface-muted);
    border-color: var(--app-border);
    opacity: .65;
}

.btn-danger {
    color: var(--bs-danger-text-emphasis);
    background-color: var(--app-danger-bg-soft);
    border-color: var(--app-danger-border-soft);
}

.btn-danger:hover,
.btn-danger:focus {
    color: var(--bs-danger-text-emphasis);
    background-color: color-mix(in srgb, var(--app-danger-bg-soft) 82%, var(--bs-danger) 18%);
    border-color: rgba(var(--bs-danger-rgb), .42);
}

.btn-danger:active,
.btn-danger.active,
.show > .btn-danger.dropdown-toggle {
    color: var(--bs-danger-text-emphasis);
    background-color: color-mix(in srgb, var(--app-danger-bg-soft) 72%, var(--bs-danger) 28%);
    border-color: rgba(var(--bs-danger-rgb), .5);
}

.container-fluid {
    padding-right: 0;
    padding-left: 0;
}

.border-primary {
    border-color: var(--bs-primary) !important;
}

.summary {
    color: var(--bs-primary) !important;
}

summary::marker {
    color: var(--bs-primary);
}

.text-smaller {
    font-size: 0.92rem;
}

.account-page {
    padding: 0;
}

.account-content {
    width: 100%;
}

.account-content > h3,
.account-content > h4,
.account-content > header > h1 {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    margin-bottom: 1rem;
    color: var(--bs-emphasis-color);
    font-size: clamp(1.45rem, 1.2rem + .55vw, 1.85rem);
    font-weight: 650;
    line-height: 1.2;
}

.account-content > header > h1 {
    color: var(--bs-emphasis-color) !important;
}

.account-content > .row {
    width: min(100%, 34rem);
    margin: 0;
    padding: 1rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

.account-content > .row > [class*="col-"],
.account-content > .row > div {
    width: 100%;
    max-width: none;
    padding: 0;
}

.account-content form .btn,
.account-content form .btn-link {
    margin-top: .2rem;
}

.account-content a:not(.btn):not(.nav-link) {
    text-decoration: none;
}

.account-content a:not(.btn):not(.nav-link):hover {
    text-decoration: underline;
}

.account-login {
    display: flex;
    flex-direction: column;
    width: min(100%, 34rem);
    margin: clamp(2rem, 4dvh, 4rem) auto 0;
}

.account-login > h3,
.account-login > h4 {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    margin-bottom: 1rem;
    color: var(--bs-emphasis-color);
    font-size: clamp(1.45rem, 1.2rem + .55vw, 1.85rem);
    font-weight: 650;
    line-height: 1.2;
}

.account-login > .row {
    width: 100%;
    margin: 0;
    padding: 1rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

.account-login > .row > [class*="col-"],
.account-login > .row > div {
    width: 100%;
    max-width: none;
    padding: 0;
}

.account-login-remember {
    display: flex;
    align-items: center;
    gap: .45rem;
    justify-content: flex-start;
    width: 100%;
    margin: .9rem 0 0;
    padding-top: .75rem;
    border-top: 1px solid var(--app-border);
    color: var(--bs-secondary-color);
    font-size: .92rem;
}

.account-login-remember label {
    margin: 0;
}

.account-login-footer {
    display: flex;
    justify-content: center;
    margin-top: .9rem;
    color: var(--bs-secondary-color);
    font-size: .9rem;
}

.account-login-footer a {
    color: inherit;
    text-decoration: none;
}

.account-login-footer a:hover,
.account-login-footer a:focus {
    color: var(--bs-link-color);
    text-decoration: underline;
}

.public-home {
    display: grid;
    gap: 1rem;
    width: min(100%, 64rem);
    margin: clamp(1.75rem, 5dvh, 4rem) auto 0;
}

.public-home-header {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.public-home-logo {
    width: 4rem;
    height: 4rem;
    border-radius: var(--app-radius-sm);
    box-shadow: var(--app-shadow-sm);
}

.public-home h1 {
    margin: 0;
    font-size: clamp(2rem, 1.55rem + 1.2vw, 2.75rem);
    font-weight: 650;
    line-height: 1.1;
}

.public-home h2 {
    margin: 0 0 .55rem;
    font-size: 1.05rem;
    font-weight: 650;
}

.public-home-header p,
.public-home-panel p,
.public-home-grid p {
    margin: 0;
    color: var(--bs-secondary-color);
}

.public-home-panel,
.public-home-grid article {
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

.public-home-panel {
    display: grid;
    gap: .8rem;
    padding: 1.25rem;
}

.public-home-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .65rem;
    margin-top: .25rem;
}

.public-home-actions .btn {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
}

.public-home-grid,
.public-home-help-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

.public-home-help-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.public-home-grid article {
    padding: 1rem;
}

.public-home-grid i {
    display: inline-flex;
    margin-bottom: .6rem;
    color: var(--app-primary);
    font-size: 1.25rem;
}

@media (max-width: 640.98px) {
    .public-home {
        margin-top: 1rem;
    }

    .public-home-header {
        align-items: flex-start;
    }

    .public-home-logo {
        width: 3.25rem;
        height: 3.25rem;
    }

    .public-home-grid,
    .public-home-help-grid {
        grid-template-columns: 1fr;
    }

    .public-home-actions .btn {
        width: 100%;
        justify-content: center;
    }
}

.account-external-login {
    display: grid;
    gap: .75rem;
    margin-top: 1rem;
}

.account-external-login-divider {
    display: flex;
    align-items: center;
    gap: .65rem;
    color: var(--bs-secondary-color);
    font-size: .82rem;
    font-weight: 650;
}

.account-external-login-divider::before,
.account-external-login-divider::after {
    content: "";
    flex: 1 1 auto;
    height: 1px;
    background: var(--app-border);
}

.account-external-login-actions {
    display: grid;
    gap: .5rem;
}

.account-external-login-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    width: 100%;
    min-height: 2.45rem;
}

.account-external-login-button .bi {
    color: currentColor;
}

.account-external-login-empty {
    margin-top: .75rem;
    color: var(--bs-secondary-color);
}

.account-panel {
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

.configuration-protect-panel {
    display: grid;
    gap: 1.25rem;
    max-width: 46rem;
    padding: 1rem;
}

.configuration-protect-section {
    display: grid;
    gap: .75rem;
}

.configuration-protect-section + .configuration-protect-section {
    padding-top: 1.25rem;
    border-top: 1px solid var(--app-border);
}

.configuration-protect-section > h4 {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 650;
}

.configuration-protect-result {
    display: grid;
    gap: .45rem;
    padding-top: 1rem;
    border-top: 1px solid var(--app-border);
}

.configuration-protect-result label {
    font-weight: 650;
}

.configuration-protect-result-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
}

.configuration-protect-result-header .btn {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
}

.help-page {
    display: grid;
    gap: 1rem;
    width: 100%;
    max-width: none;
}

.help-scroll {
    box-sizing: border-box;
    height: calc(100dvh - 326px);
    min-height: 16rem;
    overflow-y: auto;
    padding-right: .35rem;
    padding-bottom: 1rem;
}

@media (max-width: 640.98px) {
    .help-scroll {
        height: calc(100dvh - 336px);
        min-height: 14rem;
    }
}

@media (min-width: 641px) {
    .help-scroll {
        height: calc(100dvh - 304px);
        min-height: 16rem;
    }
}

.help-intro,
.help-card {
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

.help-intro {
    padding: 1rem 1.15rem;
}

.help-intro h2 {
    margin: 0 0 .45rem;
    font-size: 1.15rem;
    font-weight: 650;
}

.help-intro p {
    margin: 0;
    color: var(--bs-secondary-color);
}

.help-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
}

.help-card {
    padding: 1rem;
}

.help-card h3 {
    display: flex;
    align-items: center;
    gap: .55rem;
    margin: 0 0 .75rem;
    font-size: 1rem;
    font-weight: 650;
}

.help-card h3 .bi {
    color: var(--bs-primary);
}

.help-card ul {
    display: grid;
    gap: .45rem;
    margin: 0;
    padding-left: 1.1rem;
    color: var(--bs-secondary-color);
}

.account-loading {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    padding: .85rem 1rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    color: var(--bs-secondary-color);
    background: var(--app-surface-raised);
}

.account-status-message {
    display: flex;
    align-items: flex-start;
    gap: .55rem;
    margin-bottom: .9rem;
    border-radius: var(--app-radius-sm);
    box-shadow: none;
}

.account-manage-page {
    display: grid;
    gap: 0;
}

.account-manage-grid {
    display: grid;
    grid-template-columns: minmax(13rem, 16rem) minmax(0, 46rem);
    gap: 1rem;
    align-items: start;
}

.account-manage-nav {
    padding: .45rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

.account-manage-external-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    align-items: center;
}

.account-nav {
    gap: .2rem;
}

.account-nav-dropdown {
    display: none;
}

.account-nav .nav-link {
    display: flex;
    align-items: center;
    gap: .65rem;
    min-height: 2.45rem;
    padding: .45rem .65rem;
    border-radius: var(--app-radius-sm);
    color: var(--bs-body-color);
    font-weight: 500;
}

.account-nav .nav-link .bi {
    width: 1.15rem;
    color: var(--bs-primary);
    text-align: center;
}

.account-nav .nav-link:hover,
.account-nav .nav-link:focus {
    color: var(--bs-primary);
    background: var(--app-primary-bg-soft);
}

.account-nav .nav-link.active {
    color: var(--bs-primary);
    background: var(--app-primary-bg-hover);
}

.account-manage-content {
    display: grid;
    gap: .9rem;
    padding: 1rem;
}

.meta-info-page {
    display: grid;
    gap: 1rem;
    width: 100%;
    max-width: none;
    padding: 1rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

.meta-info-scroll {
    box-sizing: border-box;
    height: calc(100dvh - 360px);
    min-height: 16rem;
    overflow-y: auto;
    padding-right: .35rem;
    padding-bottom: 0;
}

.meta-info-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
}

.meta-info-intro,
.meta-info-card {
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

.meta-info-intro {
    padding: 1rem 1.15rem;
}

.meta-info-intro h2 {
    margin: 0 0 .45rem;
    font-size: 1.15rem;
    font-weight: 650;
}

.meta-info-intro p {
    margin: 0;
    color: var(--bs-secondary-color);
}

.meta-info-card {
    min-width: 0;
    padding: 1rem;
}

.meta-info-card h3 {
    display: flex;
    align-items: center;
    gap: .55rem;
    margin: 0 0 .75rem;
    font-size: 1rem;
    font-weight: 650;
}

.meta-info-list {
    display: grid;
    grid-template-columns: minmax(16rem, 22rem) minmax(0, 1fr);
    gap: .45rem .9rem;
    margin: 0;
    align-items: start;
}

.meta-info-list dt {
    color: var(--bs-secondary-color);
    font-weight: 650;
    white-space: nowrap;
}

.meta-info-list dd {
    min-width: 0;
    margin: 0;
    color: var(--bs-emphasis-color);
    overflow-wrap: anywhere;
}

.meta-info-card:last-child {
    margin-bottom: 0;
}

.log-viewer-page {
    display: grid;
    gap: 1rem;
    width: 100%;
    max-width: none;
}

.log-viewer-panel {
    display: grid;
    gap: 1rem;
    min-width: 0;
    padding: 1rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

.log-viewer-toolbar {
    display: grid;
    grid-template-columns: minmax(16rem, 32rem) auto;
    align-items: end;
    justify-content: start;
    gap: .75rem;
}

.log-viewer-toolbar .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    min-height: 2.45rem;
}

.log-viewer-delete-button {
    align-self: end;
    width: 2.45rem;
    min-width: 2.45rem;
    height: 2.45rem;
    min-height: 2.45rem;
    padding-inline: 0;
}

.log-viewer-file-select {
    display: grid;
    gap: .35rem;
}

.log-viewer-file-select label {
    margin: 0;
    color: var(--bs-secondary-color);
    font-weight: 650;
}

.log-viewer-content {
    box-sizing: border-box;
    height: calc(100dvh - 342px);
    min-height: 18rem;
    margin: 0;
    padding: .9rem;
    overflow: auto;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--bs-tertiary-bg);
    color: var(--bs-emphasis-color);
    font-size: .86rem;
    line-height: 1.45;
    white-space: pre-wrap;
    word-break: break-word;
}

.pdf-browser-status-page {
    display: grid;
    gap: 1rem;
    width: 100%;
    max-width: none;
    padding: 1rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

.pdf-browser-status-scroll {
    box-sizing: border-box;
    height: calc(100dvh - 360px);
    min-height: 16rem;
    overflow-y: auto;
    padding-right: .35rem;
    padding-bottom: 0;
}

.pdf-browser-process-summary {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 12rem));
    gap: .75rem;
    margin-bottom: 1rem;
}

.pdf-browser-process-summary > div {
    display: grid;
    gap: .25rem;
    padding: .7rem .85rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-sm);
    background: var(--app-surface);
}

.pdf-browser-process-summary span,
.pdf-browser-process-group header span {
    color: var(--bs-secondary-color);
    font-size: .84rem;
}

.pdf-browser-process-groups {
    display: grid;
    gap: .8rem;
}

.pdf-browser-process-group {
    display: grid;
    gap: .65rem;
    padding: .8rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-sm);
    background: var(--app-surface);
}

.pdf-browser-process-group header {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: .5rem;
    padding-bottom: .55rem;
    border-bottom: 1px solid var(--app-border);
}

.client-info-view {
    display: grid;
    gap: 1rem;
}

.client-info-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
}

.client-info-intro,
.client-info-card {
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface-raised);
    box-shadow: var(--app-shadow-sm);
}

.client-info-intro {
    padding: 1rem 1.15rem;
}

.client-info-intro h2 {
    margin: 0 0 .45rem;
    font-size: 1.15rem;
    font-weight: 650;
}

.client-info-intro p {
    margin: 0;
    color: var(--bs-secondary-color);
}

.client-info-card {
    min-width: 0;
    padding: 1rem;
}

.client-info-card h3 {
    display: flex;
    align-items: center;
    gap: .55rem;
    margin: 0 0 .75rem;
    font-size: 1rem;
    font-weight: 650;
}

.client-info-list {
    display: grid;
    grid-template-columns: minmax(16rem, 22rem) minmax(0, 1fr);
    gap: .45rem .9rem;
    margin: 0;
    align-items: start;
}

.client-info-list dt {
    color: var(--bs-secondary-color);
    font-weight: 650;
    white-space: nowrap;
}

.client-info-list dd {
    min-width: 0;
    margin: 0;
    color: var(--bs-emphasis-color);
    overflow-wrap: anywhere;
}

.account-manage-content > h3,
.account-manage-content > h4 {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    margin-bottom: 0;
    color: var(--bs-emphasis-color);
    font-size: 1.15rem;
    font-weight: 650;
}

.account-manage-content > h3 .bi,
.account-manage-content > h4 .bi {
    color: var(--bs-primary);
}

.account-manage-content > .row {
    width: min(100%, 34rem);
    margin: 0;
}

.account-manage-content > .row > [class*="col-"] {
    width: 100%;
    max-width: none;
    padding: 0;
}

.account-manage-content .alert {
    margin-bottom: 0;
    border-color: var(--app-border);
    border-radius: var(--app-radius-sm);
    box-shadow: none;
}

.account-manage-content .alert p:last-child {
    margin-bottom: 0;
}

.account-setup-flow {
    width: min(100%, 42rem);
}

.account-step-list {
    display: grid;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
    counter-reset: account-step;
}

.account-step-list > li {
    display: grid;
    grid-template-columns: 2rem minmax(0, 1fr);
    gap: .75rem;
    align-items: start;
    padding: .9rem 0;
    border-top: 1px solid var(--app-border);
    counter-increment: account-step;
}

.account-step-list > li:first-child {
    padding-top: 0;
    border-top: 0;
}

.account-step-list > li::before {
    content: counter(account-step);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.65rem;
    height: 1.65rem;
    margin-top: .05rem;
    border: 1px solid rgba(var(--bs-primary-rgb), .3);
    border-radius: 999px;
    color: var(--bs-primary);
    background: var(--app-primary-bg-soft);
    font-size: .82rem;
    font-weight: 700;
}

.account-step-list p {
    margin-bottom: .55rem;
    color: var(--bs-secondary-color);
    line-height: 1.45;
}

.account-step-list p:last-child {
    margin-bottom: 0;
}

.account-step-content {
    min-width: 0;
}

.account-step-list .row {
    width: min(100%, 34rem);
    margin: 0;
}

.account-step-list .row > [class*="col-"] {
    width: 100%;
    max-width: none;
    padding: 0;
}

.account-verification-form {
    width: min(100%, 28rem);
}

.account-verification-form .form-floating,
.account-verification-field {
    width: 100%;
    min-width: 22rem;
}

.account-manage-content kbd {
    display: inline-block;
    max-width: 100%;
    padding: .18rem .42rem;
    border: 1px solid var(--app-border);
    border-radius: .35rem;
    color: var(--bs-emphasis-color);
    background: var(--app-surface-muted);
    font-size: .86rem;
    line-height: 1.35;
    white-space: normal;
    word-break: break-all;
    box-shadow: none;
}

.account-authenticator-qr {
    display: flex;
    align-items: center;
    justify-content: center;
    width: fit-content;
    margin: .25rem 0 .7rem;
    padding: .75rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-sm);
    background: #fff;
}

.account-authenticator-qr img {
    display: block;
    width: 14rem;
    height: 14rem;
    max-width: calc(100vw - 5rem);
    max-height: calc(100vw - 5rem);
    image-rendering: pixelated;
}

.account-action-row,
.account-action-group,
.account-action-pair {
    display: flex;
    align-items: center;
    gap: .55rem;
    flex-wrap: wrap;
}

.account-action-row {
    margin-top: .1rem;
}

.account-action-group .account-action-row,
.account-action-group form {
    margin: 0;
}

.account-action-pair {
    flex-wrap: nowrap;
}

.account-action-row .btn,
.account-action-group .btn,
.account-action-pair .btn {
    min-height: 2.25rem;
}

.account-fixed-action {
    width: 21rem;
    box-sizing: border-box;
    justify-content: center;
    text-align: center;
    white-space: nowrap;
}

.account-action-group .account-danger-action {
    margin-left: 0;
}

.account-2fa-layout {
    display: grid;
    gap: .9rem;
}

.account-2fa-summary {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .65rem;
}

.account-summary-item {
    display: grid;
    gap: .2rem;
    min-width: 0;
    padding: .65rem .75rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-sm);
    background: color-mix(in srgb, var(--app-surface-muted) 68%, transparent);
}

.account-summary-label {
    color: var(--bs-secondary-color);
    font-size: .78rem;
    font-weight: 700;
}

.account-summary-value {
    color: var(--bs-emphasis-color);
    font-weight: 650;
}

.account-status-badge {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    min-height: 1.45rem;
    padding: .16rem .55rem;
    border: 1px solid var(--app-border);
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 700;
}

.account-status-badge.is-on {
    color: var(--bs-success-text-emphasis);
    border-color: var(--app-success-border-soft);
    background: var(--app-success-bg-soft);
}

.account-status-badge.is-off {
    color: var(--bs-secondary-color);
    background: var(--app-surface);
}

.account-subsection {
    display: grid;
    gap: .65rem;
    padding-top: .85rem;
    border-top: 1px solid var(--app-border);
}

.account-subsection-title {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    color: var(--bs-emphasis-color);
    font-weight: 650;
}

.account-recovery-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(7rem, 1fr));
    gap: .45rem;
    width: min(100%, 44rem);
}

.recovery-code {
    display: block;
    padding: .45rem .55rem;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-sm);
    color: var(--bs-emphasis-color);
    background: var(--app-surface-muted);
    text-align: center;
    font-size: .92rem;
}

@media (max-width: 640.98px) {
    .content:has(.account-manage-page) {
        height: 100%;
        min-height: 0;
        overflow: hidden;
        box-sizing: border-box;
    }

    .account-page,
    .account-content {
        height: 100%;
        min-height: 0;
        overflow: hidden;
    }

    .account-page {
        padding: 0;
    }

    .account-manage-page {
        grid-template-rows: auto minmax(0, 1fr);
        height: 100%;
        min-height: 0;
        overflow: hidden;
    }

    .account-manage-grid {
        grid-template-columns: 1fr;
        grid-template-rows: auto minmax(0, 1fr);
        align-items: stretch;
        height: 100%;
        min-height: 0;
        overflow: hidden;
    }

    .account-manage-nav {
        position: relative;
        z-index: 20;
        overflow: visible;
    }

    .account-manage-content {
        max-height: calc(100dvh - 246px);
        min-height: 0;
        overflow-y: auto;
        align-content: start;
        grid-auto-rows: max-content;
    }

    .account-2fa-summary {
        grid-template-columns: 1fr;
    }

    .account-2fa-layout,
    .account-action-group,
    .account-action-row,
    .account-action-pair,
    .account-action-group form {
        width: 100%;
    }

    .account-action-group,
    .account-action-pair {
        align-items: stretch;
    }

    .account-action-pair {
        flex-wrap: wrap;
    }

    .account-action-row .btn,
    .account-action-group .btn,
    .account-action-pair .btn,
    .account-fixed-action {
        width: 100%;
        max-width: none;
        white-space: normal;
    }

    .account-recovery-grid {
        grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
    }

    .account-nav-dropdown {
        display: block;
        position: relative;
    }

    .account-nav-dropdown > summary {
        display: flex;
        align-items: center;
        gap: .65rem;
        min-height: 2.55rem;
        padding: .5rem .65rem;
        border-radius: var(--app-radius-sm);
        color: var(--bs-primary);
        background: var(--app-primary-bg-hover);
        font-weight: 650;
        cursor: pointer;
        list-style: none;
    }

    .account-nav-dropdown > summary::marker {
        content: "";
    }

    .account-nav-dropdown > summary::-webkit-details-marker {
        display: none;
    }

    .account-nav-dropdown > summary .bi:not(.account-nav-dropdown-chevron) {
        width: 1.15rem;
        color: var(--bs-primary);
        text-align: center;
    }

    .account-nav-dropdown-chevron {
        margin-left: auto;
        transition: transform .18s ease;
    }

    .account-nav-dropdown[open] .account-nav-dropdown-chevron {
        transform: rotate(180deg);
    }

    .account-nav-dropdown-menu {
        display: grid;
        gap: .25rem;
        position: absolute;
        top: calc(100% + .35rem);
        left: 0;
        right: 0;
        z-index: 30;
        padding: .35rem;
        border: 1px solid var(--app-border);
        border-radius: var(--app-radius-sm);
        background: var(--app-surface-raised);
        box-shadow: var(--app-shadow-md);
    }

    .account-nav-dropdown-menu .nav-link {
        display: flex;
        align-items: center;
        gap: .65rem;
        min-height: 2.45rem;
        padding: .45rem .65rem;
        border-radius: var(--app-radius-sm);
        color: var(--bs-body-color);
        font-weight: 500;
    }

    .account-nav-dropdown-menu .nav-link .bi {
        width: 1.15rem;
        color: var(--bs-primary);
        text-align: center;
    }

    .account-nav-dropdown-menu .nav-link.active {
        color: var(--bs-primary);
        background: var(--app-primary-bg-hover);
    }

    .account-nav {
        display: none;
    }

    .meta-info-page {
        padding-bottom: .75rem;
        padding-inline: .75rem;
    }

    .meta-info-scroll {
        height: calc(100dvh - 376px);
        min-height: 14rem;
    }

    .meta-info-list {
        grid-template-columns: 1fr;
        gap: .12rem;
    }

    .meta-info-list dd {
        margin-bottom: .45rem;
    }

    .log-viewer-toolbar {
        grid-template-columns: minmax(0, 1fr) 2.45rem;
        align-items: end;
        gap: .6rem;
    }

    .log-viewer-panel {
        padding: .75rem;
    }

    .log-viewer-toolbar .btn {
        min-width: 0;
        padding-inline: .65rem;
        white-space: nowrap;
    }

    .log-viewer-delete-button {
        width: 2.45rem;
        min-width: 2.45rem;
        height: 2.45rem;
        min-height: 2.45rem;
        padding-inline: 0;
    }

    .log-viewer-content {
        height: calc(100dvh - 274px);
        min-height: 12rem;
        padding: .7rem;
        font-size: .78rem;
        line-height: 1.4;
    }

    .pdf-browser-status-page {
        padding-bottom: .75rem;
        padding-inline: .75rem;
    }

    .pdf-browser-status-scroll {
        height: calc(100dvh - 274px);
        min-height: 14rem;
    }

    .client-info-list {
        grid-template-columns: 1fr;
        gap: .12rem;
    }

    .client-info-list dd {
        margin-bottom: .45rem;
    }
}

@media (min-width: 641px) {
    .meta-info-scroll {
        height: calc(100dvh - 338px);
        min-height: 16rem;
    }

    .log-viewer-content {
        height: calc(100dvh - 320px);
        min-height: 18rem;
    }

    .pdf-browser-status-scroll {
        height: calc(100dvh - 318px);
        min-height: 16rem;
    }
}


.btn:focus,
.btn:active:focus,
.btn-link.nav-link:focus,
.form-control:focus,
.form-select:focus,
.form-check-input:focus {
    box-shadow: var(--app-focus-ring);
}

.form-control:focus,
.form-select:focus {
    border-color: var(--app-primary-border);
}

.page-link {
    color: var(--bs-primary);
    border-color: var(--app-border);
    background: var(--app-surface);
}

.page-link:hover,
.page-link:focus {
    color: var(--bs-primary);
    background: var(--app-primary-bg-soft);
    border-color: var(--app-primary-border-soft);
}

.active > .page-link,
.page-link.active {
    color: var(--bs-white);
    background-color: var(--bs-primary);
    border-color: var(--bs-primary);
}

.content {
    padding-top: 1.1rem;
    color: var(--bs-body-color);
}

.content h1,
.content .h1 {
    color: var(--bs-emphasis-color);
    font-size: 1.75rem;
    font-weight: 650;
    letter-spacing: 0;
}

.content h2,
.content .h2 {
    color: var(--bs-emphasis-color);
    font-weight: 650;
    letter-spacing: 0;
}

h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid var(--bs-success);
}

.invalid {
    outline: 1px solid var(--bs-danger) !important;
}

.validation-message {
    color: var(--bs-danger);
    display: block;
    margin-top: .2rem;
    font-size: .88rem;
    line-height: 1.25;
}

.blazor-error-boundary {
    background: url("/icons/importwarning.svg") no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: var(--bs-secondary-color);
}

.form-check.filter-menu-form-check {
    align-items: center;
    min-height: 1.6rem;
}

.form-check.filter-menu-form-check > div:first-child {
    display: flex;
    align-items: center;
    gap: .55rem;
    min-width: 0;
}

.form-check.filter-menu-form-check .form-check-input {
    flex: 0 0 auto;
    margin-top: 0;
}

.form-check.filter-menu-form-check .form-check-label {
    min-width: 0;
    display: inline-flex;
    align-items: center;
    padding-left: 0;
}

.form-check.filter-menu-form-check .boolean-status {
    vertical-align: middle;
}

.form-check.filter-menu-form-check > span {
    visibility: hidden;
    opacity: 0;
    transition: opacity 0.3s ease;
    margin-left: 16px;
}

.form-check.filter-menu-form-check:hover > span {
    visibility: visible;
    opacity: 1;
    color: var(--bs-primary);
    text-decoration: none;
}


.dropdown-menu {
    max-height: 600px;
    overflow-y: auto;
    overflow-x: hidden;
    padding: .35rem;
}



.offcanvas-start {
    width: min(420px, 100vw);
    transform: translateX(-100%);
    transition: transform .40s ease-in-out;
    border-right: 1px solid var(--bs-border-color);
}

.offcanvas.show,
.offcanvas.showing {
    transform: translateX(0);
    transition-duration: .40s;
}

.offcanvas.hiding {
    transform: translateX(-100%);
    transition-duration: .30s;
}

.offcanvas {
    visibility: hidden;
}

.offcanvas.show,
.offcanvas.showing,
.offcanvas.hiding {
    visibility: visible;
}


.offcanvas-backdrop {
    --oc-bd-opacity: .2;
    --oc-bd-in: .40s;
    --oc-bd-out: .2s;
    --oc-bd-ease: ease-in-out;
    --bs-backdrop-opacity: var(--oc-bd-opacity);
    transition: opacity var(--oc-bd-in) var(--oc-bd-ease);
    will-change: opacity;
}

.offcanvas-backdrop.fade {
    opacity: 0;
}

.offcanvas-backdrop.show {
    opacity: var(--oc-bd-opacity);
}

.offcanvas-backdrop.fade:not(.show) {
    transition-duration: var(--oc-bd-out);
}

.unbilled-badge {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    min-height: 1.7rem;
    padding: .18rem .55rem;
    border: 1px solid var(--app-warning-border-soft);
    border-radius: 999px;
    background: var(--app-warning-bg-soft);
    color: var(--bs-emphasis-color);
    font-size: .78rem;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    cursor: default;
    user-select: none;
}

.unbilled-badge .bi {
    color: var(--bs-warning-text-emphasis);
    font-size: .9rem;
}

.unbilled-badge-sm {
    min-height: 1.45rem;
    padding: .12rem .42rem;
    font-size: .72rem;
    vertical-align: middle;
}

.unbilled-badge-sm .bi {
    font-size: .82rem;
}

.project-name-status {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    white-space: nowrap;
}

.boolean-status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.35rem;
    height: 1.35rem;
    border: 1px solid var(--app-border);
    border-radius: .35rem;
    background: var(--app-surface);
    color: currentColor;
    font-size: .95rem;
    line-height: 1;
    vertical-align: middle;
}

.boolean-status .bi {
    display: block;
    line-height: 1;
}

.boolean-status.is-true {
    color: currentColor;
    border-color: var(--app-border);
    background: var(--app-surface);
}

.boolean-status.is-false {
    color: var(--bs-secondary-color);
}

.boolean-status.is-false .bi {
    display: none;
}
