:root {
    /* Brand Colors */
    --kromeka-red: #af161e;
    --kromeka-red-dark: #841117;
    --kromeka-grey: #878787;
    --kromeka-dark: #1d1d1b;
    --kromeka-yellow: #F5B51F;
    --kromeka-dark-grey: #575756;
    --kromeka-light-grey: #EDEDED;

    /* Theme Variables - Light Mode (Default) */
    --bg-body: #f8f9fa;
    --bg-card: #ffffff;
    --bg-card-header: var(--kromeka-dark-grey);
    --text-main: var(--kromeka-dark);
    --text-card-header: #ffffff;
    --text-muted: var(--kromeka-grey);
    --link-color: #0d6efd; /* Bootstrap default blue */
    --link-hover-color: #0a58ca;
    --border-color: #dee2e6;
    --hover-bg: #f0f0f0;
    --navbar-bg: var(--kromeka-dark);
    --navbar-text: rgba(255,255,255,0.8);
    --navbar-hover: var(--kromeka-yellow);
    --footer-border: #ddd;
    /* Tab text: readable in light theme (inactive tabs) */
    --tab-inactive-text: #495057;

    /* Input Variables - Light Mode */
    --input-bg: #ffffff;
    --input-text: #212529;
    --input-border: #dee2e6;
    --input-hover-bg: #f8f9fa;
    --input-focus-bg: #ffffff;
    --input-focus-text: #212529;
    --input-placeholder: #6c757d;
    --bg-secondary: #e9ecef;
    --action-primary-bg: var(--kromeka-red);
    --action-primary-text: #ffffff;
    --action-primary-hover: var(--kromeka-red-dark);
    --action-secondary-bg: transparent;
    --action-secondary-text: var(--text-main);
    --action-secondary-border: var(--border-color);
    --action-secondary-hover-bg: var(--hover-bg);
    --action-danger-bg: #7c2b2f;
    --action-danger-text: #ffffff;
    --action-danger-hover: #652226;
    --unsaved-bg: rgba(245, 181, 31, 0.18);
    --unsaved-text: #7a5b12;
    --notebook-select-bg: rgba(175, 22, 30, 0.08);
    --table-header-text: #212529;
    --table-sort-link: #212529;
    --table-sort-link-hover: #111111;
    --table-sort-icon: #495057;
    --pagination-bg: #ffffff;
    --pagination-text: #343a40;
    --pagination-border: #ced4da;
    --pagination-hover-bg: #f0f2f4;
    --pagination-hover-text: #1f2327;
    --pagination-active-bg: var(--kromeka-red);
    --pagination-active-text: #ffffff;
    --pagination-active-border: var(--kromeka-red);
    --pagination-disabled-bg: #f4f5f6;
    --pagination-disabled-text: #8a9096;

    /* Card header content (labels and secondary buttons on dark header) - light theme */
    --card-header-label-text: #e2e2e2;
    --card-header-btn-bg: #f0f0f0;
    --card-header-btn-text: #212529;
    --card-header-btn-border: rgba(255, 255, 255, 0.5);
    --card-header-btn-hover-bg: #ffffff;
    --card-header-btn-hover-text: #212529;
    --card-header-btn-hover-border: rgba(255, 255, 255, 0.8);

    /* Open-style action button (yellow accent) - light theme uses dark text for contrast */
    --btn-open-border: var(--kromeka-yellow);
    --btn-open-text: var(--kromeka-dark);
    --btn-open-hover-border: #d4a01b;
}

[data-theme="dark"] {
    /* Theme Variables - Dark Mode */
    --bg-body: #121211; /* Slightly darker version of Kromeka Dark */
    --bg-card: #2c2c2a; /* Slightly lighter for contrast */
    --bg-card-header: #000000;
    --text-main: #e0e0e0; /* Off-white for better readability than pure white */
    --text-card-header: #ffffff;
    --text-muted: #b8b8b8; /* Lighter grey for readability on dark (hints, secondary text) */
    --link-color: var(--kromeka-yellow); /* Yellow accent for dark mode (no blue) */
    --link-hover-color: #f7c94a;
    --border-color: #495057;
    --hover-bg: #3d3d3b;
    --navbar-bg: #000000;
    --navbar-text: rgba(255,255,255,0.8);
    --navbar-hover: var(--kromeka-yellow);
    --footer-border: #333;

    /* Input Variables - Dark Mode */
    --input-bg: #2c2c2a;
    --input-text: #e0e0e0;
    --input-border: #495057;
    --input-hover-bg: #3d3d3b;
    --input-focus-bg: #3d3d3b;
    --input-focus-text: #ffffff;
    --input-placeholder: #b8b8b8; /* Match muted for readable placeholders on dark */
    --bg-secondary: #1a1a19;
    --tab-inactive-text: var(--text-muted);
    --action-primary-bg: var(--kromeka-red);
    --action-primary-text: #ffffff;
    --action-primary-hover: #921219;
    --action-secondary-bg: transparent;
    --action-secondary-text: var(--text-main);
    --action-secondary-border: #5a5a58;
    --action-secondary-hover-bg: #343432;
    --action-danger-bg: #7c2b2f;
    --action-danger-text: #ffffff;
    --action-danger-hover: #652226;
    --unsaved-bg: rgba(245, 181, 31, 0.2);
    --unsaved-text: #e5c879;
    --notebook-select-bg: rgba(175, 22, 30, 0.16);
    --table-header-text: #e8e8e8;
    --table-sort-link: #e8e8e8;
    --table-sort-link-hover: #ffffff;
    --table-sort-icon: #d0d0d0;
    --pagination-bg: #272725;
    --pagination-text: #e3e3e3;
    --pagination-border: #555b61;
    --pagination-hover-bg: #3a3a38;
    --pagination-hover-text: #ffffff;
    --pagination-active-bg: var(--kromeka-red);
    --pagination-active-text: #ffffff;
    --pagination-active-border: var(--kromeka-red);
    --pagination-disabled-bg: #21211f;
    --pagination-disabled-text: #868c93;

    /* Bootstrap variable overrides so form-text and other secondary text are light on dark */
    --bs-secondary-color: #b8b8b8;
    --bs-body-color: var(--text-main);

    /* Open-style action button - dark theme uses yellow text for readability */
    --btn-open-text: var(--kromeka-yellow);

    /* Bootstrap 5 link/nav variables — app uses data-theme= not data-bs-theme=, so BS stays “light” by default; override so no blue nav/link text on dark surfaces */
    --bs-link-color: var(--kromeka-yellow);
    --bs-link-hover-color: #f7c94a;
    --bs-link-rgb: 245, 181, 31;
    --bs-nav-link-color: var(--kromeka-yellow);
    --bs-nav-link-hover-color: #f7c94a;
}

/* Dark theme: replace blue accents with yellow (no blue in dark mode) */
[data-theme="dark"] .alert-info {
    background-color: rgba(245, 181, 31, 0.15);
    border-color: rgba(245, 181, 31, 0.4);
    color: var(--text-main);
}

[data-theme="dark"] .alert-info a {
    color: var(--kromeka-yellow);
    text-decoration: underline;
}

[data-theme="dark"] .alert-info a:hover {
    color: #f7c94a;
}

[data-theme="dark"] .badge.bg-info {
    background-color: rgba(245, 181, 31, 0.35) !important;
    color: var(--kromeka-dark) !important;
}

body {
    background-color: var(--bg-body);
    color: var(--text-main);
    font-family: 'DINPro', 'Segoe UI', Roboto, sans-serif;
    transition: background-color 0.3s ease, color 0.3s ease;
}

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

a:hover {
    color: var(--link-hover-color);
    text-decoration: underline;
}

/* Navbar */
.navbar {
    background-color: var(--navbar-bg) !important;
    border-bottom: 5px solid var(--kromeka-red);
}

.navbar-brand {
    color: white !important;
    font-weight: 700;
    font-size: 1.8rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.navbar .nav-link {
    color: var(--navbar-text) !important;
    font-weight: 500;
}

.navbar .nav-link:hover {
    color: var(--navbar-hover) !important;
    text-decoration: none;
}

/* Breadcrumbs */
.breadcrumb {
    background-color: transparent;
    padding: 0;
    margin-bottom: 1rem;
}

.breadcrumb-item a {
    color: var(--link-color);
}

.breadcrumb-item.active {
    color: var(--text-muted);
}

[data-theme="dark"] .breadcrumb-item + .breadcrumb-item::before {
    color: var(--text-muted);
}

/* Headings */
h1, h2, h3, h4, h5, h6 {
    color: var(--kromeka-red);
    font-weight: 700;
    margin-bottom: 1rem;
}

/* Cards */
.card {
    background-color: var(--bg-card);
    border: none;
    border-radius: 0;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    margin-bottom: 25px;
    color: var(--text-main);
}

.card-header {
    background-color: var(--bg-card-header);
    color: var(--text-card-header);
    font-weight: 600;
    text-transform: uppercase;
    border-radius: 0 !important;
    border-bottom: 3px solid var(--kromeka-yellow);
    padding: 15px;
}

/* Light theme only: readable label and secondary buttons inside card header (e.g. search bar) */
:root:not([data-theme="dark"]) .card-header .text-muted,
:root:not([data-theme="dark"]) .card-header .form-label.text-muted {
    color: var(--card-header-label-text) !important;
}
:root:not([data-theme="dark"]) .card-header .btn-outline-secondary {
    background-color: var(--card-header-btn-bg);
    color: var(--card-header-btn-text);
    border-color: var(--card-header-btn-border);
}
:root:not([data-theme="dark"]) .card-header .btn-outline-secondary:hover,
:root:not([data-theme="dark"]) .card-header .btn-outline-secondary:focus {
    background-color: var(--card-header-btn-hover-bg);
    color: var(--card-header-btn-hover-text);
    border-color: var(--card-header-btn-hover-border);
}

.card-body {
    color: var(--text-main);
}

.list-group-item {
    background-color: var(--bg-card); /* Match card bg */
    color: var(--text-main);
    border-color: var(--border-color);
    border-left: 4px solid transparent;
    margin-bottom: 5px;
}

.list-group-item:hover, .list-group-item-action:hover {
    background-color: var(--hover-bg);
    color: var(--text-main);
}

.list-group-item-action {
    color: var(--text-main);
}

/* Status Badges - Pill Shaped */
.status-badge {
    padding: 6px 12px;
    border-radius: 50rem; /* Pill shape */
    font-weight: 600;
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.5px;
    color: white; /* Default text color */
}

/* Project Phase Status Badges */
.status-planning, .status-design {
    background-color: var(--kromeka-grey);
    color: white;
}

.status-engineering {
    background-color: #0d6efd;
    color: white;
}

.status-manufacturing {
    background-color: var(--kromeka-yellow);
    color: var(--kromeka-dark);
}

.status-installation {
    background-color: #fd7e14;
    color: white;
}

.status-startup {
    background-color: #0dcaf0;
    color: var(--kromeka-dark);
}

.status-finish, .status-completed, .status-delivered {
    background-color: #198754;
    color: white;
}

/* Critical/Error: Firebrick (#af161e), White text */
.status-on_hold, .status-maintenance {
    background-color: var(--kromeka-red);
    color: white;
}

/* Legacy: map in_progress to manufacturing color for any cached pages */
.status-in_progress {
    background-color: var(--kromeka-yellow);
    color: var(--kromeka-dark);
}

/* Project number badge on dashboard and lists - always red, white text, readable on hover and in both themes */
.badge-project-id {
    background-color: #af161e !important;
    background-color: var(--kromeka-red) !important;
    color: #fff !important;
}

.list-group-item-action .badge-project-id {
    background-color: #af161e !important;
    background-color: var(--kromeka-red) !important;
    color: #fff !important;
}

.list-group-item-action:hover .badge-project-id,
.list-group-item-action:focus .badge-project-id,
.list-group-item-action:focus-visible .badge-project-id {
    background-color: #af161e !important;
    background-color: var(--kromeka-red) !important;
    color: #fff !important;
}

[data-theme="dark"] .list-group-item-action .badge-project-id,
[data-theme="dark"] .list-group-item-action:hover .badge-project-id,
[data-theme="dark"] .list-group-item-action:focus .badge-project-id,
[data-theme="dark"] .list-group-item-action:focus-visible .badge-project-id {
    background-color: #af161e !important;
    background-color: var(--kromeka-red) !important;
    color: #fff !important;
}

.clickable-row .badge-project-id,
.clickable-row:hover .badge-project-id {
    background-color: #af161e !important;
    background-color: var(--kromeka-red) !important;
    color: #fff !important;
}

[data-theme="dark"] .clickable-row .badge-project-id,
[data-theme="dark"] .clickable-row:hover .badge-project-id {
    background-color: #af161e !important;
    background-color: var(--kromeka-red) !important;
    color: #fff !important;
}

/* Buttons */
.btn-primary {
    background-color: var(--kromeka-red);
    border-color: var(--kromeka-red);
    border-radius: 0;
    padding: 10px 20px;
    font-weight: 600;
    text-transform: uppercase;
    color: white;
}

.btn-primary:hover {
    background-color: #8a1017;
    border-color: #8a1017;
    color: white;
}

.btn-outline-secondary {
    color: var(--text-main);
    border-color: var(--border-color);
}

.btn-outline-secondary:hover {
    background-color: var(--hover-bg);
    color: var(--text-main);
    border-color: var(--text-main);
}

/* Open-style action button: yellow accent, theme-aware text for contrast */
.btn-outline-open {
    color: var(--btn-open-text);
    border-color: var(--btn-open-border);
}

.btn-outline-open:hover {
    background-color: rgba(245, 181, 31, 0.12);
    color: var(--btn-open-text);
    border-color: var(--btn-open-hover-border);
}

/* Stacked table action buttons — icon groups stay compact; text rows can widen via modifier */
.table-action-buttons {
    min-width: 0;
}

.table-action-buttons--text {
    min-width: 5rem;
}

/* Wider action column for buttons like "Configure" */
.table-action-buttons-wider {
    min-width: 7.5rem;
}

/* CPQ offer version item row: compact Configure (open-accent) icon */
.cpq-offer-item-configure-btn {
    padding: 0.25rem 0.45rem;
    line-height: 1;
}

/* CPQ offer version Cost Summary: commission % — 8ch wide, single-line row height */
.cpq-offer-version-financial-summary input.form-control-sm.cpq-offer-version-commission-pct-input {
    width: 8ch;
    max-width: 8ch;
    flex-shrink: 0;
    min-height: 0;
    height: 1.875rem;
    padding-top: 0.125rem;
    padding-bottom: 0.125rem;
    line-height: 1.25;
}

.cpq-offer-version-financial-summary .cpq-commission-pct-row {
    min-height: 0;
}

/*
 * Price Summary — Discount row: Bootstrap .form-select / .form-control default to width:100%;
 * in a flex row that forces wrap. Use fixed ch widths + nowrap so one line matches other rows.
 */
.cpq-offer-version-price-summary select.form-select-sm.cpq-offer-version-discount-type-select {
    width: 6ch !important;
    max-width: 6ch !important;
    min-width: 0 !important;
    flex: 0 0 auto;
    box-sizing: border-box;
    min-height: 0;
    height: 1.875rem;
    padding-top: 0.125rem;
    padding-bottom: 0.125rem;
    padding-left: 0.2rem;
    padding-right: 1rem;
    line-height: 1.25;
    font-size: 0.8125rem;
    background-position: right 0.12rem center;
    background-size: 0.5rem 0.35rem;
}

.cpq-offer-version-price-summary input.form-control-sm.cpq-offer-version-discount-value-input {
    width: 11ch !important;
    max-width: 11ch !important;
    min-width: 0 !important;
    flex: 0 0 auto;
    box-sizing: border-box;
    min-height: 0;
    height: 1.875rem;
    padding-top: 0.125rem;
    padding-bottom: 0.125rem;
    line-height: 1.25;
}

.cpq-offer-version-price-summary .cpq-discount-row {
    min-height: 0;
    white-space: nowrap;
    flex-wrap: nowrap !important;
    min-width: 0;
}

/* Discount row: flat flex — no flex-grow on a meta wrapper so the amount stays on one line */
.cpq-offer-version-price-summary .cpq-discount-row > .form-select,
.cpq-offer-version-price-summary .cpq-discount-row > .form-control,
.cpq-offer-version-price-summary .cpq-discount-row > span {
    flex: 0 0 auto;
}

.cpq-offer-version-price-summary td.cpq-discount-cell {
    white-space: nowrap;
}

/* Price Summary — whole-currency inputs: digits right-aligned (matches amount column) */
.cpq-offer-version-price-summary input.cpq-offer-version-shipment-price-input,
.cpq-offer-version-price-summary input.cpq-offer-version-supervision-price-input {
    text-align: end;
    font-variant-numeric: tabular-nums;
}

/* CPQ Cost / Price summary tables: secondary text left of the amount, numbers flush right */
.cpq-financial-amount-cell .cpq-financial-amount-row {
    display: flex;
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
    gap: 0.35rem;
    width: 100%;
}

.cpq-financial-amount-row .cpq-financial-amount-meta {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 0.35rem;
    flex-wrap: nowrap;
}

.cpq-financial-amount-row .cpq-financial-amount-num {
    flex: 0 0 auto;
    font-variant-numeric: tabular-nums;
}

.cpq-financial-amount-row .cpq-financial-amount-action {
    flex: 0 0 auto;
    margin-right: auto;
}

/* Consistent width for side-by-side action buttons */
.table-action-btn {
    min-width: 5.5rem;
}

/* Offer version Qty column: align Save buttons by giving unit label fixed width */
.offer-item-qty-form .offer-item-qty-unit {
    min-width: 2.5em;
    display: inline-block;
}

/* CPQ offer version Price List: hide number input spinners (qty / unit prices) */
input[type="number"].cpq-no-spinner::-webkit-outer-spin-button,
input[type="number"].cpq-no-spinner::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
input[type="number"].cpq-no-spinner {
    -moz-appearance: textfield;
    appearance: textfield;
}

/* Price list inline inputs: unit cost / list price — ~9 digits */
.cpq-offer-price-list-table input.form-control-sm.cpq-no-spinner.cpq-offer-version-unit-amount-input {
    width: 9ch;
    max-width: 9ch;
    flex-shrink: 0;
}

/* Qty — ~7 digits */
.cpq-offer-price-list-table input.form-control-sm.cpq-no-spinner.cpq-offer-version-qty-input {
    width: 7ch;
    max-width: 7ch;
    flex-shrink: 0;
}

.btn-secondary {
    background-color: var(--bg-secondary);
    border-color: var(--border-color);
    color: var(--text-main);
}

.btn-secondary:hover,
.btn-secondary:focus {
    background-color: var(--hover-bg);
    border-color: var(--kromeka-yellow);
    color: var(--text-main);
}

footer {
    border-top: 1px solid var(--footer-border);
    color: var(--text-muted) !important;
}

/* Bootstrap Utility Overrides */
.text-muted {
    color: var(--text-muted) !important;
}

.text-dark {
    color: var(--text-main) !important;
}

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

.bg-light {
    background-color: var(--hover-bg) !important;
    color: var(--text-main) !important;
}

.bg-white {
    background-color: var(--bg-card) !important;
    color: var(--text-main) !important;
}

/* Forms & Inputs */
.form-control, .form-select, textarea {
    background-color: var(--input-bg) !important;
    color: var(--input-text) !important;
    border-color: var(--input-border);
    transition: all 0.2s ease;
}

.form-control:focus, .form-select:focus {
    background-color: var(--input-focus-bg) !important;
    color: var(--input-focus-text) !important;
    border-color: var(--kromeka-yellow);
    box-shadow: 0 0 0 0.25rem rgba(245, 181, 31, 0.25);
}

.input-group-text {
    background-color: var(--input-bg);
    color: var(--input-text);
    border-color: var(--input-border);
}

.card details > summary {
    color: var(--text-main);
}

/* Select/Dropdown Styling - Make it clearly clickable and visually distinct */
.form-select {
    cursor: pointer;
    background-color: var(--input-bg) !important;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23666' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    background-size: 18px 14px;
    padding: 0.6rem 2.75rem 0.6rem 0.875rem;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    border: 2px solid var(--input-border);
    border-radius: 6px;
    font-weight: 500;
    position: relative;
    min-height: 42px;
    color: var(--input-text) !important;
    transition: all 0.2s ease;
    display: block;
    width: 100%;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}

/* Make it look like an interactive input field with clear visual feedback */
.form-select:hover {
    border-color: var(--kromeka-yellow);
    background-color: var(--hover-bg) !important;
    box-shadow: 0 3px 8px rgba(245, 181, 31, 0.25);
    transform: translateY(-1px);
    border-width: 2px;
}

.form-select:focus {
    border-color: var(--kromeka-yellow);
    background-color: var(--input-focus-bg) !important;
    box-shadow: 0 0 0 0.25rem rgba(245, 181, 31, 0.25), 0 2px 4px rgba(0,0,0,0.1);
    outline: none;
    border-width: 2px;
}

.form-select:active {
    border-color: var(--kromeka-red);
    transform: translateY(0);
    box-shadow: 0 1px 2px rgba(0,0,0,0.1);
}

/* Dark mode specific styling */
[data-theme="dark"] .form-select {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23e0e0e0' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
    border: 2px solid var(--input-border);
    background-color: var(--input-bg) !important;
    box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}

[data-theme="dark"] .form-select:hover {
    border-color: var(--kromeka-yellow);
    background-color: var(--hover-bg) !important;
    box-shadow: 0 3px 8px rgba(245, 181, 31, 0.35);
}

[data-theme="dark"] .form-select:focus {
    background-color: var(--input-focus-bg) !important;
    box-shadow: 0 0 0 0.25rem rgba(245, 181, 31, 0.25), 0 2px 4px rgba(0,0,0,0.2);
}

/* Ensure the dropdown arrow area is clickable and styled */
.form-select option {
    background-color: var(--bg-card);
    color: var(--text-main);
    padding: 0.5rem;
}

/* Add a visual indicator on the right side */
.form-select::before {
    content: '';
    position: absolute;
    right: 0.5rem;
    top: 50%;
    transform: translateY(-50%);
    width: 20px;
    height: 20px;
    pointer-events: none;
    opacity: 0.6;
}

.form-label {
    color: var(--text-main);
    font-weight: 500;
}

/* Form helper/hint text - theme-aware so readable in dark mode */
.form-text {
    color: var(--text-muted) !important;
}

[data-theme="dark"] .form-text {
    color: var(--text-muted) !important;
}

/* Placeholder Styling */
::placeholder {
    color: var(--input-placeholder) !important;
    opacity: 1;
}

:-ms-input-placeholder {
    color: var(--input-placeholder) !important;
}

::-ms-input-placeholder {
    color: var(--input-placeholder) !important;
}

/* Dark Mode Specific Component Overrides */
[data-theme="dark"] .table {
    color: var(--text-main);
    border-color: var(--border-color);
}

[data-theme="dark"] .table > :not(caption) > * > * {
    background-color: transparent; 
    color: var(--text-main);
    border-bottom-color: var(--border-color);
}

[data-theme="dark"] .table-light {
    background-color: var(--bg-card-header);
    color: var(--text-main);
    border-color: var(--border-color);
}

[data-theme="dark"] .table-light th,
[data-theme="dark"] .table-light td {
    background-color: var(--bg-card-header);
    color: var(--text-main);
    border-color: var(--border-color);
}

.table thead th {
    color: var(--table-header-text);
}

.table .sortable-th .sortable-link,
.table .sortable-link {
    color: var(--table-sort-link) !important;
    font-weight: 600;
}

.table .sortable-th .sortable-link:hover,
.table .sortable-link:hover {
    color: var(--table-sort-link-hover) !important;
    text-decoration: underline !important;
}

.table .sortable-th .sortable-link:focus,
.table .sortable-link:focus {
    outline: 1px dotted var(--kromeka-yellow);
    outline-offset: 2px;
}

.table .sortable-th .bi-arrow-up,
.table .sortable-th .bi-arrow-down {
    color: var(--table-sort-icon);
}

.workload-task-drilldown .table thead th,
.workload-task-drilldown .table-light th {
    background-color: var(--bg-card-header);
    color: var(--table-header-text);
    border-color: var(--border-color);
}

.workload-task-drilldown .workload-task-sort-link {
    color: var(--table-sort-link) !important;
}

.workload-task-drilldown .workload-task-sort-link:hover {
    color: var(--table-sort-link-hover) !important;
}

.pagination .page-link {
    background-color: var(--pagination-bg);
    color: var(--pagination-text);
    border-color: var(--pagination-border);
}

.pagination .page-link:hover {
    background-color: var(--pagination-hover-bg);
    color: var(--pagination-hover-text);
    border-color: var(--kromeka-yellow);
}

.pagination .page-item.active .page-link {
    background-color: var(--pagination-active-bg);
    border-color: var(--pagination-active-border);
    color: var(--pagination-active-text);
}

.pagination .page-item.disabled .page-link {
    background-color: var(--pagination-disabled-bg);
    color: var(--pagination-disabled-text);
    border-color: var(--pagination-border);
}

[data-theme="dark"] .table-hover > tbody > tr:hover > * {
    background-color: var(--hover-bg);
    color: var(--text-main);
    box-shadow: inset 0 0 0 9999px var(--hover-bg); /* Force override bootstrap hover */
}

.clickable-row:hover {
    background-color: var(--hover-bg);
}

.clickable-row:hover td:first-child {
    box-shadow: inset 4px 0 0 var(--kromeka-yellow);
}

.resizable-table {
    table-layout: fixed;
}

.resizable-table thead th[data-col-key] {
    position: relative;
    /* Match JS minimum (~1.5ch); avoid columns collapsing to a single glyph */
    min-width: 1.5ch;
    overflow: hidden;
    vertical-align: middle;
    max-width: 0;
}

.resizable-table .table-col-resize-handle {
    position: absolute;
    top: 0;
    right: -2px;
    width: 8px;
    height: 100%;
    cursor: col-resize;
    user-select: none;
    z-index: 2;
}

/* Last column: keep resize grip inside the table so the card edge is not exceeded */
.resizable-table thead th[data-col-key]:last-child .table-col-resize-handle {
    right: 0;
}

.resizable-table .table-col-resize-handle:hover {
    background-color: rgba(245, 181, 31, 0.25);
}

/* ------------------------------------------------------------
   Kromeka data table widget (list pages + keyed grids)
------------------------------------------------------------ */
/* Last column gets no explicit width (JS clears it); table-layout:fixed gives it remaining space */
.table-responsive:has(.kromeka-data-table),
.kromeka-data-table-responsive {
    overflow-x: auto;
    max-width: 100%;
    width: 100%;
    min-width: 0;
}

/* Let the card constrain the table (flex/grid parents need min-width: 0 to shrink) */
.kromeka-data-table-card {
    min-width: 0;
    max-width: 100%;
}

.kromeka-data-table-card .card-body {
    min-width: 0;
}

.kromeka-data-table {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

/*
 * Sortable kromeka headers: never set display:flex on th — it overrides table-cell
 * and breaks the row (headers stack in a column). Keep th as table-cell; use
 * .kromeka-th-label-wrap (flex) inside the cell for label + icon on one line.
 */
.kromeka-data-table thead th.sortable-th {
    vertical-align: middle;
    white-space: nowrap;
}

/* Headers: single line with ellipsis (…) — no word wrap */
.kromeka-data-table thead th[data-col-key]:not(:has(.sortable-link)):not(:has(.kromeka-th-label-wrap)) {
    text-overflow: ellipsis;
    white-space: nowrap;
}

.kromeka-data-table thead th[data-col-key] .sortable-link {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.kromeka-data-table thead th[data-col-key] .kromeka-th-label-wrap {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    min-width: 0;
    width: 100%;
    max-width: 100%;
    gap: 0.25rem;
}

.kromeka-data-table thead th[data-col-key] .kromeka-th-label-wrap .sortable-link {
    flex: 1 1 auto;
    min-width: 0;
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.kromeka-data-table thead th[data-col-key].text-end .kromeka-th-label-wrap {
    justify-content: flex-end;
}

.kromeka-data-table tbody td[data-col-key] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: middle;
    max-width: 0;
}

/* Price list footer: same column width contract as body (fixed layout) — avoids misaligned totals */
.cpq-offer-version-items-table.kromeka-data-table tfoot td[data-col-key] {
    max-width: 0;
    vertical-align: top;
    white-space: normal;
    overflow: visible;
}

.kromeka-data-table tbody td.table-cell-multiline {
    white-space: normal;
    max-width: none;
}

.kromeka-data-table .table-action-buttons {
    flex-wrap: nowrap;
    justify-content: flex-end;
    gap: 0.25rem;
}

/* Icon-only row actions: square-ish hit targets, no extra horizontal padding */
.kromeka-data-table .table-action-buttons .btn.table-action-icon-btn {
    padding: 0.25rem 0.45rem;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.kromeka-data-table-card .kromeka-table-toolbar {
    gap: 0.5rem;
}

.kromeka-table-filter-summary {
    font-size: 0.8125rem;
    color: var(--text-muted, var(--kromeka-grey));
}

.kromeka-table-filter-summary strong {
    color: var(--text-main, var(--kromeka-dark));
}

body.col-resize-active {
    cursor: col-resize;
}

/* ------------------------------------------------------------
   Inline task table editing
------------------------------------------------------------ */
.inline-edit-table td[data-inline-field] {
    cursor: pointer;
    position: relative;
    min-width: 120px;
    outline: none;
}

#workload-task-inline-table td[data-inline-field],
#quick-task-inline-table td[data-inline-field],
#general-workload-task-inline-table td[data-inline-field] {
    min-width: 0;
}

.inline-edit-table td[data-inline-field]:focus-visible {
    box-shadow: inset 0 0 0 2px var(--kromeka-yellow);
}

.inline-edit-table td[data-inline-field]:hover .inline-cell-display {
    text-decoration: underline;
    text-decoration-style: dotted;
}

.inline-edit-table .inline-cell-editor {
    min-width: 100%;
}

.inline-edit-table td.inline-cell-editing {
    background: rgba(245, 181, 31, 0.12);
}

.inline-edit-table td.inline-cell-saving::after {
    content: '';
    position: absolute;
    right: 8px;
    top: 50%;
    width: 12px;
    height: 12px;
    margin-top: -6px;
    border: 2px solid var(--kromeka-grey);
    border-top-color: var(--kromeka-red);
    border-radius: 50%;
    animation: inline-cell-spin 0.7s linear infinite;
}

.inline-edit-table .inline-cell-saved {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 0.66rem;
    color: #198754;
    font-weight: 600;
}

.inline-edit-table .inline-cell-feedback {
    position: absolute;
    left: 0;
    top: calc(100% - 2px);
    z-index: 5;
    background: #dc3545;
    color: #fff;
    font-size: 0.68rem;
    border-radius: 4px;
    padding: 2px 6px;
    white-space: nowrap;
}

.inline-edit-table td.inline-cell-error {
    box-shadow: inset 0 0 0 2px #dc3545;
}

/* ------------------------------------------------------------
   Quick task table: prevent text overflow and allow header drag
------------------------------------------------------------ */
#quick-task-inline-table th,
#quick-task-inline-table td {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

#workload-task-inline-table th,
#workload-task-inline-table td {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

#general-workload-task-inline-table th,
#general-workload-task-inline-table td {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

#quick-task-inline-table td .inline-cell-display,
#quick-task-inline-table td a {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

#workload-task-inline-table td .inline-cell-display,
#workload-task-inline-table td a {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

#general-workload-task-inline-table td .inline-cell-display,
#general-workload-task-inline-table td a {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

#general-workload-task-drilldown .general-workload-toolbar {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    white-space: nowrap;
    scrollbar-width: thin;
}

#general-workload-task-drilldown .general-workload-toolbar #general-workload-task-search,
#general-workload-task-drilldown .general-workload-toolbar #general-workload-task-user-filter,
#general-workload-task-drilldown .general-workload-toolbar #general-workload-task-project-filter {
    width: 220px;
    min-width: 220px;
}

.resizable-table thead th.table-col-draggable {
    cursor: grab;
}

.resizable-table thead th.table-col-draggable.table-col-dragging {
    cursor: grabbing;
    opacity: 0.65;
}

.resizable-table thead th.table-col-drop-target {
    box-shadow: inset 2px 0 0 var(--kromeka-yellow);
}

@keyframes inline-cell-spin {
    to { transform: rotate(360deg); }
}

[data-theme="dark"] .dropdown-menu {
    background-color: var(--bg-card);
    border-color: var(--border-color);
}

[data-theme="dark"] .dropdown-item {
    color: var(--text-main);
}

[data-theme="dark"] .dropdown-item:hover {
    background-color: var(--hover-bg);
    color: var(--text-main);
}

/* ------------------------------------------------------------
   Bootstrap Modal - Theme Compatible
   Ensures modals respect dark/light theme variables.
------------------------------------------------------------ */
.modal {
    overflow: visible !important;
}

.modal-dialog {
    overflow: visible;
}

.modal-content {
    background-color: var(--bg-card) !important;
    color: var(--text-main) !important;
    border-color: var(--border-color) !important;
    overflow: visible;
}

.modal-header {
    border-bottom-color: var(--border-color) !important;
    color: var(--text-main);
}

.modal-footer {
    border-top-color: var(--border-color) !important;
}

.modal-body {
    overflow: visible;
}

[data-theme="dark"] .modal-header .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%);
}

.modal .form-label {
    color: var(--text-main);
}

[data-theme="dark"] pre {
    color: var(--text-main);
    background-color: var(--bg-body);
    border: 1px solid var(--border-color);
    padding: 10px;
}

/* Dashboard Specific Fixes */
.badge.bg-secondary {
    background-color: var(--kromeka-dark-grey) !important;
    color: white !important;
}

/* Catalog badge (offer version header): dark text on light info background for readability */
.card-header .badge.bg-info {
    color: var(--kromeka-dark) !important;
}

.department-chef-badge {
    background-color: var(--kromeka-yellow) !important;
    color: #1d1d1b !important;
}

.department-workload-header {
    background-color: var(--bg-secondary);
}

.department-workload-header-medium {
    background-color: rgba(245, 181, 31, 0.22);
}

.department-workload-header-heavy {
    background-color: rgba(175, 22, 30, 0.2);
}

[data-theme="dark"] .badge.bg-light {
    background-color: var(--hover-bg) !important;
    color: var(--text-main) !important;
}

[data-theme="dark"] .card-footer {
    border-top-color: var(--border-color);
}

/* Ensure badges display inline and don't break to new lines */
.badge {
    display: inline-block !important;
    vertical-align: baseline !important;
    white-space: nowrap !important;
}

/* Force links inside small/p tags to be inline */
.small a,
small a,
p.small a {
    display: inline !important;
}

/* ------------------------------------------------------------
   Select2 Styling (Centralized)
   ------------------------------------------------------------ */
/* Base Select2 Container */
.select2-container {
    width: 100% !important;
}

/* Keep Select2 overlays above Bootstrap modal layers on mobile/desktop */
.select2-container--open {
    z-index: 2000;
}

/* Single & Multiple Selection Box */
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
    background-color: var(--input-bg) !important;
    border: 2px solid var(--input-border) !important;
    color: var(--input-text) !important;
    min-height: 38px !important;
    padding: 4px 8px !important;
    border-radius: 0.375rem !important;
    transition: all 0.2s ease-in-out !important;
}

/* Hover State */
.select2-container--default .select2-selection--single:hover,
.select2-container--default .select2-selection--multiple:hover {
    border-color: var(--kromeka-yellow) !important;
    background-color: var(--input-hover-bg) !important;
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
}

/* Focus State */
.select2-container--default.select2-container--open .select2-selection--single,
.select2-container--default.select2-container--open .select2-selection--multiple,
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--focus .select2-selection--multiple {
    border-color: var(--kromeka-yellow) !important;
    box-shadow: 0 0 0 0.25rem rgba(245, 181, 31, 0.25) !important;
    outline: 0 !important;
}

/* Selected Text */
.select2-container--default .select2-selection--single .select2-selection__rendered,
.select2-container--default .select2-selection--multiple .select2-selection__rendered {
    color: var(--input-text) !important;
    line-height: 28px !important;
    padding-left: 0 !important;
}

/* Placeholder Text */
.select2-container--default .select2-selection--single .select2-selection__placeholder,
.select2-container--default .select2-selection--multiple .select2-selection__placeholder {
    color: var(--text-muted) !important;
}

/* Arrow Icon */
.select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 36px !important;
    right: 8px !important;
}

.select2-container--default .select2-selection--single .select2-selection__arrow b {
    border-color: var(--text-main) transparent transparent transparent !important;
    border-width: 6px 5px 0 5px !important;
}

.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
    border-color: transparent transparent var(--text-main) transparent !important;
    border-width: 0 5px 6px 5px !important;
}

/* Multiple Selection - Tags/Chips */
.select2-container--default .select2-selection--multiple .select2-selection__choice {
    background-color: var(--kromeka-red) !important;
    border: 1px solid var(--kromeka-red-dark) !important;
    color: #ffffff !important;
    padding: 2px 8px !important;
    border-radius: 0.25rem !important;
    margin: 2px !important;
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
    color: #ffffff !important;
    margin-right: 5px !important;
    font-weight: bold !important;
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
    color: var(--kromeka-yellow) !important;
}

/* Dropdown Container */
.select2-dropdown {
    background-color: var(--bg-card) !important;
    border: 2px solid var(--kromeka-yellow) !important;
    border-radius: 0.375rem !important;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
}

/* Search Input in Dropdown */
.select2-container--default .select2-search--dropdown .select2-search__field {
    background-color: var(--input-bg) !important;
    border: 2px solid var(--input-border) !important;
    color: var(--input-text) !important;
    padding: 6px 10px !important;
    border-radius: 0.25rem !important;
    margin: 8px !important;
    width: calc(100% - 16px) !important;
}

.select2-container--default .select2-search--dropdown .select2-search__field:focus {
    border-color: var(--kromeka-yellow) !important;
    outline: 0 !important;
}

/* Dropdown Results */
.select2-container--default .select2-results__option {
    background-color: var(--bg-card) !important;
    color: var(--text-main) !important;
    padding: 8px 12px !important;
}

/* Highlighted/Hover Option */
.select2-container--default .select2-results__option--highlighted[aria-selected],
.select2-container--default .select2-results__option[aria-selected=true]:hover {
    background-color: var(--kromeka-red) !important;
    color: #ffffff !important;
}

/* Selected Option (in dropdown) */
.select2-container--default .select2-results__option[aria-selected=true] {
    background-color: var(--kromeka-grey) !important;
    color: #ffffff !important;
}

/* Disabled State */
.select2-container--default .select2-selection--single.select2-selection--disabled,
.select2-container--default .select2-selection--multiple.select2-selection--disabled {
    background-color: var(--bg-secondary) !important;
    cursor: not-allowed !important;
    opacity: 0.6 !important;
}

/* Clear Button */
.select2-container--default .select2-selection--single .select2-selection__clear {
    color: var(--text-muted) !important;
    margin-right: 10px !important;
}

.select2-container--default .select2-selection--single .select2-selection__clear:hover {
    color: var(--kromeka-red) !important;
}

/* Message Tags - Interactive and Clickable */
.message-tag {
    display: inline-block;
    padding: 4px 10px;
    margin: 2px 4px 2px 0;
    border-radius: 50rem; /* Pill shape */
    font-size: 0.75rem;
    font-weight: 500;
    color: white;
    background-color: var(--kromeka-grey);
    cursor: pointer;
    transition: all 0.2s ease;
    text-decoration: none;
    border: 1px solid transparent;
}

.message-tag:hover {
    transform: translateY(-1px);
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
    text-decoration: none;
    color: white;
    opacity: 0.9;
}

.message-tag.active {
    border-color: var(--kromeka-yellow);
    box-shadow: 0 0 0 2px rgba(245, 181, 31, 0.3);
}

.message-tag i {
    margin-right: 4px;
    font-size: 0.7rem;
}

/* Clickable navigation tags */
.message-tag-navigate,
.chat-tag-link {
    text-decoration: none !important;
    transition: all 0.2s ease;
}

.message-tag-navigate:hover,
.chat-tag-link:hover {
    transform: translateY(-1px);
    box-shadow: 0 3px 6px rgba(0,0,0,0.2);
    opacity: 0.9;
    text-decoration: none !important;
    color: white !important;
}

/* Tag Filter Section */
.tag-filter-section {
    background-color: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    padding: 15px;
    margin-bottom: 20px;
}

.tag-filter-section h6 {
    color: var(--text-main);
    margin-bottom: 10px;
    font-size: 0.9rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.selected-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
}

.selected-tag {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: 50rem;
    font-size: 0.75rem;
    background-color: var(--kromeka-yellow);
    color: var(--kromeka-dark);
    font-weight: 600;
}

.selected-tag .remove-tag {
    margin-left: 6px;
    cursor: pointer;
    font-weight: bold;
    opacity: 0.7;
}

.selected-tag .remove-tag:hover {
    opacity: 1;
}

/* Autocomplete Search Inputs */
.autocomplete-input {
    position: relative;
}

.autocomplete-results {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background-color: var(--bg-card);
    border: 1px solid var(--border-color);
    border-top: none;
    border-radius: 0 0 4px 4px;
    max-height: 200px;
    overflow-y: auto;
    z-index: 1000;
    display: none;
}

.autocomplete-results.show {
    display: block;
}

.autocomplete-item {
    padding: 10px 15px;
    cursor: pointer;
    border-bottom: 1px solid var(--border-color);
    color: var(--text-main);
}

.autocomplete-item:hover {
    background-color: var(--hover-bg);
}

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

.autocomplete-item.selected {
    background-color: var(--kromeka-yellow);
    color: var(--kromeka-dark);
}

/* ------------------------------------------------------------
   Messaging Inbox (Telegram/WhatsApp inspired)
------------------------------------------------------------ */
.chat-shell {
    display: grid;
    grid-template-columns: 340px 1fr;
    gap: 1rem;
    min-height: 72vh;
    max-height: calc(100vh - 150px);
}

.chat-sidebar,
.chat-main {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
}

.chat-sidebar {
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.chat-sidebar-header {
    padding: 0.75rem;
    border-bottom: 1px solid var(--border-color);
}

.chat-filter-tags {
    max-height: 84px;
    overflow-y: auto;
}

.chat-section {
    padding: 0.55rem;
    border-bottom: 1px solid var(--border-color);
}

.chat-section-collapse {
    border-bottom: 1px solid var(--border-color);
    background: var(--bg-card);
}

.chat-section-collapse:last-child {
    border-bottom: 0;
}

.chat-section-collapse > summary {
    list-style: none;
}

.chat-section-collapse > summary::-webkit-details-marker {
    display: none;
}

.chat-section-header {
    padding: 0.55rem 0.75rem;
    font-size: 0.82rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--text-main);
    cursor: pointer;
    user-select: none;
    border-top: 1px solid var(--border-color);
    border-bottom: 1px solid var(--border-color);
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.86) 0%, rgba(226, 230, 234, 0.96) 100%);
    display: flex;
    align-items: center;
    justify-content: space-between;
    position: relative;
    padding-left: 1.75rem;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.chat-section-header.has-unread {
    color: var(--kromeka-red);
}

.chat-section-unread {
    margin-left: 0.45rem;
}

.chat-section-collapse:first-of-type .chat-section-header {
    border-top: 0;
}

.chat-section-header::after {
    content: '\25B8';
    font-size: 1.18rem;
    font-weight: 700;
    color: var(--text-main);
    opacity: 0.95;
    transition: transform 0.2s ease, color 0.2s ease;
    position: absolute;
    left: 0.72rem;
    top: 50%;
    transform: translateY(-50%);
    line-height: 1;
}

.chat-section-collapse[open] .chat-section-header::after {
    transform: translateY(-50%) rotate(90deg);
    color: var(--kromeka-yellow);
}

.chat-section-collapse[open] > .chat-section-header {
    color: var(--kromeka-red);
    border-top-color: rgba(175, 22, 30, 0.44);
    border-bottom-color: rgba(175, 22, 30, 0.44);
    background: linear-gradient(180deg, rgba(175, 22, 30, 0.18) 0%, rgba(175, 22, 30, 0.06) 100%);
    box-shadow: inset 3px 0 0 rgba(175, 22, 30, 0.9);
}

.chat-section-collapse .chat-section {
    padding-top: 0.6rem;
}

.chat-section:last-child {
    border-bottom: 0;
}

.chat-section-title {
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-muted);
    margin-bottom: 0.5rem;
}

.chat-new-dm-controls {
    display: grid;
    gap: 0.45rem;
}

.chat-new-dm-open {
    width: 100%;
}

.chat-thread-list {
    display: grid;
    gap: 0.25rem;
}

.chat-thread-item {
    display: block;
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 0.35rem;
    padding: 0.32rem 0.45rem;
    color: var(--text-main);
    text-decoration: none;
    position: relative;
}

.chat-thread-item:hover {
    text-decoration: none;
    border-color: var(--kromeka-yellow);
}

.chat-thread-item.active {
    border-color: var(--kromeka-red);
    box-shadow: 0 0 0 1px rgba(175, 22, 30, 0.3);
}

.chat-thread-item-unread {
    border-color: rgba(175, 22, 30, 0.32);
    background: linear-gradient(to right, rgba(175, 22, 30, 0.08), var(--bg-secondary));
}

.chat-thread-item-unread .chat-thread-preview {
    color: var(--text-main);
    font-weight: 600;
}

.chat-thread-main {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.35rem;
}

.chat-thread-preview {
    color: var(--text-muted);
    font-size: 0.74rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin-top: 0.05rem;
}

.chat-customer-group summary {
    list-style: none;
}

.chat-customer-group summary::-webkit-details-marker {
    display: none;
}

.chat-project-list {
    margin: 0.25rem 0 0.25rem 0.9rem;
    display: grid;
    gap: 0.3rem;
}

.chat-thread-item-project {
    border-style: dashed;
}

.chat-main {
    display: flex;
    flex-direction: column;
    min-height: 72vh;
    max-height: calc(100vh - 150px);
    overflow: hidden;
}

.chat-main-header {
    padding: 0.55rem 0.8rem;
    border-bottom: 1px solid var(--border-color);
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.chat-messages,
.chat-widget-card .chat-messages-container {
    flex: 1;
    overflow-y: auto;
    padding: 0.55rem 0.65rem;
    background-color: var(--bg-body);
    background-image:
        linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, rgba(242, 245, 248, 0.24) 100%),
        radial-gradient(rgba(26, 26, 26, 0.045) 0.55px, transparent 0.55px);
    background-size: auto, 15px 15px;
    background-position: 0 0, 0 0;
}

.chat-widget-card .chat-messages-container {
    scroll-behavior: smooth;
    padding-right: 0.5rem;
    min-height: 0;
    margin-bottom: 0.4rem !important;
}

.chat-widget-card .chat-messages-container::-webkit-scrollbar { width: 8px; }
.chat-widget-card .chat-messages-container::-webkit-scrollbar-track { background: transparent; border-radius: 4px; }
.chat-widget-card .chat-messages-container::-webkit-scrollbar-thumb { background: var(--kromeka-grey); border-radius: 4px; opacity: 0.5; }
.chat-widget-card .chat-messages-container::-webkit-scrollbar-thumb:hover { background: var(--kromeka-red); opacity: 1; }

.chat-bubble-row {
    display: flex;
    margin-bottom: 0.35rem;
    animation: chatBubbleFadeIn 0.3s ease;
}

@keyframes chatBubbleFadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.chat-bubble-row.is-own {
    justify-content: flex-end;
}

.chat-bubble {
    width: fit-content;
    min-width: 0;
    max-width: 74%;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(246, 248, 250, 0.98) 100%);
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
    padding: 0.18rem 0.45rem;
    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
    transition: box-shadow 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.chat-bubble-row.is-own .chat-bubble {
    border-color: rgba(175, 22, 30, 0.5);
    background: linear-gradient(180deg, rgba(175, 22, 30, 0.18) 0%, rgba(175, 22, 30, 0.11) 100%);
    box-shadow: 0 4px 12px rgba(175, 22, 30, 0.16);
}

.chat-bubble-row:not(.is-own) .chat-bubble {
    border-color: rgba(20, 20, 20, 0.12);
}

.chat-bubble:hover {
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
}

.chat-bubble-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.04rem;
}

.chat-bubble-head-meta {
    display: inline-flex;
    align-items: center;
    gap: 0.28rem;
}

.chat-bubble-head-meta small,
.chat-bubble-head-meta .text-muted {
    font-size: 0.68rem;
}

.chat-icon-btn,
.chat-meta-indicator-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.1rem;
    height: 1.1rem;
    border: 0;
    background: transparent;
    color: var(--text-muted);
    font-size: 0.78rem;
    border-radius: 999px;
    line-height: 1;
    padding: 0;
}

.chat-icon-btn:hover {
    color: var(--text-main);
    background: rgba(0, 0, 0, 0.08);
}

.chat-meta-indicator-icon {
    opacity: 0.85;
}

.chat-bubble-content {
    white-space: pre-wrap;
    line-height: 1.35;
    font-size: 0.88rem;
    margin-top: 0;
    margin-bottom: 0;
    padding-top: 0;
    padding-bottom: 0;
    text-align: left;
}

.chat-bubble-highlight {
    box-shadow: 0 0 0 2px rgba(245, 181, 31, 0.55);
}

.chat-inline-indicators {
    margin-top: 0.2rem;
    display: flex;
    gap: 0.35rem;
    flex-wrap: wrap;
}

.chat-inline-indicator {
    font-size: 0.7rem;
    color: var(--text-muted);
    border: 1px solid var(--border-color);
    border-radius: 999px;
    padding: 0.08rem 0.42rem;
}

.chat-reply-btn {
    color: var(--text-muted);
    font-size: 0.78rem;
    opacity: 0.9;
}

.chat-reply-btn:hover {
    color: var(--text-main);
    background: rgba(0, 0, 0, 0.08);
}

.chat-reply-quote {
    background: rgba(0, 0, 0, 0.08);
    border-left: 3px solid var(--kromeka-yellow);
    border-radius: 0.35rem;
    padding: 0.12rem 0.3rem;
    margin-bottom: 0.12rem;
    margin-top: 0.04rem;
    cursor: pointer;
    text-align: left;
}

.chat-reply-quote strong {
    display: block;
    font-size: 0.72rem;
    line-height: 1.2;
}

.chat-reply-quote span {
    display: block;
    opacity: 0.78;
    font-size: 0.72rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.chat-reply-preview {
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-left: 3px solid var(--kromeka-yellow);
    background: var(--bg-secondary);
    border-radius: 0.35rem;
    margin-bottom: 0.35rem;
    padding: 0.24rem 0.4rem;
    font-size: 0.74rem;
}

.chat-reply-cancel {
    background: transparent;
    border: 0;
    color: var(--text-muted);
}

.chat-reply-cancel:hover {
    color: var(--kromeka-red);
}

.chat-bubble-tags {
    margin-top: 0.2rem;
}

.chat-tags-toggle {
    cursor: pointer;
}

.chat-bubble-attachments {
    margin-top: 0.2rem;
}

.chat-meta-wrap {
    margin-top: 0.2rem;
}

.chat-attachment-link {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-right: 0.5rem;
}

.chat-composer {
    border-top: 1px solid var(--border-color);
    padding: 0.4rem 0.5rem;
    background: var(--bg-card);
    position: sticky;
    bottom: 0;
    z-index: 3;
}

.chat-composer textarea.form-control {
    min-height: 38px;
    max-height: 96px;
    resize: vertical;
    padding: 0.35rem 0.5rem;
}

.chat-composer .form-select,
.chat-composer .form-control-sm,
.chat-composer .btn {
    font-size: 0.82rem;
}

.chat-composer .btn {
    padding: 0.28rem 0.5rem;
}

.chat-composer .chat-compose-advanced {
    margin-top: 0.3rem;
}

.chat-composer .chat-compose-advanced summary {
    list-style: none;
    cursor: pointer;
    color: var(--text-muted);
    font-size: 0.72rem;
    user-select: none;
}

.chat-composer .chat-compose-advanced summary::-webkit-details-marker {
    display: none;
}

.chat-composer .chat-compose-advanced[open] summary {
    margin-bottom: 0.3rem;
}

.chat-bottom-anchor {
    height: 1px;
    width: 100%;
}

.chat-new-indicator {
    position: sticky;
    bottom: 0.8rem;
    margin: 0 auto 0.4rem auto;
    display: flex;
    align-items: center;
    gap: 0.2rem;
    border: 1px solid rgba(175, 22, 30, 0.4);
    background: var(--bg-card);
    color: var(--text-main);
    border-radius: 999px;
    padding: 0.25rem 0.75rem;
    font-size: 0.82rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
    z-index: 2;
}

[data-theme="dark"] .badge.bg-dark-subtle.text-body.border {
    background-color: var(--bg-secondary) !important;
    color: var(--text-main) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .chat-section-header {
    background: linear-gradient(180deg, rgba(50, 53, 58, 0.96) 0%, rgba(31, 34, 38, 0.98) 100%);
}

[data-theme="dark"] .chat-section-collapse[open] > .chat-section-header {
    background: linear-gradient(180deg, rgba(175, 22, 30, 0.4) 0%, rgba(60, 14, 17, 0.8) 100%);
    color: #ffd5d7;
}

[data-theme="dark"] .chat-messages,
[data-theme="dark"] .chat-widget-card .chat-messages-container {
    background-color: var(--bg-body);
    background-image:
        linear-gradient(180deg, rgba(28, 31, 36, 0.52) 0%, rgba(21, 24, 28, 0.72) 100%),
        radial-gradient(rgba(255, 255, 255, 0.075) 0.5px, transparent 0.5px);
    background-size: auto, 16px 16px;
}

[data-theme="dark"] .chat-bubble {
    background: linear-gradient(180deg, rgba(56, 60, 66, 0.96) 0%, rgba(46, 50, 56, 0.98) 100%);
    border-color: rgba(255, 255, 255, 0.14);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.28);
}

[data-theme="dark"] .chat-bubble-row.is-own .chat-bubble {
    background: linear-gradient(180deg, rgba(175, 22, 30, 0.46) 0%, rgba(103, 20, 26, 0.68) 100%);
    border-color: rgba(245, 181, 31, 0.38);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.36);
}

[data-theme="dark"] .chat-icon-btn:hover,
[data-theme="dark"] .chat-reply-btn:hover {
    background: rgba(255, 255, 255, 0.12);
}

.chat-empty-state {
    margin: auto;
    text-align: center;
    color: var(--text-muted);
}

/* ------------------------------------------------------------
   Chat Widget (embedded – Customer, Project, Machine)
   Shares bubble structure with Messages module; widget-specific layout.
------------------------------------------------------------ */
.chat-widget-card {
    position: relative;
    transition: all 0.3s ease;
}

.chat-widget-header {
    cursor: move;
    user-select: none;
}

.chat-widget-icon-btn {
    color: var(--text-card-header);
    opacity: 0.92;
}

.chat-widget-icon-btn:hover,
.chat-widget-icon-btn:focus {
    color: var(--kromeka-yellow);
    opacity: 1;
}

.chat-widget-body {
    transition: max-height 0.3s ease;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.chat-widget-body.collapsed {
    max-height: 0 !important;
    min-height: 0 !important;
    padding: 0 !important;
    border: none;
}

.chat-resize-handle {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 8px;
    background: linear-gradient(to bottom, transparent, var(--border-color));
    cursor: ns-resize;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10;
    opacity: 0;
    transition: opacity 0.2s ease;
}

.chat-widget-card:hover .chat-resize-handle {
    opacity: 1;
}

.chat-resize-handle i {
    color: var(--text-muted);
    font-size: 0.8rem;
}

.chat-resize-handle:hover {
    background: linear-gradient(to bottom, transparent, var(--kromeka-yellow));
}

.chat-tag-select { transition: transform 0.2s ease; }
.chat-tag-select:hover { transform: translateY(-1px); }

.chat-widget-card .chat-bubble-row {
    margin-bottom: 0.2rem;
}

.chat-widget-card .chat-bubble {
    max-width: 80%;
    padding: 0.12rem 0.25rem;
    text-align: left;
}

.chat-widget-card .chat-bubble-head {
    margin-bottom: 0;
    gap: 0.25rem;
}

.chat-widget-card .chat-bubble-head-meta small,
.chat-widget-card .chat-bubble-head-meta .text-muted {
    font-size: 0.6rem;
    line-height: 1;
}

.chat-widget-card .chat-bubble-head-meta {
    gap: 0.18rem;
}

.chat-widget-card .chat-icon-btn,
.chat-widget-card .chat-reply-btn {
    width: 1rem;
    height: 1rem;
    font-size: 0.7rem;
}

.chat-widget-card .chat-bubble-content,
.chat-widget-card .chat-bubble-row.is-own .chat-bubble-content {
    text-align: left;
    margin-top: 0;
    margin-bottom: 0;
    padding-top: 0;
    padding-bottom: 0;
    line-height: 1.22;
}

.chat-widget-card .chat-reply-quote {
    margin-top: 0.02rem;
    margin-bottom: 0.06rem;
    padding: 0.06rem 0.2rem;
}

.chat-widget-card .chat-bubble-tags,
.chat-widget-card .chat-bubble-attachments,
.chat-widget-card .chat-meta-wrap {
    margin-top: 0.12rem;
}

.chat-widget-card .chat-reply-preview {
    background: var(--bg-secondary);
    border-left: 3px solid var(--kromeka-yellow);
    border-radius: 4px;
    padding: 4px 8px;
    margin-bottom: 6px;
    font-size: 0.74rem;
    color: var(--text-main);
}

.chat-widget-card .chat-reply-preview i.bi-reply-fill {
    color: var(--kromeka-yellow);
}

.chat-widget-card .chat-reply-cancel {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--text-muted);
    padding: 2px 4px;
}

.chat-widget-card .chat-reply-cancel:hover { color: var(--kromeka-red); }

.chat-file-preview {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 6px 0;
}

.chat-file-preview-item {
    display: flex;
    align-items: center;
    gap: 4px;
    background: var(--bg-secondary);
    border-radius: 4px;
    padding: 3px 8px;
    font-size: 0.75rem;
    color: var(--text-main);
}

.chat-file-preview-item .remove-file {
    cursor: pointer;
    color: var(--text-muted);
    margin-left: 4px;
    font-weight: bold;
}

.chat-file-preview-item .remove-file:hover { color: var(--kromeka-red); }
.chat-file-preview-item .file-size-warn { color: var(--kromeka-yellow); font-weight: 600; }

.chat-bubble-attachments .chat-attachment-thumb {
    max-width: 180px;
    max-height: 140px;
    border-radius: 6px;
    object-fit: cover;
    cursor: pointer;
    transition: transform 0.15s;
}

.chat-bubble-attachments .chat-attachment-thumb:hover { transform: scale(1.03); }

.chat-attachment-img-link {
    display: inline-block;
}

.chat-bubble-attachments .chat-attachment-video {
    max-width: 220px;
    max-height: 160px;
    border-radius: 6px;
}

.chat-attachment-file {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: rgba(0, 0, 0, 0.1);
    border-radius: 4px;
    padding: 4px 10px;
    font-size: 0.8rem;
    color: inherit;
    text-decoration: none;
    max-width: 200px;
}

.chat-attachment-file span {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.chat-attachment-file:hover { text-decoration: underline; }

.chat-bubble-row:not(.is-own) .chat-attachment-file {
    background: rgba(0, 0, 0, 0.06);
}

[data-theme="dark"] .chat-bubble-row:not(.is-own) .chat-attachment-file {
    background: rgba(255, 255, 255, 0.08);
}

.chat-input-area {
    background-color: var(--bg-card);
    margin: 0 -15px -15px -15px;
    padding: 8px 12px !important;
    position: sticky;
    bottom: 0;
    z-index: 4;
}

.chat-input-area textarea.form-control {
    min-height: 34px;
    max-height: 84px;
    resize: vertical;
    padding: 0.3rem 0.45rem;
}

.chat-input-area .btn,
.chat-input-area .form-control,
.chat-input-area .form-select {
    font-size: 0.82rem;
}

.chat-input-area .btn {
    padding: 0.28rem 0.5rem;
}

.chat-tag-section { margin-top: 8px; }

.chat-widget-card .chat-empty-state { opacity: 0.6; }

.chat-scope-chips {
    display: flex;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.chat-scope-chip {
    display: inline-flex;
    align-items: center;
    padding: 0.2rem 0.6rem;
    border: 1px solid var(--border-color);
    border-radius: 999px;
    font-size: 0.75rem;
    text-decoration: none;
    color: var(--text-muted);
}

.chat-scope-chip.active {
    border-color: var(--kromeka-yellow);
    color: var(--text-main);
    background: rgba(245, 181, 31, 0.12);
}

.chat-thread-links {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.chat-widget-card .chat-meta-toggle {
    font-size: 0.68rem;
    opacity: 0.8;
    text-decoration: none;
}

.chat-widget-card .chat-meta-toggle:hover {
    opacity: 1;
    text-decoration: none;
}

.chat-thread-links a {
    font-size: 0.68rem;
    opacity: 0.85;
    text-decoration: none;
}

.chat-thread-links a:hover {
    text-decoration: underline;
    opacity: 1;
}

.chat-tag {
    font-size: 0.65rem;
    padding: 3px 8px;
    margin-right: 4px;
    margin-bottom: 4px;
}

@media (max-width: 768px) {
    .chat-widget-card .chat-bubble { max-width: 85%; }
    .chat-widget-body { max-height: 58vh; }
    .chat-input-area {
        padding-bottom: max(8px, env(safe-area-inset-bottom));
    }
}

.nav-unread-badge {
    margin-left: 0.3rem;
    vertical-align: middle;
}

#bookmarkNavDropdown {
    min-width: 2rem;
}

@media (min-width: 992px) {
    #bookmarkNavDropdown {
        text-align: center;
    }
}

/* ------------------------------------------------------------
 * Main app navbar — mobile: icon row + full-width links; lg+ order
 * ------------------------------------------------------------ */
@media (max-width: 991.98px) {
    #navbarNav .kromeka-navbar-nav {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        column-gap: 1rem;
        row-gap: 0.5rem;
    }

    #navbarNav .kromeka-navbar-nav .kromeka-nav-icon {
        flex: 0 0 auto;
    }

    #navbarNav .kromeka-navbar-nav .kromeka-nav-text {
        flex: 0 0 100%;
    }
}

@media (min-width: 992px) {
    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-1 {
        order: 1;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-2 {
        order: 2;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-3 {
        order: 3;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-4 {
        order: 4;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-5 {
        order: 5;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-6 {
        order: 6;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-7 {
        order: 7;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-8 {
        order: 8;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-9 {
        order: 9;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-10 {
        order: 10;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-11 {
        order: 11;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-12 {
        order: 12;
    }

    #navbarNav .kromeka-navbar-nav > .kromeka-nav-lg-order-13 {
        order: 13;
    }
}

.bookmark-nav-link {
    max-width: 320px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bookmark-display-name-cell {
    min-width: 220px;
    cursor: text;
    outline: none;
}

.bookmark-display-name-cell:focus {
    background-color: var(--input-hover-bg);
    box-shadow: inset 0 0 0 1px var(--kromeka-yellow);
}

.bookmark-cell-saving {
    opacity: 0.7;
}

@media (max-width: 991px) {
    .chat-shell {
        grid-template-columns: 1fr;
    }

    .chat-sidebar-mobile-hidden {
        display: none;
    }

    .chat-main-mobile-hidden {
        display: none;
    }

    .chat-bubble {
        max-width: 92%;
    }

    .chat-main-header {
        position: sticky;
        top: 0;
        background: var(--bg-card);
        z-index: 4;
    }

    .chat-composer {
        padding-bottom: max(0.45rem, env(safe-area-inset-bottom));
    }

    .chat-main,
    .chat-shell {
        max-height: none;
    }
}

/* ------------------------------------------------------------
   Gantt / Planning – Unified Row Architecture
   Each row is a single CSS Grid element spanning task + timeline.
   One scroll container handles both vertical and horizontal scroll.
------------------------------------------------------------ */
.gantt-wrapper,
.gantt-overview {
    --gantt-week-width: 70px;
    --gantt-row-height: 37px;
    --gantt-task-width: 320px;
    background: var(--bg-card);
}

.gantt-classic {
    border-top: 1px solid var(--border-color);
}

/* Single scroll container for both axes */
.gantt-container {
    overflow-y: auto;
    overflow-x: hidden;
    max-height: 70vh;
    position: relative;
    scrollbar-width: thin;
}

/* Header and body rows share the same grid columns */
.gantt-header,
.gantt-row {
    display: grid;
    grid-template-columns: var(--gantt-task-width, 320px) var(--gantt-timeline-width, 2000px);
}

/* Sticky header row (stays at top on vertical scroll) */
.gantt-header {
    position: sticky;
    top: 0;
    z-index: 10;
    border-bottom: 1px solid var(--border-color);
}

/* Sticky left cells (stay at left on horizontal scroll) */
.gantt-row-task,
.gantt-header-task {
    position: sticky;
    left: 0;
    z-index: 2;
}

/* Header task cell: top-left corner, highest z-index */
.gantt-header-task {
    z-index: 12;
    background: var(--bg-secondary);
    padding: 4px 10px;
    font-weight: 700;
    color: var(--text-main);
    display: flex;
    align-items: center;
    min-height: var(--gantt-row-height);
    border-right: 1px solid var(--border-color);
}

/* Header timeline cell */
.gantt-header-timeline {
    background: var(--bg-secondary);
}

/* Gantt body: relative positioning for today line, SVG overlays */
.gantt-body {
    position: relative;
}

.gantt-body.gantt-week-separators::before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: var(--gantt-task-width, 320px);
    width: var(--gantt-timeline-width, 2000px);
    pointer-events: none;
    z-index: 1;
    background-image: repeating-linear-gradient(
        to right,
        rgba(0, 0, 0, 0.1),
        rgba(0, 0, 0, 0.1) 1px,
        transparent 1px,
        transparent var(--gantt-week-width)
    );
}

[data-theme="dark"] .gantt-body.gantt-week-separators::before {
    background-image: repeating-linear-gradient(
        to right,
        rgba(255, 255, 255, 0.2),
        rgba(255, 255, 255, 0.2) 1px,
        transparent 1px,
        transparent var(--gantt-week-width)
    );
}

.gantt-weeks {
    display: flex;
    min-height: var(--gantt-row-height, 37px);
}

.gantt-week {
    flex: 0 0 auto;
    text-align: center;
    padding: 4px 2px;
    border-right: 1px solid var(--border-color);
    color: var(--text-muted);
    background: var(--bg-secondary);
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.gantt-week.gantt-weekend {
    background: rgba(245, 181, 31, 0.1);
}

[data-theme="dark"] .gantt-week.gantt-weekend {
    background: rgba(245, 181, 31, 0.15);
}

.gantt-week.gantt-week-start {
    border-left: 2px solid var(--kromeka-yellow);
}

.gantt-week-number {
    font-size: 0.55rem;
    font-weight: 700;
    color: var(--kromeka-yellow);
    background: rgba(175, 22, 30, 0.9);
    padding: 1px 4px;
    border-radius: 3px;
    position: absolute;
    top: 2px;
    left: 2px;
}

.gantt-day-grid .gantt-today {
    z-index: 2;
}

.gantt-bars.gantt-day-grid {
    background-image: repeating-linear-gradient(
        to right,
        rgba(0, 0, 0, 0.08),
        rgba(0, 0, 0, 0.08) 1px,
        transparent 1px,
        transparent var(--gantt-week-width)
    ) !important;
    background-size: var(--gantt-week-width) 100%;
}

[data-theme="dark"] .gantt-bars.gantt-day-grid {
    background-image: repeating-linear-gradient(
        to right,
        rgba(255, 255, 255, 0.15),
        rgba(255, 255, 255, 0.15) 1px,
        transparent 1px,
        transparent var(--gantt-week-width)
    ) !important;
    background-size: var(--gantt-week-width) 100%;
}

.gantt-bars.gantt-week-grid {
    background-image: none;
}

[data-theme="dark"] .gantt-bars.gantt-week-grid {
    background-image: none;
}

.gantt-bars.gantt-month-grid {
    background-image: repeating-linear-gradient(
        to right,
        rgba(0, 0, 0, 0.08),
        rgba(0, 0, 0, 0.08) 1px,
        transparent 1px,
        transparent var(--gantt-week-width)
    );
}

[data-theme="dark"] .gantt-bars.gantt-month-grid {
    background-image: repeating-linear-gradient(
        to right,
        rgba(255, 255, 255, 0.12),
        rgba(255, 255, 255, 0.12) 1px,
        transparent 1px,
        transparent var(--gantt-week-width)
    );
}

.gantt-week-label {
    font-weight: 700;
    color: var(--text-main);
    font-size: 0.65rem;
}

.gantt-week.gantt-weekend .gantt-week-label {
    font-size: 0.65rem;
}

.gantt-week-date {
    font-size: 0.68rem;
}

/* Unified row: fixed height, no auto-expand */
.gantt-row {
    height: var(--gantt-row-height, 37px);
    max-height: var(--gantt-row-height, 37px);
    box-sizing: border-box;
    overflow: hidden;
    border-bottom: 1px solid var(--border-color);
}

.gantt-row-task {
    padding: 2px 10px;
    background: var(--bg-card);
    border-right: 1px solid var(--border-color);
    overflow: hidden;
}

/* ---- Project rows ---- */
.gantt-row.gantt-project-row {
    border-top: 2px solid var(--border-color);
}

.gantt-row.gantt-project-row > .gantt-row-task {
    background: var(--bg-secondary);
    font-weight: 700;
    font-size: 0.88rem;
}

/* ---- Phase rows ---- */
.gantt-row.gantt-phase-row > .gantt-row-task {
    padding-left: 20px;
    font-weight: 600;
    font-size: 0.82rem;
    border-left: 3px solid var(--kromeka-red);
    background: rgba(175, 22, 30, 0.04);
}

[data-theme="dark"] .gantt-row.gantt-phase-row > .gantt-row-task {
    background: rgba(175, 22, 30, 0.08);
}

/* ---- Task rows ---- */
.gantt-row.gantt-task-row > .gantt-row-task {
    padding-left: 40px;
}

.planning-task-check {
    width: 14px !important;
    height: 14px !important;
    min-width: 14px;
    cursor: pointer;
    vertical-align: middle;
    margin-top: 0 !important;
}

/* Timeline cell */
.gantt-row-timeline {
    position: relative;
}

.gantt-row.gantt-project-row > .gantt-row-timeline {
    background: var(--bg-secondary);
}

.gantt-bars {
    position: relative;
    min-height: var(--gantt-row-height, 37px);
    background-image: repeating-linear-gradient(
        to right,
        rgba(0, 0, 0, 0.06),
        rgba(0, 0, 0, 0.06) 1px,
        transparent 1px,
        transparent var(--gantt-week-width)
    );
}

[data-theme="dark"] .gantt-bars {
    background-image: repeating-linear-gradient(
        to right,
        rgba(255, 255, 255, 0.1),
        rgba(255, 255, 255, 0.1) 1px,
        transparent 1px,
        transparent var(--gantt-week-width)
    );
}

.gantt-bar {
    position: absolute;
    top: calc((var(--gantt-row-height, 37px) - 20px) / 2);
    height: 20px;
    min-width: 10px;
    border-radius: 4px;
    border: 1.5px solid rgba(255, 255, 255, 0.45);
    box-shadow: 0 2px 8px rgba(0,0,0,0.35);
    color: white;
    overflow: hidden;
    display: flex;
    align-items: center;
    padding: 0 6px;
    font-size: 0.72rem;
    cursor: grab;
    z-index: 5;
    user-select: none;
    transition: box-shadow 0.15s, opacity 0.15s;
}

.gantt-bar:hover {
    box-shadow: 0 3px 10px rgba(0,0,0,0.25);
}

.gantt-bar.gantt-bar-active-today {
    outline: 1.5px solid var(--kromeka-yellow);
    outline-offset: 1px;
}

.gantt-bar.gantt-bar-completed {
    background-color: #3E9E5B !important;
    opacity: 0.85;
}

.gantt-bar.gantt-bar-cancelled {
    background-color: #878787 !important;
    opacity: 0.75;
}

.gantt-bar:active,
.gantt-bar.dragging {
    cursor: grabbing;
    opacity: 0.85;
    z-index: 15;
}

.gantt-bar.resizing {
    cursor: ew-resize;
}

/* Resize handles */
.gantt-resize-handle {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 10px;
    cursor: ew-resize;
    opacity: 0;
    transition: opacity 0.15s;
    z-index: 2;
}

.gantt-bar:hover .gantt-resize-handle {
    opacity: 1;
}

.gantt-resize-left {
    left: -2px;
    border-radius: 4px 0 0 4px;
    background: linear-gradient(to right, rgba(255,255,255,0.4), transparent);
}

.gantt-resize-right {
    right: -2px;
    border-radius: 0 4px 4px 0;
    background: linear-gradient(to left, rgba(255,255,255,0.4), transparent);
}

/* Dependency arrows SVG container */
.gantt-dependencies-svg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 4;
    overflow: visible;
}

.gantt-dependency-line {
    fill: none;
    stroke: var(--text-muted);
    stroke-width: 1.5;
}

.gantt-dependency-arrow {
    fill: var(--text-muted);
}

/* Floating date label while dragging/resizing bars or creating new task */
.gantt-drag-date-label {
    position: absolute;
    background: var(--bg-card);
    border: 2px solid var(--kromeka-red);
    color: var(--text-main);
    padding: 6px 12px;
    border-radius: 6px;
    font-size: 0.85rem;
    font-weight: 600;
    white-space: nowrap;
    z-index: 100;
    pointer-events: none;
    box-shadow: 0 4px 12px rgba(0,0,0,0.3);
    transform: translateY(-100%);
    margin-top: -6px;
}

.gantt-touch-date-tag {
    position: fixed;
    background: var(--bg-card);
    border: 2px solid var(--kromeka-red);
    color: var(--text-main);
    padding: 6px 10px;
    border-radius: 6px;
    font-size: 0.82rem;
    font-weight: 600;
    white-space: nowrap;
    z-index: 1100;
    pointer-events: none;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.28);
    transform: translateY(-100%);
}

.gantt-bar-progress {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    background: rgba(255,255,255,0.16);
}

.gantt-bar-label {
    position: relative;
    z-index: 1;
    font-weight: 700;
    font-size: 0.68rem;
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.7);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    letter-spacing: 0.02em;
}

.gantt-bar-empty {
    padding: 6px 10px;
    color: var(--text-muted);
    font-size: 0.78rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.gantt-bar-out-range {
    position: absolute;
    top: calc((var(--gantt-row-height, 37px) - 12px) / 2);
    width: 12px;
    height: 12px;
    border-radius: 3px;
    background: var(--kromeka-red);
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
    opacity: 0.9;
}

.gantt-bar-out-range.is-before {
    left: 0;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.gantt-bar-out-range.is-after {
    right: 0;
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.gantt-bar-out-range.is-outside {
    left: 0;
}

.gantt-phase-lifecycle-bar,
.gantt-phase-summary-bar {
    pointer-events: none;
    position: absolute;
    top: calc((var(--gantt-row-height, 37px) - 22px) / 2);
    height: 22px;
    border-radius: 4px;
}

.gantt-zoom-select {
    min-width: 120px;
}

.gantt-zoom-select select,
.gantt-zoom-select .select2-selection {
    box-shadow: none;
}

/* Mobile: shrink task column */
@media (max-width: 991px) {
    .gantt-wrapper,
    .gantt-overview {
        --gantt-task-width: 200px;
    }
}

@media (max-width: 575px) {
    .gantt-wrapper,
    .gantt-overview {
        --gantt-task-width: 160px;
    }
}

/* Alternate project group colors */
.gantt-project-group:nth-child(even) > .gantt-row > .gantt-row-task {
    background: rgba(0, 0, 0, 0.02);
}

[data-theme="dark"] .gantt-project-group:nth-child(even) > .gantt-row > .gantt-row-task {
    background: rgba(255, 255, 255, 0.02);
}

/* Collapse groups */
.gantt-phase-group.collapsed,
.gantt-task-group.collapsed {
    display: none;
}

/* Hidden rows (filters) */
.gantt-row.gantt-row-hidden {
    display: none;
}

.gantt-row-main {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

/* Compact cell layout for 32px rows */
.gantt-cell-line {
    display: flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
    overflow: hidden;
    line-height: 1.2;
}

.gantt-cell-meta {
    font-size: 0.6rem;
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin-top: 1px;
    line-height: 1.2;
}

.gantt-project-name {
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--text-main);
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
    min-width: 0;
}

.gantt-project-name:hover {
    color: var(--kromeka-yellow);
    text-decoration: underline;
}

.gantt-task-name {
    font-size: 0.7rem;
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
    min-width: 0;
}

.gantt-task-line {
    padding-left: 4px;
}

.gantt-badge-sm {
    font-size: 0.55rem !important;
    padding: 1px 4px !important;
    line-height: 1.2;
}

.gantt-badge-xs {
    font-size: 0.5rem !important;
    padding: 1px 3px !important;
    line-height: 1.2;
}

.gantt-toggle-btn {
    background: transparent;
    border: 1px solid var(--border-color);
    border-radius: 3px;
    padding: 0 3px;
    color: var(--text-muted);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.65rem;
    flex-shrink: 0;
}

.gantt-toggle-btn:hover {
    background: var(--input-hover-bg);
    color: var(--text-main);
}

.gantt-row-meta {
    margin-top: 2px;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    font-size: 0.65rem;
    color: var(--text-muted);
}

.gantt-project-title {
    font-size: 1rem;
}

.gantt-project-title-link {
    color: var(--text-main);
    font-weight: 700;
    text-decoration: none;
}

.gantt-project-title-link:hover {
    color: var(--kromeka-yellow);
    text-decoration: underline;
}

.gantt-task-main {
    gap: 8px;
}

.gantt-task-indent {
    display: inline-block;
    width: 12px;
    flex-shrink: 0;
}

.gantt-reorder-handle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    color: var(--text-muted);
    cursor: grab;
    user-select: none;
    opacity: 0.5;
    flex-shrink: 0;
}

.gantt-reorder-handle:hover {
    opacity: 1;
    color: var(--kromeka-yellow);
}

.gantt-reorder-handle:active {
    cursor: grabbing;
}

.gantt-task-row-item.drag-over {
    outline: 1px dashed var(--kromeka-yellow);
    outline-offset: -2px;
}

.gantt-task-title {
    font-weight: 600;
    font-size: 0.85rem;
}

.gantt-toggle {
    border-radius: 4px;
}

/* Legacy collapse classes (backward compat) */
.gantt-project-tasks.collapsed,
.gantt-project-phases.collapsed,
.gantt-phase-tasks.collapsed {
    display: none;
}

.gantt-week-hours {
    font-size: 0.7rem;
    color: var(--text-muted);
}

.gantt-week-flags {
    font-size: 0.65rem;
    color: var(--kromeka-yellow);
}

/* Milestone marker for task rows */
.gantt-milestone {
    position: absolute;
    top: 50%;
    width: 12px;
    height: 12px;
    border: 2px solid var(--kromeka-yellow);
    background: rgba(245, 181, 31, 0.2);
    transform: translate(-50%, -50%) rotate(45deg);
    z-index: 8;
    cursor: grab;
}

.gantt-milestone::before {
    content: '';
    position: absolute;
    inset: -8px;
}

.gantt-milestone:hover {
    box-shadow: 0 0 0 2px rgba(245, 181, 31, 0.25);
}

.gantt-milestone.dragging {
    cursor: grabbing;
    box-shadow: 0 0 0 3px rgba(245, 181, 31, 0.35);
}

/* Milestone vertical line + flag (matches deadline style) */
.gantt-milestone-line {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--kromeka-yellow);
    z-index: 7;
    cursor: ew-resize;
}

.gantt-milestone-line::before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: -8px;
    width: 18px;
}

.gantt-milestone-line:hover {
    box-shadow: 0 0 0 1px rgba(245, 181, 31, 0.4);
}

.gantt-milestone-line.dragging {
    cursor: grabbing;
    box-shadow: 0 0 0 2px rgba(245, 181, 31, 0.45);
}
.gantt-milestone-flag {
    position: absolute;
    top: 0;
    left: 4px;
    background: var(--kromeka-yellow);
    color: var(--kromeka-dark);
    font-size: 0.55rem;
    font-weight: 700;
    padding: 1px 4px;
    border-radius: 0 0 3px 3px;
    white-space: nowrap;
    pointer-events: none;
}
.gantt-milestone-line.milestone-completed {
    background: #28a745;
    opacity: 0.7;
}
.gantt-milestone-line.milestone-completed .gantt-milestone-flag {
    background: #28a745;
    color: white;
}

.gantt-production-start-line {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 2px;
    background: #2f7fd2;
    z-index: 6;
    pointer-events: none;
}

.gantt-production-start-flag {
    position: absolute;
    top: 0;
    left: 4px;
    background: #2f7fd2;
    color: #fff;
    font-size: 0.55rem;
    font-weight: 700;
    padding: 1px 4px;
    border-radius: 0 0 3px 3px;
    white-space: nowrap;
    pointer-events: none;
}

.gantt-dep-lag-label {
    font-size: 10px;
    fill: var(--kromeka-red);
    font-weight: 600;
}

.gantt-deadline-marker {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--kromeka-red);
    z-index: 5;
}

.gantt-deadline-label {
    position: absolute;
    top: 0;
    left: 4px;
    background: var(--kromeka-red);
    color: white;
    font-size: 0.55rem;
    font-weight: 700;
    padding: 1px 4px;
    border-radius: 0 0 3px 3px;
    white-space: nowrap;
}

/* Full-height deadline line for project planning */
.gantt-deadline-line {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--kromeka-red);
    z-index: 8;
}

.gantt-deadline-line .gantt-deadline-label {
    position: absolute;
    top: 0;
    left: 4px;
}

/* Action links in task cells */
.gantt-action-link {
    color: var(--text-muted);
    text-decoration: none;
    font-size: 0.65rem;
    opacity: 0.7;
    transition: opacity 0.15s;
}

.gantt-action-link:hover {
    opacity: 1;
    color: var(--kromeka-red);
}

.gantt-action-link.text-danger:hover {
    color: var(--kromeka-red) !important;
}

.gantt-task-name-link {
    color: inherit;
    text-decoration: none;
    transition: color 0.15s, text-decoration 0.15s;
}

.gantt-task-name-link:hover {
    color: var(--kromeka-red);
    text-decoration: underline;
}

.gantt-task-name-link.task-cancelled-name,
.workload-task-name-combo.task-cancelled-name,
.inline-cell-display.task-cancelled-name {
    color: var(--bs-secondary-color, #6c757d);
    text-decoration: line-through;
    text-decoration-thickness: 1.5px;
}

.gantt-task-name-link.task-cancelled-name:hover,
.workload-task-name-combo.task-cancelled-name:hover {
    color: var(--bs-secondary-color, #6c757d);
    text-decoration: line-through;
}

.gantt-phase-drop-target {
    cursor: default;
}

.gantt-phase-drop-highlight {
    background: rgba(175, 22, 30, 0.12);
    outline: 2px dashed var(--kromeka-red);
    outline-offset: -2px;
}

/* Legacy filter hidden class (now use .gantt-row-hidden on .gantt-row) */
.gantt-task-hidden {
    display: none;
}

.gantt-today-line {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--kromeka-red);
    box-shadow: 0 0 8px rgba(175, 22, 30, 0.6);
    z-index: 3;
    pointer-events: none;
}

.gantt-today-label {
    position: absolute;
    top: 0;
    left: 4px;
    background: var(--kromeka-red);
    color: white;
    font-size: 0.6rem;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 0 0 4px 4px;
    white-space: nowrap;
}

.gantt-nav-btn {
    min-width: 30px;
    padding: 2px 6px;
}

#gantt-today,
.gantt-inline-today-btn {
    min-width: 56px;
    font-size: 0.7rem;
    line-height: 1;
    padding: 4px 8px;
    white-space: nowrap;
}

/* Keep planning header navigation controls readable in light theme. */
:root:not([data-theme="dark"]) .card-header .gantt-nav-btn.btn-outline-secondary,
:root:not([data-theme="dark"]) .card-header #gantt-today.btn-outline-secondary {
    color: #f8f9fa;
    border-color: rgba(248, 249, 250, 0.7);
    background-color: rgba(255, 255, 255, 0.08);
}

:root:not([data-theme="dark"]) .card-header .gantt-nav-btn.btn-outline-secondary:hover,
:root:not([data-theme="dark"]) .card-header #gantt-today.btn-outline-secondary:hover,
:root:not([data-theme="dark"]) .card-header .gantt-nav-btn.btn-outline-secondary:focus,
:root:not([data-theme="dark"]) .card-header #gantt-today.btn-outline-secondary:focus {
    color: #ffffff;
    border-color: #ffffff;
    background-color: rgba(255, 255, 255, 0.2);
}

/* Hover effects for better UX */
.gantt-row-task:hover {
    background: var(--input-hover-bg);
}

.gantt-row.gantt-project-row > .gantt-row-task:hover {
    background: var(--bg-secondary);
}

.gantt-row.gantt-phase-row > .gantt-row-task:hover {
    background: rgba(175, 22, 30, 0.07);
}

[data-theme="dark"] .gantt-row.gantt-phase-row > .gantt-row-task:hover {
    background: rgba(175, 22, 30, 0.12);
}

/* Drag to add selection */
.gantt-drag-selection {
    position: absolute;
    background: rgba(175, 22, 30, 0.15);
    border: 2px dashed var(--kromeka-red);
    height: var(--gantt-row-height, 37px);
    pointer-events: none;
    z-index: 20;
    border-radius: 4px;
}

/* Cursor for draggable project timeline area */
.gantt-row.gantt-project-row > .gantt-row-timeline {
    cursor: crosshair;
}

/* Gantt filters */
.gantt-filters {
    background: var(--bg-secondary);
}

.gantt-filters .form-label {
    color: var(--text-muted);
    font-size: 0.75rem;
}

#dept-workload-link {
    text-transform: none;
}

/* (project row hover handled above) */

.gantt-toggle:hover {
    background: var(--kromeka-red);
    border-color: var(--kromeka-red);
    color: white;
}

/* Better zebra striping for task rows */
.gantt-row.gantt-task-row:nth-child(odd) > .gantt-row-timeline .gantt-bars {
    background-color: rgba(0, 0, 0, 0.01);
}

[data-theme="dark"] .gantt-row.gantt-task-row:nth-child(odd) > .gantt-row-timeline .gantt-bars {
    background-color: rgba(255, 255, 255, 0.01);
}

/* Row height selector in header */
.gantt-row-height-control {
    display: flex;
    align-items: center;
    gap: 4px;
}

.gantt-row-height-control label {
    margin-bottom: 0;
}

.gantt-row-height-control select {
    width: auto;
    min-width: 90px;
}

/* ------------------------------------------------------------
   Flatpickr Date Picker - Theme Compatible
------------------------------------------------------------ */
.flatpickr-calendar {
    background: var(--bg-card) !important;
    color: var(--text-main) !important;
    border: 1px solid var(--border-color) !important;
    box-shadow: 0 6px 18px rgba(0,0,0,0.3);
    font-family: inherit;
}

/* Month header */
.flatpickr-months {
    background: var(--bg-card-header) !important;
}

.flatpickr-months .flatpickr-month {
    background: transparent !important;
    color: var(--text-card-header) !important;
    fill: var(--text-card-header) !important;
}

.flatpickr-months .flatpickr-prev-month,
.flatpickr-months .flatpickr-next-month {
    color: var(--text-card-header) !important;
    fill: var(--text-card-header) !important;
}

.flatpickr-months .flatpickr-prev-month:hover,
.flatpickr-months .flatpickr-next-month:hover {
    color: var(--kromeka-yellow) !important;
}

.flatpickr-months .flatpickr-prev-month svg,
.flatpickr-months .flatpickr-next-month svg {
    fill: currentColor !important;
}

.flatpickr-current-month {
    color: var(--text-card-header) !important;
}

.flatpickr-current-month .flatpickr-monthDropdown-months,
.flatpickr-current-month input.cur-year {
    background: transparent !important;
    color: var(--text-card-header) !important;
}

.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
    background: rgba(255,255,255,0.1) !important;
}

/* Weekday headers (Mon, Tue, Wed, etc.) */
.flatpickr-weekdays {
    background: var(--bg-secondary) !important;
}

.flatpickr-weekday {
    color: var(--text-main) !important;
    font-weight: 600;
    background: transparent !important;
}

/* Week numbers column - THE FIX */
.flatpickr-weekwrapper {
    background: var(--bg-secondary) !important;
}

.flatpickr-weekwrapper .flatpickr-weekday {
    color: var(--text-main) !important;
    font-weight: 700;
}

.flatpickr-weekwrapper .flatpickr-weeks {
    background: var(--bg-secondary) !important;
}

.flatpickr-weeks span.flatpickr-day,
.flatpickr-weekwrapper .flatpickr-weeks span {
    color: var(--text-muted) !important;
    background: transparent !important;
}

/* Calendar days */
.flatpickr-day {
    color: var(--text-main) !important;
    border-radius: 6px;
    background: transparent !important;
}

.flatpickr-day:hover,
.flatpickr-day:focus {
    background: var(--hover-bg) !important;
    border-color: var(--border-color) !important;
}

.flatpickr-day.today {
    border-color: var(--kromeka-yellow) !important;
}

.flatpickr-day.selected,
.flatpickr-day.startRange,
.flatpickr-day.endRange {
    background: var(--kromeka-red) !important;
    border-color: var(--kromeka-red) !important;
    color: #fff !important;
}

/* Days outside current month */
.flatpickr-day.prevMonthDay,
.flatpickr-day.nextMonthDay {
    color: var(--text-muted) !important;
}

/* Disabled days */
.flatpickr-day.flatpickr-disabled,
.flatpickr-day.flatpickr-disabled:hover {
    color: var(--text-muted) !important;
    opacity: 0.5;
}

/* Inner container */
.flatpickr-innerContainer {
    background: var(--bg-card) !important;
}

.flatpickr-rContainer {
    background: var(--bg-card) !important;
}

.dayContainer {
    background: var(--bg-card) !important;
}

/* Time picker */
.flatpickr-time {
    background: var(--bg-card) !important;
    border-top: 1px solid var(--border-color) !important;
}

.flatpickr-time input,
.flatpickr-time .flatpickr-time-separator,
.flatpickr-time .flatpickr-am-pm {
    color: var(--text-main) !important;
    background: var(--input-bg) !important;
}

.flatpickr-time input:hover,
.flatpickr-time input:focus,
.flatpickr-time .flatpickr-am-pm:hover,
.flatpickr-time .flatpickr-am-pm:focus {
    background: var(--hover-bg) !important;
}

/* Arrows */
.flatpickr-calendar.arrowTop:before {
    border-bottom-color: var(--border-color) !important;
}

.flatpickr-calendar.arrowTop:after {
    border-bottom-color: var(--bg-card-header) !important;
}

/* ------------------------------------------------------------
   Chat Widget Enhancements (Replies, Attachments, Tags Toggle)
   ------------------------------------------------------------ */

/* Paperclip attach button in the input group */
.chat-input-area .input-group > label.btn {
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 0;
}

/* Highlight the message being scrolled-to via reply click */
.chat-bubble[style*="outline"] {
    transition: outline-color 0.3s ease;
}

/* ------------------------------------------------------------
   Detail Page Tabs (Project / Customer)
   ------------------------------------------------------------ */

.detail-tabs {
    border-bottom: 2px solid var(--border-color);
}

.detail-tabs .nav-link {
    color: var(--tab-inactive-text, var(--text-muted));
    border: none;
    border-bottom: 3px solid transparent;
    padding: 0.65rem 1.1rem;
    font-weight: 500;
    font-size: 0.9rem;
    transition: color 0.15s, border-color 0.15s;
}

.detail-tabs .nav-link:hover {
    color: var(--kromeka-red);
    border-bottom-color: rgba(175, 22, 30, 0.3);
    background: transparent;
}

.detail-tabs .nav-link.active {
    color: var(--kromeka-red);
    border-bottom-color: var(--kromeka-red);
    background: transparent;
}

.detail-tabs .nav-link .badge {
    font-size: 0.65rem;
    vertical-align: middle;
}

[data-theme="dark"] .detail-tabs {
    border-bottom-color: var(--border-color);
}

[data-theme="dark"] .detail-tabs .nav-link {
    color: var(--text-muted);
}

[data-theme="dark"] .detail-tabs .nav-link:hover {
    color: var(--kromeka-yellow);
    border-bottom-color: rgba(245, 181, 31, 0.3);
}

[data-theme="dark"] .detail-tabs .nav-link.active {
    color: var(--kromeka-yellow);
    border-bottom-color: var(--kromeka-yellow);
}

/* ------------------------------------------------------------
   Files Tab – Table & UI
   ------------------------------------------------------------ */

.files-table th {
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--text-muted);
    font-weight: 600;
    border-bottom: 2px solid var(--border-color);
    white-space: nowrap;
}

.files-table td {
    font-size: 0.88rem;
    vertical-align: middle;
}

.files-sort-link {
    color: var(--text-muted);
    text-decoration: none;
    white-space: nowrap;
}

.files-sort-link:hover {
    color: var(--kromeka-red);
}

[data-theme="dark"] .files-sort-link:hover {
    color: var(--kromeka-yellow);
}

.files-sort-link i {
    font-size: 0.65rem;
    margin-left: 2px;
}

.files-thumb {
    width: 36px;
    height: 36px;
    object-fit: cover;
    border-radius: 4px;
    flex-shrink: 0;
}

.files-type-icon {
    font-size: 1.4rem;
    flex-shrink: 0;
    width: 36px;
    text-align: center;
}

.files-filename {
    max-width: 260px;
    display: inline-block;
    color: var(--link-color);
    text-decoration: none;
}

.files-source-badge {
    background-color: var(--bg-secondary);
    color: var(--text-main);
    border: 1px solid var(--border-color);
}

.files-filename:hover {
    text-decoration: underline;
}

/* Delete modal option buttons */
#deleteFileModal .btn {
    text-align: left;
    padding: 0.75rem 1rem;
}

#deleteFileModal .btn small {
    font-weight: normal;
}

/* Responsive: stack on mobile */
@media (max-width: 768px) {
    .files-table th:nth-child(2),
    .files-table td:nth-child(2),
    .files-table th:nth-child(6),
    .files-table td:nth-child(6) {
        display: none;
    }

    .files-filename {
        max-width: 140px;
    }

    .detail-tabs .nav-link {
        padding: 0.5rem 0.6rem;
        font-size: 0.8rem;
    }

    .detail-tabs .nav-link i {
        margin-right: 0 !important;
    }
}

/* ============================================================
   Milestone Card (Dashboard)
   ============================================================ */
.milestone-item .form-check-input {
    width: 1.2em;
    height: 1.2em;
    cursor: pointer;
}
.milestone-item .form-check-input:checked {
    background-color: #28a745;
    border-color: #28a745;
}
.milestone-item:hover {
    background-color: rgba(0,0,0,.03);
}
[data-theme="dark"] .milestone-item:hover {
    background-color: rgba(255,255,255,.05);
}

/* ============================================================
   Mention Autocomplete
   ============================================================ */
.mention-dropdown {
    position: absolute;
    z-index: 1200;
    max-height: 260px;
    overflow-y: auto;
    border: 1px solid var(--border-color);
    background: var(--bg-card);
    box-shadow: 0 6px 14px rgba(0, 0, 0, 0.14);
    border-radius: 6px;
    padding: 4px;
}

.mention-item {
    width: 100%;
    border: none;
    background: transparent;
    color: var(--text-main);
    text-align: left;
    display: flex;
    justify-content: space-between;
    gap: .8rem;
    padding: .45rem .55rem;
    border-radius: 4px;
    cursor: pointer;
}

.mention-item:hover,
.mention-item.active {
    background: var(--hover-bg);
}

.mention-item .mention-label {
    font-size: .86rem;
    font-weight: 600;
}

.mention-item .mention-meta {
    font-size: .72rem;
    opacity: .75;
    white-space: nowrap;
}

/* ------------------------------------------------------------
 * Note Editor – shared styles for contenteditable rich-text
 * surfaces used on entity detail pages and the Notebook page.
 * ------------------------------------------------------------ */
.note-editor-wrap > textarea[name="content_html"] {
    display: none;
}

.note-editor-surface {
    min-height: 140px;
    max-height: 340px;
    overflow-y: auto;
    line-height: 1.45;
    padding: .65rem .75rem;
}

.note-editor-surface:empty::before {
    content: attr(data-placeholder);
    color: var(--text-muted);
}

.note-item .note-content p:last-child,
.notebook-note-content p:last-child {
    margin-bottom: 0;
}

.notebook-note-card {
    padding: .6rem .85rem;
    border-left: 3px solid var(--kromeka-yellow) !important;
    transition: background-color .15s ease;
}

.notebook-note-clickable {
    cursor: pointer;
}

.notebook-note-clickable:hover .nb-note-preview {
    opacity: .88;
}

.notebook-edit-panel {
    font-size: .9rem;
    background-color: var(--bg-secondary) !important;
    border-color: var(--border-color) !important;
    color: var(--text-main);
}

.notebook-edit-panel .form-control,
.notebook-edit-panel .form-select {
    background-color: var(--input-bg);
    color: var(--input-text);
    border-color: var(--input-border);
}

.notebook-edit-panel .form-control:focus,
.notebook-edit-panel .form-select:focus {
    background-color: var(--input-focus-bg);
    color: var(--input-focus-text);
}

.notebook-edit-panel .note-editor-surface {
    background-color: var(--input-bg);
    color: var(--input-text);
    border-color: var(--input-border);
}

.notebook-note-content {
    max-height: 120px;
    overflow: hidden;
    position: relative;
    font-size: .9rem;
    line-height: 1.45;
}

.notebook-note-content::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 28px;
    background: linear-gradient(transparent, var(--bg-card, #fff));
    pointer-events: none;
}

.note-linked-panel {
    border: 1px dashed var(--border-color);
    border-radius: .4rem;
    padding: .5rem .6rem;
}

.notebook-shell {
    display: grid;
    grid-template-columns: 340px 1fr;
    gap: 1rem;
}

.notebook-sidebar {
    position: sticky;
    top: 1rem;
    max-height: calc(100vh - 2rem);
}

.notebook-sidebar .card-header,
.notebook-main .card-header.notebook-editor-header {
    background: var(--bg-card);
    color: var(--text-main);
    border-bottom: 1px solid var(--border-color);
    text-transform: none;
    letter-spacing: 0;
    padding: .75rem .9rem;
}

.notebook-editor-heading h5 {
    color: var(--text-main);
    margin-bottom: .1rem;
    font-size: 1.05rem;
    font-weight: 600;
}

.notebook-tree {
    max-height: calc(100vh - 9rem);
    overflow: auto;
    border: 1px solid var(--border-color);
    border-radius: .5rem;
    background: var(--bg-card);
    padding: .35rem;
}

.nb-tree-row {
    margin-bottom: 2px;
}

.nb-tree-main {
    display: flex;
    align-items: center;
    min-height: 40px;
    border-radius: .4rem;
    cursor: pointer;
    transition: background-color .16s ease;
}

.nb-tree-main:hover {
    background: var(--hover-bg);
}

.nb-tree-row.active > .nb-tree-main {
    background: var(--notebook-select-bg);
}

.nb-tree-toggle,
.nb-tree-toggle-spacer {
    width: 20px;
    min-width: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.nb-tree-toggle {
    border: none;
    background: transparent;
    color: var(--text-muted);
    padding: 0;
    transition: transform .18s ease;
}

.nb-tree-row.expanded > .nb-tree-main .nb-tree-toggle {
    transform: rotate(90deg);
}

.nb-node-icon {
    width: 22px;
    min-width: 22px;
    color: var(--text-muted);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.nb-node-text-block {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 1px;
}

.nb-node-title {
    font-size: 13px;
    line-height: 1.15;
    color: var(--text-main);
}

.nb-node-date {
    font-size: 10px;
    line-height: 1.1;
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nb-level-0 .nb-node-title {
    font-size: 14px;
    font-weight: 600;
}

.nb-level-1 .nb-node-title {
    font-size: 13px;
    font-weight: 400;
}

.nb-level-2 .nb-node-title,
.nb-note-title {
    font-size: 13px;
    font-weight: 400;
    color: var(--text-main);
}

.nb-tree-children {
    max-height: 0;
    overflow: hidden;
    transition: max-height .2s ease;
}

.nb-tree-row.expanded > .nb-tree-children {
    max-height: 3000px;
}

.nb-actions-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
}

.nb-btn-primary,
.nb-btn-secondary,
.nb-btn-danger,
.nb-btn-icon-danger {
    border-radius: .45rem;
    transition: background-color .16s ease, border-color .16s ease, color .16s ease;
}

.nb-btn-primary {
    background: var(--action-primary-bg);
    color: var(--action-primary-text);
    border: 1px solid var(--action-primary-bg);
}

.nb-btn-primary:hover,
.nb-btn-primary:focus {
    background: var(--action-primary-hover);
    border-color: var(--action-primary-hover);
    color: var(--action-primary-text);
}

.nb-btn-secondary {
    background: var(--action-secondary-bg);
    color: var(--action-secondary-text);
    border: 1px solid var(--action-secondary-border);
}

.nb-btn-secondary:hover,
.nb-btn-secondary:focus {
    background: var(--action-secondary-hover-bg);
    color: var(--action-secondary-text);
    border-color: var(--action-secondary-border);
}

.nb-btn-danger {
    background: var(--action-danger-bg);
    color: var(--action-danger-text);
    border: 1px solid var(--action-danger-bg);
}

.nb-btn-danger:hover,
.nb-btn-danger:focus {
    background: var(--action-danger-hover);
    border-color: var(--action-danger-hover);
    color: var(--action-danger-text);
}

.nb-btn-icon-danger {
    background: transparent;
    color: var(--action-danger-bg);
    border: 1px solid transparent;
}

.nb-btn-icon-danger:hover {
    background: var(--hover-bg);
    color: var(--action-danger-hover);
}

.nb-dirty-pill {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    padding: .2rem .55rem;
    background: var(--unsaved-bg);
    color: var(--unsaved-text);
    font-size: .72rem;
    font-weight: 600;
}

.nb-editor-form .note-editor-surface {
    min-height: 220px;
    max-height: 420px;
}

.nb-upload-dropzone {
    border: 1px dashed var(--border-color);
    border-radius: .5rem;
    background: var(--bg-card);
    min-height: 64px;
    padding: .75rem;
    display: flex;
    align-items: center;
    gap: .4rem;
    color: var(--text-muted);
}

.nb-upload-dropzone.is-dragover {
    background: var(--hover-bg);
    border-color: var(--kromeka-yellow);
}

.nb-attachments {
    border: 1px solid var(--border-color);
    border-radius: .5rem;
    background: var(--bg-card);
    padding: .3rem .6rem;
    max-height: 230px;
    overflow-y: auto;
}

.nb-attachment-row {
    min-height: 44px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .6rem;
    border-bottom: 1px solid var(--border-color);
}

.nb-attachment-row:last-child {
    border-bottom: none;
}

.nb-attachment-file {
    display: flex;
    align-items: center;
    gap: .55rem;
}

.nb-file-icon {
    color: var(--text-muted);
}

.nb-filter-badge {
    background: var(--kromeka-dark);
    color: #fff;
    font-size: .78rem;
    font-weight: 500;
    padding: .3rem .6rem;
    border-radius: .35rem;
}

.nb-filter-badge .btn-close {
    filter: invert(1) grayscale(100%) brightness(190%);
    opacity: 0.78;
}

.nb-filter-badge .btn-close:hover {
    opacity: 1;
}

.nb-filter-badge .btn-close {
    filter: brightness(0) invert(1);
    opacity: .7;
}

.nb-filter-badge .btn-close:hover {
    opacity: 1;
}

.nb-node-badge {
    font-size: .7rem;
    background: var(--kromeka-grey);
    color: #fff;
    border-radius: .3rem;
    padding: .1rem .35rem;
    margin-left: .35rem;
    font-weight: 500;
}

@media (max-width: 991px) {
    .notebook-shell {
        grid-template-columns: 1fr;
    }
}

/* ------------------------------------------------------------
   Dashboard personalization UI + card overflow
------------------------------------------------------------ */
.dashboard-settings-tabs .nav-link {
    border-radius: 999px;
    font-size: 0.85rem;
}

.dashboard-widget-list {
    gap: 0.45rem;
}

.dashboard-widget-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.45rem;
    margin-bottom: 0.5rem;
}

.dashboard-widget-drag {
    color: var(--text-muted);
    cursor: grab;
    user-select: none;
    font-size: 1.05rem;
}

.dashboard-widget-drag:active {
    cursor: grabbing;
}

.dashboard-widget-controls {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    min-width: 220px;
    justify-content: flex-end;
}

.dashboard-widget-height {
    min-width: 140px;
}

.dashboard-widget-scroll {
    overflow: auto;
}

/* ============================================================
   Component System Styles
   ============================================================ */
.border-dashed {
    border-style: dashed !important;
}

.nav-pills .nav-link {
    font-size: 0.85rem;
    padding: 0.35rem 0.75rem;
}

/* Inactive pill links (e.g. language tabs on CPQ/forms): follow theme — blue on light, accent yellow on dark */
.nav-pills .nav-link:not(.active) {
    color: var(--link-color);
}

.nav-pills .nav-link:not(.active):hover,
.nav-pills .nav-link:not(.active):focus {
    color: var(--link-hover-color);
}

.nav-pills .nav-link.active {
    background-color: var(--kromeka-red);
    color: #fff;
}

/* Tab bars that are not detail page tabs — same treatment as pills (department modals, etc.) */
.nav-tabs:not(.detail-tabs) .nav-link:not(.active) {
    color: var(--link-color);
}

.nav-tabs:not(.detail-tabs) .nav-link:not(.active):hover,
.nav-tabs:not(.detail-tabs) .nav-link:not(.active):focus {
    color: var(--link-hover-color);
}

/* Dark theme: no Bootstrap primary-blue text on dark backgrounds */
[data-theme="dark"] .text-primary {
    color: var(--kromeka-yellow) !important;
}

[data-theme="dark"] a.btn-link,
[data-theme="dark"] .btn-link {
    color: var(--kromeka-yellow);
}

[data-theme="dark"] a.btn-link:hover,
[data-theme="dark"] .btn-link:hover {
    color: var(--link-hover-color);
}

/* ============================================================
   Department Cards & Member Management
   ============================================================ */
.department-card {
    transition: transform 0.15s ease, box-shadow 0.15s ease;
    cursor: pointer;
}
.department-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,.1);
}

.color-swatch-label input[type="radio"]:checked + .color-swatch {
    outline: 3px solid var(--kromeka-dark, #1d1d1b);
    outline-offset: 2px;
}

/* ============================================================
   Department Planning / Workload Heatmap
   ============================================================ */
.workload-table th,
.workload-table td {
    text-align: center;
    vertical-align: middle;
    min-width: 80px;
    font-size: 0.85rem;
}
.workload-table .user-cell {
    text-align: left;
    white-space: nowrap;
    min-width: 160px;
}
.workload-member-row {
    cursor: pointer;
}
/* Divider below built-in filter rows (Uncompleted Tasks) to separate from member rows */
#department-workload-table tbody tr[data-user-id="uncompleted"] td {
    border-bottom: 2px solid var(--kromeka-grey);
}
[data-theme="dark"] #department-workload-table tbody tr[data-user-id="uncompleted"] td,
[data-bs-theme="dark"] #department-workload-table tbody tr[data-user-id="uncompleted"] td {
    border-bottom-color: rgba(255, 255, 255, 0.3);
}
.workload-member-row-selected > td {
    background-color: rgba(245, 181, 31, 0.14);
}
[data-theme="dark"] .workload-member-row-selected > td {
    background-color: rgba(245, 181, 31, 0.22);
}
.workload-current-week {
    border-left: 1px solid var(--kromeka-yellow) !important;
    border-right: 1px solid var(--kromeka-yellow) !important;
    border-top: 1px solid var(--kromeka-yellow) !important;
    box-shadow: inset 1px 0 0 var(--kromeka-yellow), inset -1px 0 0 var(--kromeka-yellow);
}
.workload-current-week-col {
    border-left: 1px solid var(--kromeka-yellow) !important;
    border-right: 1px solid var(--kromeka-yellow) !important;
    box-shadow: inset 1px 0 0 var(--kromeka-yellow), inset -1px 0 0 var(--kromeka-yellow);
}
.workload-current-week-prev,
.workload-current-week-prev-col {
    border-right: 1px solid var(--kromeka-yellow) !important;
    box-shadow: inset -1px 0 0 var(--kromeka-yellow);
}
.workload-table tbody tr:first-child .workload-current-week-col {
    border-top: 1px solid var(--kromeka-yellow) !important;
}
.workload-table tbody tr:last-child .workload-current-week-col {
    border-bottom: 1px solid var(--kromeka-yellow) !important;
}
.workload-week-header {
    cursor: pointer;
}
.workload-week-header.workload-week-selected {
    background-color: rgba(245, 181, 31, 0.20) !important;
    box-shadow: inset 0 -2px 0 var(--kromeka-yellow);
}
[data-theme="dark"] .workload-week-header.workload-week-selected {
    background-color: rgba(245, 181, 31, 0.28) !important;
}
.workload-week-cell.workload-week-selected-col {
    background-color: rgba(245, 181, 31, 0.08);
}
[data-theme="dark"] .workload-week-cell.workload-week-selected-col {
    background-color: rgba(245, 181, 31, 0.12);
}
.workload-task-drilldown .table td,
.workload-task-drilldown .table th {
    vertical-align: middle;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 1px;
}
.workload-task-drilldown .table td a {
    text-decoration: none;
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
}
.workload-task-drilldown .table td a:hover {
    text-decoration: underline;
}
.workload-task-name-combo {
    display: inline-block;
    max-width: 340px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: bottom;
}
.workload-project-link {
    display: inline-block;
    max-width: 110px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.workload-task-drilldown .table th:nth-last-child(2),
.workload-task-drilldown .table td:nth-last-child(2) {
    min-width: 86px;
    width: 86px;
}
.workload-task-drilldown .form-select {
    min-height: 32px;
}
.workload-task-status-checkbox {
    cursor: pointer;
}
.workload-task-status-checkbox.task-status-ready:checked,
.quick-task-status-checkbox.task-status-ready:checked,
.planning-task-check.task-status-ready:checked {
    background-color: var(--kromeka-red);
    border-color: var(--kromeka-red);
}
.workload-task-status-checkbox.task-status-completed:checked,
.quick-task-status-checkbox.task-status-completed:checked,
.planning-task-check.task-status-completed:checked {
    background-color: var(--task-status-check-color, #3E9E5B);
    border-color: var(--task-status-check-color, #3E9E5B);
}
.workload-column-settings-menu {
    min-width: 220px;
    max-width: 280px;
    max-height: 320px;
    overflow: auto;
}
.workload-column-settings-item {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    padding: 4px 0;
    font-size: 0.875rem;
    cursor: pointer;
}
.workload-column-settings-item .form-check-input {
    margin-top: 0;
}
.workload-task-drilldown td[data-inline-field]:not([data-inline-disabled]) .inline-cell-display {
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
    cursor: pointer;
    text-decoration: underline dotted;
    text-underline-offset: 2px;
}
.workload-task-drilldown td[data-inline-field][data-inline-disabled] {
    opacity: 0.75;
}
.workload-cell {
    border-radius: 4px;
    padding: 4px 6px;
    font-weight: 600;
}
.workload-cell.load-none { background: var(--bs-gray-100); color: var(--bs-gray-500); }
.workload-cell.load-light { background: #d4edda; color: #155724; }
.workload-cell.load-normal { background: #cce5ff; color: #004085; }
.workload-cell.load-heavy { background: #fff3cd; color: #856404; }
.workload-cell.load-over { background: #f8d7da; color: #721c24; }
[data-bs-theme="dark"] .workload-cell.load-none { background: var(--bs-gray-800); color: var(--bs-gray-500); }
[data-bs-theme="dark"] .workload-cell.load-light { background: #1b4332; color: #95d5b2; }
[data-bs-theme="dark"] .workload-cell.load-normal { background: #1b3a5c; color: #90caf9; }
[data-bs-theme="dark"] .workload-cell.load-heavy { background: #5c4a1b; color: #ffe082; }
[data-bs-theme="dark"] .workload-cell.load-over { background: #5c1b1b; color: #ef9a9a; }
[data-theme="dark"] .workload-cell,
[data-bs-theme="dark"] .workload-cell {
    border-radius: 2px;
    border: 1px solid rgba(255, 255, 255, 0.08);
}
[data-theme="dark"] .workload-cell.load-none,
[data-bs-theme="dark"] .workload-cell.load-none { background: #242424; color: #f1f1f1; }
[data-theme="dark"] .workload-cell.load-light,
[data-bs-theme="dark"] .workload-cell.load-light { background: #1f3b35; color: #d4ece1; }
[data-theme="dark"] .workload-cell.load-normal,
[data-bs-theme="dark"] .workload-cell.load-normal { background: #22364c; color: #d8e8fb; }
[data-theme="dark"] .workload-cell.load-heavy,
[data-bs-theme="dark"] .workload-cell.load-heavy { background: #4f421f; color: #f5e3a4; }
[data-theme="dark"] .workload-cell.load-over,
[data-bs-theme="dark"] .workload-cell.load-over { background: #5a2b32; color: #ffd9df; }


/* ============================================================
   Notification Bell Dropdown
   ============================================================ */
.notif-dropdown {
    width: 380px;
    max-height: 480px;
    overflow-y: auto;
}
.notif-dropdown .dropdown-item.notif-item {
    white-space: normal;
    padding: .35rem .75rem;
    border-bottom: 1px solid var(--bs-border-color-translucent);
}
.notif-dropdown .dropdown-item.notif-item:last-child {
    border-bottom: none;
}
.notif-dropdown .notif-unread {
    background: rgba(var(--bs-primary-rgb), .06);
}
.notif-dropdown .notif-read {
    opacity: .7;
}

/* Full notification list page */
.notif-unread-item {
    background: rgba(var(--bs-primary-rgb), .06) !important;
    border-left: 3px solid var(--bs-primary) !important;
}

/* Dark mode adjustments */
[data-theme="dark"] .notif-dropdown .notif-unread,
[data-bs-theme="dark"] .notif-dropdown .notif-unread {
    background: rgba(255, 255, 255, .05);
}
[data-theme="dark"] .notif-unread-item,
[data-bs-theme="dark"] .notif-unread-item {
    background: rgba(255, 255, 255, .05) !important;
}

/* CPQ offer item tooltip: wider box for description and technical details */
.offer-item-tooltip .tooltip-inner {
    max-width: 420px;
    text-align: left;
}

/* CPQ offer detail: URL hash targets stay visible below the top of the viewport after redirect */
[id^="cpq-offer-version-"],
tr[id^="cpq-offer-item-"] {
    scroll-margin-top: 1.25rem;
}

/* CPQ offer version item table: footer totals — labels share a bottom baseline; values align on one row */
.cpq-offer-version-items-table tfoot.cpq-offer-version-items-tfoot tr.cpq-offer-version-items-totals > td {
    border-top: 2px solid var(--border-color);
    vertical-align: top;
    padding-top: 0.65rem;
    padding-bottom: 0.75rem;
}

.cpq-offer-version-items-totals .cpq-offer-version-totals-cell {
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    gap: 0.4rem;
    min-width: 0;
}

.cpq-offer-version-items-totals .cpq-offer-version-totals-value.cpq-offer-version-totals-version-heading {
    font-weight: 400;
}

.cpq-offer-version-items-totals .cpq-offer-version-totals-label {
    font-size: 0.8125rem;
    color: var(--text-muted);
    line-height: 1.25;
    min-height: 2.75rem;
    display: flex;
    align-items: flex-end;
    align-self: stretch;
}

.cpq-offer-version-items-totals .cpq-offer-version-totals-label--empty {
    min-height: 2.75rem;
    margin: 0;
    padding: 0;
}

.cpq-offer-version-items-totals .cpq-offer-version-totals-value {
    font-weight: 600;
    line-height: 1.3;
    font-variant-numeric: tabular-nums;
}

.cpq-offer-version-items-totals .cpq-offer-version-totals-value--spacer {
    visibility: hidden;
    min-height: 1.3em;
}

.cpq-offer-version-items-totals .cpq-offer-version-totals-cell--action {
    align-items: flex-end;
}

.cpq-offer-version-items-totals .cpq-offer-version-totals-value--action {
    display: flex;
    justify-content: flex-end;
    align-items: flex-end;
    width: 100%;
    font-weight: 400;
}

/* Dark theme: price list totals Save — yellow accent (Bootstrap outline-primary stays blue in light theme) */
[data-theme="dark"] .cpq-offer-version-items-totals .cpq-offer-version-price-list-save-btn.btn-outline-primary {
    color: var(--kromeka-yellow);
    border-color: var(--kromeka-yellow);
}

[data-theme="dark"] .cpq-offer-version-items-totals .cpq-offer-version-price-list-save-btn.btn-outline-primary:hover,
[data-theme="dark"] .cpq-offer-version-items-totals .cpq-offer-version-price-list-save-btn.btn-outline-primary:focus {
    color: var(--kromeka-yellow);
    background-color: rgba(245, 181, 31, 0.14);
    border-color: var(--btn-open-hover-border);
}

/* Dark theme: CPQ financial summary row — outline-primary (blue) → yellow accent */
[data-theme="dark"] [data-cpq-financial-currency] .btn-outline-primary {
    color: var(--kromeka-yellow);
    border-color: var(--kromeka-yellow);
}

[data-theme="dark"] [data-cpq-financial-currency] .btn-outline-primary:hover,
[data-theme="dark"] [data-cpq-financial-currency] .btn-outline-primary:focus {
    color: var(--kromeka-yellow);
    background-color: rgba(245, 181, 31, 0.14);
    border-color: var(--btn-open-hover-border);
}

/* CPQ offer version — Technical tab: one-line preview, expand to edit */
.cpq-offer-tech-table .cpq-offer-tech-cell {
    vertical-align: top;
    max-width: 22rem;
}

.cpq-offer-tech-table .cpq-offer-tech-preview {
    max-width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer;
    min-height: calc(1.5rem + 0.5rem);
    line-height: 1.5rem;
    padding: 0.25rem 0.35rem;
    border-radius: 0.25rem;
    color: var(--text-main);
}

.cpq-offer-tech-table .cpq-offer-tech-preview:hover {
    background-color: var(--hover-bg);
}

.cpq-offer-tech-table .cpq-offer-tech-cell.is-expanded .cpq-offer-tech-preview {
    display: none !important;
}

.cpq-offer-tech-table .cpq-offer-tech-editor {
    min-width: 12rem;
}

.cpq-offer-tech-table .cpq-offer-tech-editor textarea {
    min-height: 6rem;
    resize: vertical;
}

.cpq-offer-tech-table .cpq-offer-tech-cell:not(.is-expanded) .cpq-offer-tech-editor {
    display: none !important;
}

.cpq-offer-tech-table .cpq-offer-tech-cell.is-expanded .cpq-offer-tech-editor {
    display: block !important;
}

/* ------------------------------------------------------------
   Component Library: collapsible category groups
------------------------------------------------------------ */
.component-category-header {
    cursor: pointer;
}

.component-category-header:hover {
    background-color: var(--hover-bg) !important;
}

.component-category-header .component-category-toggle {
    color: var(--text-main);
}

.component-category-header .component-category-toggle:hover {
    color: var(--kromeka-red);
}

/* CPQ Component Library: collapsible “Component categories” card (table inside) */
.cpq-component-categories-card-chevron {
    transition: transform 0.15s ease;
}

.cpq-component-categories-card-toggle[aria-expanded="false"] .cpq-component-categories-card-chevron {
    transform: rotate(-90deg);
}

/* CPQ: offline translation toolbar on definition/component forms.
   Use theme card surface (dark: #2c2c2a via --bg-card), not --kromeka-light-grey,
   so the bar matches adjacent .card blocks in both themes. */
.kromeka-cpq-translate-panel {
    background-color: var(--bg-card);
    border: 1px solid var(--border-color);
}

.kromeka-cpq-translate-panel .form-label {
    color: var(--text-main);
}
