/*
    Fiscal Pro Admin global theme
    =============================
    Bootstrap 5.3 colour modes are driven by data-bs-theme on <html>.
    The application-specific tokens below are the only source of custom colours.
    Legacy Razor pages can continue using their existing Bootstrap and custom classes.
*/

/* =========================================================
   1. Shared design tokens
   ========================================================= */

:root {
    --fp-font-sans: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --fp-radius-xs: .3rem;
    --fp-radius-sm: .45rem;
    --fp-radius-md: .65rem;
    --fp-radius-lg: .9rem;
    --fp-radius-xl: 1.15rem;
    --fp-radius-pill: 999px;
    --fp-transition-fast: 140ms ease;
    --fp-transition-normal: 220ms ease;
    --fp-admin-topbar-height: 60px;
    --fp-main-topbar-height: 48px;
    --fp-admin-sidebar-width: 240px;
    --fp-main-sidebar-width: 250px;
    --bs-font-sans-serif: var(--fp-font-sans);
    --bs-body-font-family: var(--fp-font-sans);
}

:root,
[data-bs-theme="light"] {
    color-scheme: light;

    --fp-primary: #193dcc;
    --fp-primary-rgb: 25, 61, 204;
    --fp-primary-hover: #112d9e;
    --fp-primary-action-hover: #112d9e;
    --fp-primary-strong: #10298e;
    --fp-primary-soft: #e9edff;
    --fp-primary-subtle: #d9e0ff;
    --fp-primary-contrast: #ffffff;

    --fp-accent: #ed7a00;
    --fp-accent-rgb: 237, 122, 0;
    --fp-accent-hover: #bd5f00;
    --fp-accent-soft: #fff1df;

    --fp-success: #16844a;
    --fp-success-rgb: 22, 132, 74;
    --fp-success-soft: #e8f6ee;
    --fp-warning: #b96800;
    --fp-warning-rgb: 185, 104, 0;
    --fp-warning-soft: #fff3df;
    --fp-danger: #c9343f;
    --fp-danger-rgb: 201, 52, 63;
    --fp-danger-soft: #ffebed;
    --fp-info: #0879a8;
    --fp-info-rgb: 8, 121, 168;
    --fp-info-soft: #e5f5fb;

    --fp-app-bg: #f4f6fb;
    --fp-app-bg-rgb: 244, 246, 251;
    --fp-app-gradient: radial-gradient(circle at 8% 0%, rgba(var(--fp-primary-rgb), .08), transparent 29rem), linear-gradient(180deg, #f8f9fd 0%, var(--fp-app-bg) 100%);
    --fp-surface: #ffffff;
    --fp-surface-rgb: 255, 255, 255;
    --fp-surface-soft: #f8f9fd;
    --fp-surface-muted: #eef1f7;
    --fp-surface-elevated: #ffffff;
    --fp-surface-hover: #f3f5fa;

    --fp-text: #182033;
    --fp-text-rgb: 24, 32, 51;
    --fp-text-muted: #687287;
    --fp-text-soft: #8993a5;
    --fp-heading: #10172a;

    --fp-border: #d9deea;
    --fp-border-rgb: 217, 222, 234;
    --fp-border-strong: #bcc5d7;
    --fp-border-soft: rgba(var(--fp-primary-rgb), .14);

    --fp-topbar-bg: rgba(255, 255, 255, .92);
    --fp-topbar-border: rgba(var(--fp-primary-rgb), .14);
    --fp-sidebar-bg: #f8f9fd;
    --fp-sidebar-gradient: linear-gradient(180deg, #ffffff 0%, #f4f6fb 100%);
    --fp-sidebar-text: #35415a;
    --fp-sidebar-hover: rgba(var(--fp-primary-rgb), .08);
    --fp-sidebar-active: #e7ebff;
    --fp-sidebar-active-text: var(--fp-primary-strong);
    --fp-breadcrumb-bg: rgba(var(--fp-surface-rgb), .82);
    --fp-footer-bg: #101b4f;
    --fp-footer-text: #dce3ff;

    --fp-input-bg: #ffffff;
    --fp-input-border: #c9d0df;
    --fp-input-placeholder: #929bad;
    --fp-chart-grid: rgba(71, 82, 104, .16);

    --fp-shadow-xs: 0 1px 2px rgba(20, 30, 55, .05);
    --fp-shadow-sm: 0 5px 16px rgba(20, 30, 55, .08);
    --fp-shadow-md: 0 14px 34px rgba(20, 30, 55, .11);
    --fp-shadow-lg: 0 24px 56px rgba(20, 30, 55, .16);

    /* Bootstrap colour-mode bridge */
    --bs-body-color: var(--fp-text);
    --bs-body-color-rgb: var(--fp-text-rgb);
    --bs-body-bg: var(--fp-app-bg);
    --bs-body-bg-rgb: var(--fp-app-bg-rgb);
    --bs-emphasis-color: var(--fp-heading);
    --bs-emphasis-color-rgb: var(--fp-text-rgb);
    --bs-secondary-color: var(--fp-text-muted);
    --bs-tertiary-color: var(--fp-text-soft);
    --bs-secondary-bg: var(--fp-surface-muted);
    --bs-tertiary-bg: var(--fp-surface-soft);
    --bs-primary: var(--fp-primary);
    --bs-primary-rgb: var(--fp-primary-rgb);
    --bs-success: var(--fp-success);
    --bs-success-rgb: var(--fp-success-rgb);
    --bs-warning: var(--fp-warning);
    --bs-warning-rgb: var(--fp-warning-rgb);
    --bs-danger: var(--fp-danger);
    --bs-danger-rgb: var(--fp-danger-rgb);
    --bs-info: var(--fp-info);
    --bs-info-rgb: var(--fp-info-rgb);
    --bs-border-color: var(--fp-border);
    --bs-border-color-translucent: rgba(var(--fp-text-rgb), .14);
    --bs-link-color: var(--fp-primary);
    --bs-link-color-rgb: var(--fp-primary-rgb);
    --bs-link-hover-color: var(--fp-primary-hover);
    --bs-link-hover-color-rgb: 17, 45, 158;
    --bs-heading-color: var(--fp-heading);
}

[data-bs-theme="dark"] {
    color-scheme: dark;

    --fp-primary: #4f68d8;
    --fp-primary-rgb: 79, 104, 216;
    --fp-primary-hover: #8098ff;
    --fp-primary-action-hover: #4259c3;
    --fp-primary-strong: #a9b8ff;
    --fp-primary-soft: rgba(102, 130, 255, .15);
    --fp-primary-subtle: rgba(102, 130, 255, .24);
    --fp-primary-contrast: #ffffff;

    --fp-accent: #ff9d3b;
    --fp-accent-rgb: 255, 157, 59;
    --fp-accent-hover: #ffb569;
    --fp-accent-soft: rgba(255, 157, 59, .14);

    --fp-success: #54d18b;
    --fp-success-rgb: 84, 209, 139;
    --fp-success-soft: rgba(84, 209, 139, .13);
    --fp-warning: #ffc15b;
    --fp-warning-rgb: 255, 193, 91;
    --fp-warning-soft: rgba(255, 193, 91, .14);
    --fp-danger: #ff7b86;
    --fp-danger-rgb: 255, 123, 134;
    --fp-danger-soft: rgba(255, 123, 134, .14);
    --fp-info: #57c7ec;
    --fp-info-rgb: 87, 199, 236;
    --fp-info-soft: rgba(87, 199, 236, .13);

    --fp-app-bg: #090e1a;
    --fp-app-bg-rgb: 9, 14, 26;
    --fp-app-gradient: radial-gradient(circle at 8% 0%, rgba(var(--fp-primary-rgb), .12), transparent 30rem), linear-gradient(180deg, #0a1020 0%, var(--fp-app-bg) 100%);
    --fp-surface: #121a2b;
    --fp-surface-rgb: 18, 26, 43;
    --fp-surface-soft: #172135;
    --fp-surface-muted: #202b3e;
    --fp-surface-elevated: #182236;
    --fp-surface-hover: #1d2940;

    --fp-text: #e7edf7;
    --fp-text-rgb: 231, 237, 247;
    --fp-text-muted: #a4afc0;
    --fp-text-soft: #7d899d;
    --fp-heading: #f6f8fc;

    --fp-border: rgba(204, 214, 232, .17);
    --fp-border-rgb: 68, 78, 99;
    --fp-border-strong: rgba(204, 214, 232, .28);
    --fp-border-soft: rgba(var(--fp-primary-rgb), .18);

    --fp-topbar-bg: rgba(13, 20, 35, .92);
    --fp-topbar-border: rgba(var(--fp-primary-rgb), .18);
    --fp-sidebar-bg: #0e1626;
    --fp-sidebar-gradient: linear-gradient(180deg, #121b2d 0%, #0d1422 100%);
    --fp-sidebar-text: #c4cede;
    --fp-sidebar-hover: rgba(var(--fp-primary-rgb), .12);
    --fp-sidebar-active: rgba(var(--fp-primary-rgb), .19);
    --fp-sidebar-active-text: #ffffff;
    --fp-breadcrumb-bg: rgba(var(--fp-surface-rgb), .82);
    --fp-footer-bg: #080c16;
    --fp-footer-text: #aebbd0;

    --fp-input-bg: #0e1728;
    --fp-input-border: rgba(204, 214, 232, .26);
    --fp-input-placeholder: #738096;
    --fp-chart-grid: rgba(196, 206, 222, .14);

    --fp-shadow-xs: 0 1px 2px rgba(0, 0, 0, .22);
    --fp-shadow-sm: 0 7px 18px rgba(0, 0, 0, .24);
    --fp-shadow-md: 0 16px 38px rgba(0, 0, 0, .31);
    --fp-shadow-lg: 0 28px 64px rgba(0, 0, 0, .42);

    --bs-body-color: var(--fp-text);
    --bs-body-color-rgb: var(--fp-text-rgb);
    --bs-body-bg: var(--fp-app-bg);
    --bs-body-bg-rgb: var(--fp-app-bg-rgb);
    --bs-emphasis-color: var(--fp-heading);
    --bs-emphasis-color-rgb: 246, 248, 252;
    --bs-secondary-color: var(--fp-text-muted);
    --bs-tertiary-color: var(--fp-text-soft);
    --bs-secondary-bg: var(--fp-surface-muted);
    --bs-tertiary-bg: var(--fp-surface-soft);
    --bs-primary: var(--fp-primary);
    --bs-primary-rgb: var(--fp-primary-rgb);
    --bs-success: var(--fp-success);
    --bs-success-rgb: var(--fp-success-rgb);
    --bs-warning: var(--fp-warning);
    --bs-warning-rgb: var(--fp-warning-rgb);
    --bs-danger: var(--fp-danger);
    --bs-danger-rgb: var(--fp-danger-rgb);
    --bs-info: var(--fp-info);
    --bs-info-rgb: var(--fp-info-rgb);
    --bs-border-color: var(--fp-border);
    --bs-border-color-translucent: rgba(231, 237, 247, .15);
    --bs-link-color: var(--fp-primary-strong);
    --bs-link-color-rgb: 169, 184, 255;
    --bs-link-hover-color: #c7d0ff;
    --bs-link-hover-color-rgb: 199, 208, 255;
    --bs-heading-color: var(--fp-heading);
}

/* =========================================================
   2. Base document
   ========================================================= */

html {
    min-height: 100%;
    font-size: 14px;
    scroll-behavior: smooth;
    background: var(--fp-app-bg);
    font-family: var(--fp-font-sans);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

@media (min-width: 768px) {
    html {
        font-size: 16px;
    }
}

body {
    min-height: 100vh;
    margin: 0;
    color: var(--fp-text);
    background: var(--fp-app-gradient);
    font-family: var(--fp-font-sans);
    transition: background-color var(--fp-transition-normal), color var(--fp-transition-fast);
}

body.fp-admin-layout {
    margin-top: var(--fp-admin-topbar-height);
}

body.fp-main-layout {
    margin-top: var(--fp-main-topbar-height);
}

body.fp-auth-layout {
    margin-top: 0;
}

main {
    min-height: 75vh;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    color: var(--fp-heading);
}

h5,
h6 {
    font-weight: 500;
}

a {
    color: var(--bs-link-color);
    text-decoration: none;
}

a:hover,
a:focus {
    color: var(--bs-link-hover-color);
    text-decoration: none;
}

small,
.small,
.text-muted {
    color: var(--fp-text-muted) !important;
}

hr {
    color: var(--fp-border);
    opacity: 1;
}

::selection {
    color: #ffffff;
    background: rgba(var(--fp-primary-rgb), .82);
}

/* =========================================================
   3. Shared layout shell
   ========================================================= */

.fp-admin-topbar,
.fp-main-topbar {
    color: var(--fp-text);
    background: var(--fp-topbar-bg) !important;
    border-color: var(--fp-topbar-border) !important;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    box-shadow: var(--fp-shadow-xs);
    --bs-navbar-color: var(--fp-text-muted);
    --bs-navbar-hover-color: var(--fp-heading);
    --bs-navbar-active-color: var(--fp-heading);
    --bs-navbar-brand-color: var(--fp-heading);
    --bs-navbar-brand-hover-color: var(--fp-heading);
    --bs-navbar-toggler-border-color: var(--fp-border);
}

.fp-admin-topbar {
    min-height: var(--fp-admin-topbar-height);
    border-radius: 0 0 var(--fp-radius-xl) var(--fp-radius-xl);
}

.fp-main-topbar {
    min-height: var(--fp-main-topbar-height);
}

.fp-admin-topbar .navbar-brand img {
    width: 128px;
    max-height: 42px;
    object-fit: contain;
}

.fp-main-topbar .navbar-toggler-icon,
.fp-admin-topbar .navbar-toggler-icon {
    filter: var(--fp-navbar-icon-filter, none);
}

[data-bs-theme="dark"] {
    --fp-navbar-icon-filter: invert(1) grayscale(1) brightness(1.7);
}

.fp-breadcrumb-bar {
    margin-inline: -.6rem;
    color: var(--fp-text-muted);
    background: var(--fp-breadcrumb-bg) !important;
    border: 1px solid var(--fp-border);
    border-top: 0;
    border-radius: 0 0 var(--fp-radius-xl) var(--fp-radius-xl);
    box-shadow: var(--fp-shadow-xs);
}

.fp-main-layout .fp-breadcrumb-bar {
    margin-inline: 0;
    border-inline: 0;
    border-radius: 0;
}

.breadcrumb {
    --bs-breadcrumb-divider-color: var(--fp-text-soft);
    --bs-breadcrumb-item-active-color: var(--fp-text-muted);
}

.breadcrumb-item,
.breadcrumb-item a {
    color: var(--fp-text-muted) !important;
}

.breadcrumb-item:hover,
.breadcrumb-item a:hover {
    color: var(--fp-primary-strong) !important;
}

.fp-page-sidebar,
.fp-context-sidebar {
    min-height: 75vh;
    color: var(--fp-text);
    background: var(--fp-surface-soft) !important;
    border-color: var(--fp-border) !important;
}

.fp-footer,
.footer {
    width: 100%;
    line-height: normal !important;
    padding-block: 1.5rem;
}

.fp-footer {
    color: var(--fp-footer-text) !important;
    background: var(--fp-footer-bg) !important;
}

.fp-footer .text-muted,
.fp-footer a,
.fp-footer p,
.fp-footer small {
    color: var(--fp-footer-text) !important;
}

footer h4 {
    text-transform: uppercase;
}

.box-shadow {
    box-shadow: var(--fp-shadow-sm) !important;
}

.my-container {
    min-width: 0;
    transition: margin-left var(--fp-transition-normal);
}

/* Admin sidebar used by _AdminLayout */
.fp-admin-layout .fp-admin-shell {
    display: flex;
    width: 100%;
    min-height: 75vh;
    align-items: stretch;
}

.fp-admin-layout .fp-admin-content {
    flex: 1 1 auto;
    min-width: 0;
}

.fp-admin-layout .side-navbar {
    position: relative;
    z-index: 1020;
    flex: 0 0 var(--fp-admin-sidebar-width);
    width: var(--fp-admin-sidebar-width);
    min-height: 0;
    margin-left: calc(var(--fp-admin-sidebar-width) * -1);
    overflow-y: auto;
    color: var(--fp-sidebar-text);
    background: var(--fp-sidebar-gradient);
    border-right: 1px solid var(--fp-border);
    box-shadow: var(--fp-shadow-xs);
    transition: margin-left var(--fp-transition-normal);
}

.fp-admin-layout .side-navbar.active-nav {
    margin-left: 0;
}

/* The sidebar is now a flex column beside the content, so no extra content margin is needed. */
.fp-admin-layout .active-cont {
    margin-left: 0;
}

.fp-admin-layout .side-navbar .nav-link {
    color: var(--fp-sidebar-text);
}

.fp-admin-layout .side-navbar .nav-link:hover,
.fp-admin-layout .side-navbar .nav-link:focus {
    color: var(--fp-heading);
    background: var(--fp-sidebar-hover);
}

@media (max-width: 991.98px) {
    .fp-admin-layout .side-navbar {
        position: fixed;
        top: var(--fp-admin-topbar-height);
        bottom: 0;
        left: 0;
        width: var(--fp-admin-sidebar-width);
        margin-left: calc(var(--fp-admin-sidebar-width) * -1);
        box-shadow: var(--fp-shadow-lg);
    }

    .fp-admin-layout .side-navbar.active-nav {
        margin-left: 0;
    }
}

/* =========================================================
   4. Navigation
   ========================================================= */

.nav-item {
    margin: 0 2px;
    padding-inline: .7rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    border-radius: var(--fp-radius-sm);
}

.nav-pills .nav-item {
    margin-bottom: 2px;
    padding-inline: 0;
}

.nav-link {
    color: var(--fp-text);
}

.nav-item:hover {
    background: var(--fp-sidebar-hover);
}

.nav-item.active,
.navbar-nav .nav-item.active {
    color: var(--fp-sidebar-active-text) !important;
    background: var(--fp-sidebar-active);
}

.nav-item.active .nav-link,
.nav-pills .nav-item.active .nav-link {
    color: var(--fp-sidebar-active-text) !important;
}

.nav-pills .nav-link.active,
.nav-pills .show > .nav-link {
    color: var(--fp-primary-contrast);
    background-color: var(--fp-primary);
    border-color: var(--fp-primary);
}

a.navbar-brand {
    white-space: normal;
    text-align: center;
    word-break: break-word;
}

#menu-btn {
    color: var(--fp-text-muted);
    cursor: pointer;
}

#menu-btn:hover {
    color: var(--fp-primary-strong);
}

/* =========================================================
   5. Theme picker
   ========================================================= */

.fp-theme-nav-item {
    overflow: visible;
}

.fp-theme-picker {
    flex: 0 0 auto;
}

.fp-theme-toggle {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    color: var(--fp-text-muted);
    background: var(--fp-surface);
    border: 1px solid var(--fp-border);
    border-radius: var(--fp-radius-pill);
    font-weight: 650;
}

.fp-theme-toggle:hover,
.fp-theme-toggle:focus,
.fp-theme-toggle.show {
    color: var(--fp-heading);
    background: var(--fp-surface-hover);
    border-color: var(--fp-border-strong);
}

.fp-theme-menu {
    width: 270px;
    padding: .45rem;
}

.fp-theme-option {
    display: flex;
    align-items: center;
    gap: .7rem;
    padding: .65rem .7rem;
    border-radius: var(--fp-radius-md);
}

.fp-theme-option > span:nth-child(2) {
    display: grid;
    flex: 1 1 auto;
    line-height: 1.2;
}

.fp-theme-option strong {
    color: var(--fp-heading);
    font-size: .9rem;
}

.fp-theme-option small {
    margin-top: .15rem;
    color: var(--fp-text-muted) !important;
    font-size: .74rem;
}

.fp-theme-option.active {
    color: var(--fp-primary-strong);
    background: var(--fp-primary-soft);
}

.fp-theme-option-icon {
    width: 2rem;
    height: 2rem;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto !important;
    color: var(--fp-primary-strong);
    background: var(--fp-primary-soft);
    border-radius: var(--fp-radius-md);
}

.fp-auth-theme-picker {
    position: fixed;
    top: 1rem;
    right: 1rem;
    z-index: 1050;
}

/* =========================================================
   6. Bootstrap components
   ========================================================= */

.btn {
    border-radius: var(--fp-radius-md);
    font-weight: 650;
}

.btn-primary {
    --bs-btn-color: var(--fp-primary-contrast);
    --bs-btn-bg: var(--fp-primary);
    --bs-btn-border-color: var(--fp-primary);
    --bs-btn-hover-color: var(--fp-primary-contrast);
    --bs-btn-hover-bg: var(--fp-primary-action-hover);
    --bs-btn-hover-border-color: var(--fp-primary-action-hover);
    --bs-btn-active-color: var(--fp-primary-contrast);
    --bs-btn-active-bg: var(--fp-primary-action-hover);
    --bs-btn-active-border-color: var(--fp-primary-action-hover);
}

.btn-outline-primary {
    --bs-btn-color: var(--fp-primary-strong);
    --bs-btn-border-color: rgba(var(--fp-primary-rgb), .52);
    --bs-btn-hover-color: var(--fp-primary-contrast);
    --bs-btn-hover-bg: var(--fp-primary);
    --bs-btn-hover-border-color: var(--fp-primary);
}

.btn-light {
    --bs-btn-color: var(--fp-text);
    --bs-btn-bg: var(--fp-surface);
    --bs-btn-border-color: var(--fp-border);
    --bs-btn-hover-color: var(--fp-heading);
    --bs-btn-hover-bg: var(--fp-surface-hover);
    --bs-btn-hover-border-color: var(--fp-border-strong);
}

a.btn,
a.btn:hover {
    text-decoration: none;
}

.card {
    color: var(--fp-text);
    background: var(--fp-surface);
    border-color: var(--fp-border);
    border-radius: var(--fp-radius-lg);
    box-shadow: var(--fp-shadow-sm) !important;
    margin-bottom: 2rem !important;
}

.card-header {
    padding: .55rem .75rem;
    color: var(--fp-primary-contrast);
    background: linear-gradient(135deg, var(--fp-primary), var(--fp-primary-action-hover));
    border-bottom-color: rgba(255, 255, 255, .16);
}

.card-header .text-muted,
.card-header small,
.card-header a:not(.btn) {
    color: rgba(255, 255, 255, .82) !important;
}

.card-footer {
    text-align: right;
    color: var(--fp-text);
    background: var(--fp-surface-soft);
    border-top-color: var(--fp-border);
}

.card-rounded {
    border-radius: var(--fp-radius-xl);
    overflow: hidden;
}

.form-label,
label {
    color: var(--fp-text-muted);
}

.form-label {
    margin: 0 0 .3rem;
    padding: 0;
    font-size: .84rem;
    font-weight: 650;
}

.form-control,
.form-select {
    color: var(--fp-text);
    background-color: var(--fp-input-bg);
    border-color: var(--fp-input-border);
    border-radius: var(--fp-radius-md);
}

.form-control::placeholder {
    color: var(--fp-input-placeholder);
}

.form-control:focus,
.form-select:focus {
    color: var(--fp-text);
    background-color: var(--fp-input-bg);
    border-color: rgba(var(--fp-primary-rgb), .72);
    box-shadow: 0 0 0 .2rem rgba(var(--fp-primary-rgb), .15);
}

.form-control:disabled,
.form-select:disabled {
    color: var(--fp-text-muted);
    background-color: var(--fp-surface-muted);
}

.input-group-text {
    color: var(--fp-text-muted);
    background: var(--fp-surface-soft);
    border-color: var(--fp-input-border);
}

.field-validation-error,
.validation-message,
.text-danger.field-validation-error {
    color: var(--fp-danger) !important;
    font-size: .82rem;
}

.input-validation-error {
    border-color: var(--fp-danger) !important;
}

.dropdown-menu {
    color: var(--fp-text);
    background: var(--fp-surface-elevated);
    border-color: var(--fp-border);
    border-radius: var(--fp-radius-lg);
    box-shadow: var(--fp-shadow-md);
}

.dropdown-item {
    color: var(--fp-text);
    border-radius: var(--fp-radius-sm);
}

.dropdown-item:hover,
.dropdown-item:focus {
    color: var(--fp-heading);
    background: var(--fp-surface-hover);
}

.dropdown-item.active,
.dropdown-item:active {
    color: var(--fp-primary-strong);
    background: var(--fp-primary-soft);
}

.dropdown-divider {
    border-color: var(--fp-border);
}

.modal-content,
.offcanvas,
.popover,
.toast {
    color: var(--fp-text);
    background: var(--fp-surface-elevated);
    border-color: var(--fp-border);
}

.modal-content {
    border-radius: var(--fp-radius-xl);
    box-shadow: var(--fp-shadow-lg);
}

.modal-header,
.modal-footer,
.offcanvas-header {
    border-color: var(--fp-border);
}

.alert {
    border-radius: var(--fp-radius-lg);
}

.list-group-item {
    color: var(--fp-text);
    background: var(--fp-surface);
    border-color: var(--fp-border);
}

.pagination {
    --bs-pagination-color: var(--fp-primary-strong);
    --bs-pagination-bg: var(--fp-surface);
    --bs-pagination-border-color: var(--fp-border);
    --bs-pagination-hover-color: var(--fp-primary-hover);
    --bs-pagination-hover-bg: var(--fp-surface-hover);
    --bs-pagination-hover-border-color: var(--fp-border-strong);
    --bs-pagination-active-color: var(--fp-primary-contrast);
    --bs-pagination-active-bg: var(--fp-primary);
    --bs-pagination-active-border-color: var(--fp-primary);
    --bs-pagination-disabled-color: var(--fp-text-soft);
    --bs-pagination-disabled-bg: var(--fp-surface-muted);
    --bs-pagination-disabled-border-color: var(--fp-border);
}

.table {
    --bs-table-color: var(--fp-text);
    --bs-table-bg: transparent;
    --bs-table-border-color: var(--fp-border);
    --bs-table-striped-color: var(--fp-text);
    --bs-table-striped-bg: rgba(var(--fp-primary-rgb), .035);
    --bs-table-active-color: var(--fp-text);
    --bs-table-active-bg: rgba(var(--fp-primary-rgb), .09);
    --bs-table-hover-color: var(--fp-text);
    --bs-table-hover-bg: rgba(var(--fp-primary-rgb), .065);
    color: var(--fp-text);
}

.table > :not(caption) > * > * {
    color: inherit;
    border-bottom-color: var(--fp-border);
}

.table thead th {
    color: var(--fp-text-muted);
    background: var(--fp-surface-soft);
}

.table-responsive {
    border-radius: var(--fp-radius-md);
}

.accordion {
    --bs-accordion-color: var(--fp-text);
    --bs-accordion-bg: var(--fp-surface);
    --bs-accordion-border-color: var(--fp-border);
    --bs-accordion-btn-color: var(--fp-heading);
    --bs-accordion-btn-bg: var(--fp-surface);
    --bs-accordion-active-color: var(--fp-primary-strong);
    --bs-accordion-active-bg: var(--fp-primary-soft);
}

/* Bootstrap utility compatibility for older Razor markup. */
[data-bs-theme="dark"] .bg-white,
[data-bs-theme="dark"] .bg-light {
    background-color: var(--fp-surface) !important;
}

[data-bs-theme="dark"] .text-dark:not(.bg-primary):not(.bg-secondary):not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-info) {
    color: var(--fp-text) !important;
}

[data-bs-theme="dark"] .border-light {
    border-color: var(--fp-border) !important;
}

[data-bs-theme="dark"] .table-light {
    --bs-table-color: var(--fp-text);
    --bs-table-bg: var(--fp-surface-soft);
    --bs-table-border-color: var(--fp-border);
}

/* =========================================================
   7. Authentication shell
   ========================================================= */

.fp-auth-layout {
    background: radial-gradient(circle at 12% 12%, rgba(var(--fp-primary-rgb), .18), transparent 28rem), radial-gradient(circle at 88% 18%, rgba(var(--fp-accent-rgb), .12), transparent 24rem), var(--fp-app-gradient);
}

.fp-auth-container {
    min-height: calc(100vh - 100px);
    padding-top: 3.5rem;
    padding-bottom: 2rem;
}

.fp-auth-layout .card {
    background: rgba(var(--fp-surface-rgb), .94);
    box-shadow: var(--fp-shadow-lg) !important;
}

.fp-auth-layout .card-header:empty {
    min-height: .45rem;
    padding: 0;
    background: linear-gradient(90deg, var(--fp-primary), var(--fp-accent));
}

/* =========================================================
   8. Legacy progress bars and helper utilities
   ========================================================= */

#progressbar {
    width: 100%;
    margin-bottom: 30px;
    overflow: hidden;
    text-align: center;
    counter-reset: step;
}

#progressbar li {
    position: relative;
    float: left;
    width: 25%;
    color: var(--fp-text-muted);
    list-style-type: none;
    text-transform: uppercase;
    font-size: .75em;
}

#progressbar li::before {
    content: counter(step);
    counter-increment: step;
    width: 22px;
    line-height: 22px;
    display: block;
    margin: 0 auto 5px;
    color: var(--fp-text);
    background: var(--fp-surface-muted);
    border: 1px solid var(--fp-border);
    border-radius: var(--fp-radius-xs);
    font-size: 10px;
}

#progressbar li::after {
    content: "";
    position: absolute;
    top: 10px;
    left: -50%;
    z-index: -1;
    width: 100%;
    height: 2px;
    background: var(--fp-border);
}

#progressbar li:first-child::after {
    content: none;
}

#progressbar li.active::before,
#progressbar li.active::after {
    color: var(--fp-primary-contrast);
    background: var(--fp-primary);
    border-color: var(--fp-primary);
}

.v-progressbar {
    padding: 0;
    counter-reset: step;
}

.v-progressbar li {
    display: block;
    list-style-type: none;
}

.v-progressbar li::before {
    content: counter(step);
    counter-increment: step;
    width: 22px;
    display: inline-block;
    margin-right: .5em;
    color: var(--fp-text);
    background: var(--fp-surface-muted);
    border: 1px solid var(--fp-border);
    border-radius: var(--fp-radius-xs);
    text-align: center;
}

.v-progressbar li::after {
    content: "";
    width: 4px;
    height: 20px;
    display: block;
    margin-left: 9px;
    background: var(--fp-border);
}

.v-progressbar li:last-child::after {
    content: none;
}

.v-progressbar li.active::before,
.v-progressbar li.active::after {
    color: var(--fp-primary-contrast);
    background: var(--fp-primary);
    border-color: var(--fp-primary);
}

.text-ellipsized,
.text-truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.text-ellipsis-1,
.text-ellipsis-2,
.text-ellipsis-3 {
    display: -webkit-box;
    overflow: hidden;
    text-overflow: ellipsis;
    -webkit-box-orient: vertical;
}

.text-ellipsis-1 { -webkit-line-clamp: 1; }
.text-ellipsis-2 { -webkit-line-clamp: 2; }
.text-ellipsis-3 { -webkit-line-clamp: 3; }

.dotted-line {
    width: 100%;
    margin: 10px 0;
    border-top: 2px dotted var(--fp-border-strong);
}

.soft-divider {
    border: 0;
    border-top: 1px solid var(--fp-border);
}

.fp-note-body {
    color: var(--fp-text);
    background: var(--fp-primary-soft);
    border: 1px solid var(--fp-border-soft);
}

/* =========================================================
   9. Styled tables retained for existing pages
   ========================================================= */

.styled-table,
.styled-table-pdf {
    border-collapse: collapse;
    margin: 25px 0;
    font-size: .9em;
    font-family: var(--fp-font-sans);
}

.styled-table {
    color: var(--fp-text);
    background: var(--fp-surface);
    box-shadow: var(--fp-shadow-sm);
}

.styled-table thead tr,
.styled-table-pdf thead tr {
    color: #ffffff;
    background: var(--fp-primary);
    text-align: left;
}

.styled-table th,
.styled-table td,
.styled-table-pdf th,
.styled-table-pdf td {
    padding: 4px 15px;
}

.styled-table tbody tr {
    border-bottom: 1px solid var(--fp-border);
}

.styled-table tbody tr:nth-of-type(even) {
    background: var(--fp-surface-soft);
}

.styled-table tbody tr:last-of-type {
    border-bottom: 2px solid var(--fp-primary);
}

/* PDF variants intentionally remain paper-white. */
.styled-table-pdf {
    color: #111111;
    background: #ffffff;
    box-shadow: none;
}

.styled-table-pdf tbody tr {
    border-bottom: 1px solid #dddddd;
}

.styled-table-pdf tbody tr:nth-of-type(even) {
    background: #f3f3f3;
}

.styled-table-pdf tbody tr:last-of-type {
    border-bottom: 2px solid #193dcc;
}

/* =========================================================
   10. App launcher and drop menus
   ========================================================= */

.more-items-menu {
    position: relative;
    display: inline-block;
}

.more-items-menu-link {
    margin-right: 10px;
    padding: 8px 16px;
    color: var(--fp-text);
    text-decoration: none;
    font-size: 16px;
}

.more-items-menu-button {
    padding: 8px;
    color: var(--fp-text);
    background: transparent;
    border: 0;
    font-size: 16px;
    cursor: pointer;
}

.more-items-menu-content {
    position: fixed;
    top: calc(var(--fp-admin-topbar-height) + 4px);
    right: 20px;
    z-index: 1050;
    min-width: 260px;
    display: none;
    padding: 8px;
    overflow: hidden;
    color: var(--fp-text);
    background: var(--fp-surface-elevated);
    border-color: var(--fp-border) !important;
    border-radius: var(--fp-radius-xl);
    box-shadow: var(--fp-shadow-lg);
}

.more-items-menu-content a {
    display: block;
    padding: 8px 0;
    color: var(--fp-text);
    text-decoration: none;
}

.more-items-menu-content a:hover,
.right_menu_btn:hover {
    color: var(--fp-heading);
    background: var(--fp-surface-hover);
}

.grip-icon {
    width: 20px;
    height: 20px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    cursor: pointer;
}

.grip-icon span {
    width: 100%;
    height: 3px;
    background: currentColor;
    border-radius: var(--fp-radius-pill);
}

.more-items-menu:hover .more-items-menu-content {
    display: block;
}

.more-items-menu:hover .more-items-menu-button {
    background: var(--fp-surface-hover);
    border-radius: var(--fp-radius-md);
}

#dropmenu a,
#dropmenu ul li a {
    display: block;
    margin-bottom: 1px;
    padding: 10px;
    color: var(--fp-sidebar-text);
    text-decoration: none;
}

#dropmenu > a {
    margin-left: 10px;
}

#dropmenu ul li a {
    padding-left: 30px !important;
    font-size: .9em !important;
}

#dropmenu ul li a:hover {
    color: var(--fp-heading);
    background: var(--fp-sidebar-hover);
}

a[data-bs-toggle="collapse"] {
    position: relative;
}

#dropmenu .dropdown-toggle::after {
    float: right;
    margin-top: 8px;
}

/* =========================================================
   11. Third-party controls
   ========================================================= */

/* Select2 Bootstrap 5 */
.select2-container--bootstrap-5 .select2-selection,
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
    color: var(--fp-text) !important;
    background: var(--fp-input-bg) !important;
    border-color: var(--fp-input-border) !important;
    border-radius: var(--fp-radius-md) !important;
}

.select2-container--bootstrap-5 .select2-selection--single .select2-selection__rendered,
.select2-container--default .select2-selection--single .select2-selection__rendered,
.select2-container--default .select2-selection--multiple .select2-selection__choice {
    color: var(--fp-text) !important;
}

.select2-container--bootstrap-5 .select2-dropdown,
.select2-container--default .select2-dropdown {
    color: var(--fp-text);
    background: var(--fp-surface-elevated);
    border-color: var(--fp-border);
    box-shadow: var(--fp-shadow-md);
}

.select2-container--bootstrap-5 .select2-dropdown .select2-search .select2-search__field,
.select2-container--default .select2-search--dropdown .select2-search__field {
    color: var(--fp-text);
    background: var(--fp-input-bg);
    border-color: var(--fp-input-border);
}

.select2-container--bootstrap-5 .select2-results__option--highlighted,
.select2-container--default .select2-results__option--highlighted[aria-selected] {
    color: var(--fp-heading) !important;
    background: var(--fp-primary-soft) !important;
}

.select2-container--bootstrap-5 .select2-results__option[aria-selected="true"],
.select2-container--default .select2-results__option[aria-selected="true"] {
    color: var(--fp-primary-strong);
    background: var(--fp-surface-muted);
}

/* Choices.js */
.choices__inner,
.choices__input,
.choices__list--dropdown,
.choices__list[aria-expanded] {
    color: var(--fp-text);
    background: var(--fp-input-bg);
    border-color: var(--fp-input-border);
}

.choices__list--dropdown .choices__item--selectable.is-highlighted,
.choices__list[aria-expanded] .choices__item--selectable.is-highlighted {
    color: var(--fp-heading);
    background: var(--fp-primary-soft);
}

/* jQuery UI datepicker (the project did not contain a usable colour-mode stylesheet). */
.ui-widget,
.ui-widget input,
.ui-widget select,
.ui-widget textarea,
.ui-widget button {
    font-family: var(--fp-font-sans);
}

.ui-widget-content,
.ui-datepicker {
    color: var(--fp-text);
    background: var(--fp-surface-elevated);
    border: 1px solid var(--fp-border);
    border-radius: var(--fp-radius-lg);
    box-shadow: var(--fp-shadow-md);
}

.ui-widget-header {
    color: var(--fp-heading);
    background: var(--fp-surface-soft);
    border-color: var(--fp-border);
}

.ui-state-default,
.ui-widget-content .ui-state-default {
    color: var(--fp-text);
    background: var(--fp-surface);
    border-color: var(--fp-border);
}

.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-state-active,
.ui-widget-content .ui-state-active {
    color: var(--fp-primary-strong);
    background: var(--fp-primary-soft);
    border-color: rgba(var(--fp-primary-rgb), .42);
}

/* SweetAlert2 */
.swal2-popup {
    color: var(--fp-text) !important;
    background: var(--fp-surface-elevated) !important;
}

.swal2-title,
.swal2-html-container {
    color: var(--fp-heading) !important;
}

/* =========================================================
   12. Scrollbars and loading states
   ========================================================= */

* {
    scrollbar-width: thin;
    scrollbar-color: rgba(var(--fp-primary-rgb), .55) var(--fp-surface-muted);
}

::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

::-webkit-scrollbar-track {
    background: var(--fp-surface-muted);
}

::-webkit-scrollbar-thumb {
    background: rgba(var(--fp-primary-rgb), .55);
    border: 2px solid var(--fp-surface-muted);
    border-radius: var(--fp-radius-pill);
}

::-webkit-scrollbar-thumb:hover {
    background: var(--fp-primary);
}

.loading {
    color: var(--fp-text-muted) !important;
}

/* =========================================================
   13. Responsive and print
   ========================================================= */

@media (max-width: 767.98px) {
    .nav-item {
        padding-inline: .35rem;
    }

    .fp-auth-theme-picker {
        top: .65rem;
        right: .65rem;
    }

    .more-items-menu-content {
        right: .65rem;
        left: .65rem;
        min-width: 0;
    }
}

@page {
    size: auto;
    margin: 0;
}

@media print {
    html,
    body {
        color: #000000 !important;
        background: #ffffff !important;
    }

    body {
        margin-top: 0 !important;
    }

    .active-cont {
        margin-left: 1px !important;
    }

    .card {
        color: #000000 !important;
        background: #ffffff !important;
        border-color: #cccccc !important;
        box-shadow: none !important;
    }

    .card-header {
        color: #000000 !important;
        background: #ffffff !important;
        border-bottom-color: #cccccc !important;
    }

    .card-footer {
        color: #000000 !important;
        background: #ffffff !important;
    }

    .table {
        --bs-table-color: #000000;
        --bs-table-bg: #ffffff;
        --bs-table-border-color: #cccccc;
    }
}

/* Legacy utility classes retained for existing pages and partials. */
button.accept-policy {
    font-size: 1rem;
    line-height: inherit;
}

.border-gradient {
    border-right: 5px solid;
    border-image-slice: 1;
}

.border-gradient-purple {
    border-image-source: linear-gradient(to bottom, var(--fp-primary), var(--fp-accent));
}
