/* CRP Fixes - Cumulative Debug & Enhancements */

/* Item 5: Retain scroll bars on magnification */
.table-responsive,
.table-container,
.crp-table-wrapper,
.hight_table,
#tableWrapper,
form[style*="overflow-y"],
#formView form {
    overflow-x: auto !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
}

/* Prevent horizontal and vertical overflow hiding scrollbar */
html,
body {
    overflow-x: auto !important;
    overflow-y: auto !important;
}

/* B16: Freeze serial number and eye icon columns */
.freeze-col-1 {
    position: sticky !important;
    left: 0 !important;
    background: white !important;
    z-index: 3 !important;
    border-right: 2px solid #dee2e6 !important;
    min-width: 40px;
}

.freeze-col-2 {
    position: sticky !important;
    left: 40px !important;
    background: white !important;
    z-index: 3 !important;
    border-right: 1px solid #dee2e6 !important;
    min-width: 40px;
}

thead .freeze-col-1,
thead .freeze-col-2 {
    z-index: 4 !important;
    background: #f8f9fa !important;
}

/* B13: Negative number display */
.negative-amount {
    color: #dc2626 !important;
    font-weight: 500;
}

.amount-cell.negative {
    color: #dc2626 !important;
}

/* Item 6: Dropdown styling */
select option {
    padding: 4px 8px;
}

/* Item 13: Tab navigation visual feedback */
input:focus,
select:focus,
textarea:focus {
    outline: 2px solid #3b82f6 !important;
    outline-offset: 1px;
}

/* Corrections 2026-06-27 (item 5): horizontal scroll bar in list views.
   The list wrappers already allow overflow-x; forcing the table cells to
   not wrap makes wide tables (Forecast/Actual/etc.) overflow horizontally
   so the scroll bar actually appears instead of the columns squishing. */
#tableWrapper table th,
#tableWrapper table td {
    white-space: nowrap !important;
}

/* B5: Scroll bars on transaction forms */
.transaction-table-wrapper {
    overflow-x: auto;
    overflow-y: auto;
    max-height: 600px;
    border: 1px solid #dee2e6;
    border-radius: 4px;
}

/* Alert styles */
.crp-alert {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 9999;
    padding: 12px 20px;
    border-radius: 6px;
    max-width: 400px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    animation: slideIn 0.3s ease;
}

.crp-alert-error {
    background: #fee2e2;
    color: #dc2626;
    border: 1px solid #fca5a5;
}

.crp-alert-success {
    background: #dcfce7;
    color: #16a34a;
    border: 1px solid #86efac;
}

.crp-alert-warning {
    background: #fef9c3;
    color: #ca8a04;
    border: 1px solid #fde047;
}

@keyframes slideIn {
    from {
        transform: translateX(100%);
        opacity: 0;
    }

    to {
        transform: translateX(0);
        opacity: 1;
    }
}

/* Report filter validation message */
.filter-required-msg {
    background: #fee2e2;
    color: #dc2626;
    border: 1px solid #fca5a5;
    padding: 10px 16px;
    border-radius: 6px;
    margin: 10px 0;
    font-size: 0.9rem;
}

/* Item 17: Forecast-to-Actual populated fields highlight */
.auto-populated {
    background-color: #f0fdf4 !important;
    border-color: #86efac !important;
    transition: background-color 0.5s ease;
}

/* CF Warning */
.cf-warning {
    background: #fef9c3;
    color: #92400e;
    border: 1px solid #fde68a;
    padding: 8px 14px;
    border-radius: 4px;
    font-size: 0.85rem;
    margin: 6px 0;
}

/* Serial number column */
.serial-col {
    width: 40px;
    text-align: center;
    font-size: 0.8rem;
    color: #6b7280;
}

/* Eye icon column */
.action-col {
    width: 40px;
    text-align: center;
}

/* Bug #40: Keep same height for all rows in list tables */
table.divide-y tbody tr,
table tbody tr {
    height: 48px !important;
}

table.divide-y tbody td,
table tbody td {
    vertical-align: middle !important;
    height: 48px !important;
}

/* CRP Excel-style Form Styling Modern Rebuilt */
.crp-excel-form {
    display: grid;
    grid-template-columns: minmax(150px, 200px) 1fr minmax(150px, 200px) 1fr;
    background-color: #ffffff !important;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    margin-bottom: 16px !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    border-top: 1px solid #000000 !important;
    border-left: 1px solid #000000 !important;
    padding: 0 !important;
    gap: 0 !important;
}

.crp-excel-cell {
    border-right: 1px solid #000000 !important;
    border-bottom: 1px solid #000000 !important;
    padding: 4px 8px !important;
    display: flex;
    align-items: center;
    font-size: 14px;
    min-height: 38px;
    min-width: 0;
    box-sizing: border-box;
}

.crp-excel-header {
    grid-column: span 4;
    font-weight: 700;
    text-align: center;
    font-size: 16px;
    padding: 8px 12px !important;
    border-bottom: 1px solid #000000 !important;
    border-right: 1px solid #000000 !important;
    justify-content: center;
    letter-spacing: 2px;
    font-family: ui-sans-serif, system-ui, sans-serif !important;
    color: #C00000 !important;
    background-color: #92D050 !important;
}

.crp-excel-header.forecast {
    color: #C00000 !important;
    background-color: #92D050 !important;
}

.crp-excel-header.actuals {
    color: #C00000 !important;
    background-color: #FFF200 !important;
}

/* Background Color Classes - Excel mockup palette */
.crp-excel-cell.cyan,
.crp-excel-input.cyan {
    background-color: #C5E8EB !important; /* light cyan */
}
.crp-excel-cell.yellow,
.crp-excel-input.yellow {
    background-color: #FFF2CC !important; /* light yellow */
}
.crp-excel-cell.pink,
.crp-excel-input.pink {
    background-color: #FCE4D6 !important; /* light salmon */
}
.crp-excel-cell.gray,
.crp-excel-input.gray {
    background-color: #D9D9D9 !important; /* light gray */
}

.crp-excel-cell.green {
    background-color: #92D050 !important; /* bright green - Forecast Record */
    color: #C00000 !important;
    font-weight: 700 !important;
    font-size: 14px !important;
    justify-content: center !important;
}

.crp-excel-cell.orange {
    background-color: #F8CBAD !important; /* salmon - Actual Record */
    color: #C00000 !important;
    font-weight: 700 !important;
    font-size: 14px !important;
    justify-content: center !important;
}

/* Forecast-record cells keep the same grid borders */
.fb-tlr,
.fb-l,
.fb-r,
.fb-bl,
.fb-br {
    border-right: 1px solid #000000 !important;
    border-bottom: 1px solid #000000 !important;
}

.crp-excel-label {
    font-weight: 600 !important;
    color: #1f2937 !important;
    line-height: 1.3 !important;
    align-self: stretch !important;
    display: flex !important;
    align-items: center !important;
    padding-right: 8px !important;
    font-size: 13.5px !important;
}

.crp-excel-input {
    border: none !important;
    padding: 4px 6px !important;
    position: relative;
    width: 100% !important;
}

.crp-excel-input.crp-excel-span-2,
.crp-excel-input.crp-excel-span-3,
.crp-excel-input.crp-excel-span-4 {
    max-width: none !important;
}

.crp-excel-input input:not(.ts-control input),
.crp-excel-input select,
.crp-excel-input textarea,
.crp-excel-input .ts-wrapper {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
    height: 34px !important;
    border: 1px solid #9ca3af !important;
    outline: none !important;
    box-shadow: none !important;
    background-color: #ffffff !important;
    padding: 6px 8px !important;
    font-size: 14px !important;
    border-radius: 2px !important;
    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.crp-excel-input textarea {
    height: auto !important;
    min-height: 80px !important;
}

/* TomSelect compatibility inside borderless grid cells */
.crp-excel-input .ts-wrapper {
    padding: 0 !important;
}

.crp-excel-input .ts-control {
    border: none !important;
    background: transparent !important;
    box-shadow: none !important;
    padding: 8px 12px !important;
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow: hidden !important;
    align-items: center !important;
    height: 100% !important;
}

.crp-excel-input .ts-control .item {
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    max-width: 100% !important;
}

/* Hide TomSelect search input when an item is selected and dropdown is not focused/active */
.crp-excel-input .ts-wrapper.has-items:not(.focus):not(.dropdown-active) .ts-control>input {
    display: none !important;
}

.crp-excel-input input:not(.ts-control input):focus,
.crp-excel-input select:focus,
.crp-excel-input textarea:focus,
.crp-excel-input .ts-wrapper.focus {
    border-color: #3b82f6 !important;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15) !important;
    background-color: #ffffff !important;
}

.crp-excel-input input[readonly] {
    background-color: #f3f4f6 !important;
    color: #6b7280 !important;
    cursor: not-allowed;
    border-color: #e5e7eb !important;
}

.crp-excel-span-2 {
    grid-column: span 2;
}

.crp-excel-span-3 {
    grid-column: span 3;
}

.crp-excel-span-4 {
    grid-column: span 4;
}

/* Responsive grid for rebuilt forms */
@media (max-width: 1024px) {
    .crp-excel-form {
        grid-template-columns: minmax(130px, 150px) 1fr minmax(130px, 150px) 1fr !important;
        gap: 12px 14px !important;
        padding: 8px 0 !important;
    }
}

@media (max-width: 768px) {
    .crp-excel-form {
        grid-template-columns: 1fr !important;
        gap: 6px 0 !important;
        padding: 8px 0 !important;
    }

    .crp-excel-header {
        grid-column: span 1 !important;
        margin-bottom: 4px;
    }

    .crp-excel-span-2,
    .crp-excel-span-3,
    .crp-excel-span-4 {
        grid-column: span 1 !important;
    }

    .crp-excel-cell {
        font-size: 13px;
        min-height: auto !important;
    }

    .crp-excel-input {
        max-width: none !important;
    }

    .crp-excel-input input:not(.ts-control input),
    .crp-excel-input select,
    .crp-excel-input textarea {
        font-size: 13px !important;
        height: 38px !important;
        max-width: 100% !important;
    }
}

@media (max-width: 480px) {
    .crp-excel-form {
        grid-template-columns: 1fr !important;
        gap: 6px 0 !important;
        padding: 6px 0 !important;
    }
}

/* Rebuilt Grid styles for the Billing Amount table */
.billing-grid-table {
    display: block !important;
    width: 100% !important;
    border: 1px solid #000000 !important;
    border-radius: 0 !important;
    background-color: #ffffff !important;
    overflow: visible !important;
    box-shadow: none !important;
}

.billing-grid-table .grid {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    width: 100% !important;
    border-bottom: 1px solid #e2e8f0 !important;
}

.billing-grid-table .grid:last-child {
    border-bottom: none !important;
}

.billing-grid-table .col-span-1 {
    grid-column: span 1 !important;
}

.billing-grid-table .col-span-3 {
    grid-column: span 3 !important;
}

.billing-grid-table input.bill-cell,
.billing-grid-table input.bill-total {
    width: 100% !important;
    height: 26px !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 2px 6px !important;
    font-size: 12px !important;
    outline: none !important;
    box-shadow: none !important;
    background-color: #ffffff !important;
    box-sizing: border-box !important;
}

.billing-grid-table input.bill-cell.pink {
    background-color: #FCE4D6 !important;
}

.billing-grid-table input.bill-cell:focus {
    background-color: #ffffff !important;
    box-shadow: inset 0 0 0 2px rgba(59, 130, 246, 0.35) !important;
}

.billing-grid-table input.bill-total {
    background-color: #f3f4f6 !important;
    font-weight: 600;
}

.billing-grid-table .grid>div {
    display: flex !important;
    align-items: center !important;
    font-size: 12px !important;
    padding: 4px 8px !important;
    border-right: 1px solid #e2e8f0 !important;
    border-bottom: none !important;
    border-left: none !important;
    border-top: none !important;
}

.billing-grid-table .grid>div:last-child {
    border-right: none !important;
}

/* For multi-input cells (flex layout) */
.crp-excel-input.flex input,
.crp-excel-input.flex select {
    width: auto !important;
    min-width: 0 !important;
}

.crp-excel-input .border-l.border-black,
.crp-excel-input .border-l {
    display: none !important;
    /* Hide old black separator lines */
}

/* Fix calendar icon positioning inside grid input cells */
.crp-excel-input .absolute {
    top: 50% !important;
    transform: translateY(-50%) !important;
    right: 12px !important;
    display: flex !important;
    align-items: center !important;
}

/* Remove internal scrollbars from form views so they flow naturally in the page */
#formView .hight_table {
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
}

/* Ensure bottom fields are not covered by the fixed button bar at the bottom of the page */
#formView form {
    padding-bottom: 120px !important;
}

/* =================================================================
   Form fit & responsiveness safety rules (all forms).
   Prevent any form element from forcing horizontal page overflow and
   let the Billing Amount / Project grid scroll on very small screens.
   ================================================================= */
.crp-excel-input .ts-wrapper,
.crp-excel-input .ts-control {
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
}

.billing-grid-table input.bill-cell,
.billing-grid-table input.bill-total {
    min-width: 0 !important;
    box-sizing: border-box !important;
}

@media (max-width: 640px) {

    /* Allow the fixed 4-column billing grid to scroll instead of overflowing. */
    .billing-grid-table {
        overflow-x: auto !important;
    }

    .billing-grid-table .grid {
        min-width: 420px !important;
    }
}

/* The form panel should never create a horizontal scrollbar on the page. */
#formView {
    margin-top: -12px !important;
}
#formView,
#formView *,
#formView div,
#formView form,
.hight_table {
    max-width: 100%;
    box-sizing: border-box;
    height: auto !important;
    min-height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
}

/* Remove all inside padding, borders and bg colors from the form container */
#formView>div {
    padding: 0 !important;
    background: transparent !important;
    border: none !important;
}

#formView form {
    padding: 0 !important;
}

/* Ensure formTabsTarget is left aligned and does not change the position of the List/Form buttons */
#formTabsTarget {
    margin-right: auto;
}

/* Helper classes for top-level merged project fields and currency fields */
.crp-excel-top-merged-5 {
    grid-template-columns: repeat(5, auto 1fr) !important;
}

.crp-excel-top-merged-4 {
    grid-template-columns: repeat(4, auto 1fr) !important;
}

@media (max-width: 768px) {

    .crp-excel-top-merged-5,
    .crp-excel-top-merged-4 {
        grid-template-columns: 1fr !important;
    }
}

/* =================================================================
   FLATPICKR — COMPLETE SELF-CONTAINED RESET (v26)
   The calendar often renders inside `.crp-excel-input` grid cells, so the
   app's Excel-grid + Tailwind + dropdown rules leak into flatpickr and break
   it (transparent background, squished weekday row, full-width month select,
   day grid overflowing the box). Instead of patching individual symptoms,
   this block re-declares everything flatpickr needs, scoped to
   `.flatpickr-calendar` with !important so it always wins.
   ================================================================= */

/* ---- Calendar shell: solid, opaque, sized ---- */
.flatpickr-calendar {
    width: 307.875px !important;
    max-width: 307.875px !important;
    box-sizing: content-box !important;
    background: #ffffff !important;
    border: 1px solid rgba(72, 72, 72, 0.2) !important;
    border-radius: 5px !important;
    box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6,
                0 -1px 0 #e6e6e6, 0 3px 13px rgba(0, 0, 0, 0.08) !important;
    font-size: 14px !important;
    line-height: 24px !important;
    color: rgba(0, 0, 0, 0.95) !important;
    opacity: 1 !important;
    padding: 0 !important;
    overflow: hidden !important;
}

/* ---- Header bar: arrows + month/year ---- */
.flatpickr-calendar .flatpickr-months {
    display: flex !important;
    position: relative !important;
    height: 34px !important;
    min-height: 34px !important;
    flex: 0 0 34px !important;
    align-items: center !important;
    padding: 0 !important;
    background: transparent !important;
    overflow: hidden !important;
}
.flatpickr-calendar .flatpickr-prev-month,
.flatpickr-calendar .flatpickr-next-month {
    position: absolute !important;
    top: 0 !important;
    height: 34px !important;
    width: 34px !important;
    padding: 9px 10px !important;
    line-height: 16px !important;
    background: transparent !important;
    cursor: pointer !important;
    z-index: 3 !important;
}
.flatpickr-calendar .flatpickr-prev-month { left: 0 !important; right: auto !important; }
.flatpickr-calendar .flatpickr-next-month { right: 0 !important; left: auto !important; }
.flatpickr-calendar .flatpickr-prev-month svg,
.flatpickr-calendar .flatpickr-next-month svg {
    width: 14px !important;
    height: 14px !important;
}
.flatpickr-calendar .flatpickr-month {
    flex: 1 1 auto !important;
    height: 34px !important;
    position: relative !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    line-height: 1 !important;
    overflow: visible !important;
    background: transparent !important;
}
/* Month/year kept IN FLOW (not absolute) so the header bar always
   reserves its 34px and can never collapse onto the weekday row. */
.flatpickr-calendar .flatpickr-current-month {
    position: static !important;
    left: auto !important;
    right: auto !important;
    top: auto !important;
    width: auto !important;
    height: 34px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    flex-wrap: nowrap !important;
    padding: 0 !important;
    transform: none !important;
}

/* Month <select>: native, content-sized (beats `.crp-excel-input select`) */
.flatpickr-calendar .flatpickr-current-month select.flatpickr-monthDropdown-months,
.flatpickr-calendar .flatpickr-monthDropdown-months {
    width: auto !important;
    max-width: max-content !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 2px !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    -webkit-appearance: menulist !important;
    -moz-appearance: menulist !important;
    appearance: menulist !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    line-height: normal !important;
    text-align: center !important;
    cursor: pointer !important;
    overflow: visible !important;
}

/* Year wrapper + input: compact, no box (beats `.crp-excel-input input:not(...)`) */
.flatpickr-calendar .flatpickr-current-month .numInputWrapper {
    width: 6ch !important;
    max-width: 6ch !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
    height: auto !important;
    display: inline-flex !important;
    align-items: center !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}
.flatpickr-calendar .flatpickr-current-month .numInputWrapper input.numInput.cur-year,
.flatpickr-calendar .numInputWrapper input.numInput.cur-year,
.flatpickr-calendar input.cur-year {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    -webkit-appearance: textfield !important;
    -moz-appearance: textfield !important;
    appearance: textfield !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    line-height: normal !important;
    text-align: left !important;
}
.flatpickr-calendar .numInputWrapper span {
    border: 0 !important;
}

/* ---- Inner container: weekdays + days stacked below header ---- */
.flatpickr-calendar .flatpickr-innerContainer {
    display: block !important;
    width: 100% !important;
    flex: 1 1 auto !important;
    background: #ffffff !important;
    overflow: visible !important;
}
.flatpickr-calendar .flatpickr-rContainer {
    display: block !important;
    width: 307.875px !important;
    max-width: 307.875px !important;
    padding: 0 !important;
}

/* ---- Weekday row: evenly distributed (fixes "SunMonTue..." squish) ---- */
.flatpickr-calendar .flatpickr-weekdays {
    display: flex !important;
    width: 307.875px !important;
    height: 28px !important;
    align-items: center !important;
    background: transparent !important;
    overflow: hidden !important;
}
.flatpickr-calendar .flatpickr-weekdays .flatpickr-weekdaycontainer {
    display: flex !important;
    width: 100% !important;
}
.flatpickr-calendar span.flatpickr-weekday {
    flex: 1 1 auto !important;
    display: block !important;
    width: 14.2857% !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: center !important;
    font-size: 90% !important;
    font-weight: bold !important;
    line-height: 28px !important;
    color: rgba(0, 0, 0, 0.54) !important;
    background: transparent !important;
}

/* ---- Day grid ---- */
.flatpickr-calendar .flatpickr-days {
    display: block !important;
    width: 307.875px !important;
    height: auto !important;
    background: #ffffff !important;
    overflow: visible !important;
}
.flatpickr-calendar .dayContainer {
    width: 307.875px !important;
    min-width: 307.875px !important;
    max-width: 307.875px !important;
    padding: 0 !important;
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: flex-start !important;
}
.flatpickr-calendar .flatpickr-day {
    box-sizing: border-box !important;
    flex: 0 0 auto !important;
    width: 39px !important;
    max-width: 39px !important;
    height: 39px !important;
    line-height: 39px !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: center !important;
    font-size: 14px !important;
    color: #393939 !important;
    background: transparent !important;
    border: 1px solid transparent !important;
    border-radius: 150px !important;
    cursor: pointer !important;
}
.flatpickr-calendar .flatpickr-day.flatpickr-disabled,
.flatpickr-calendar .flatpickr-day.prevMonthDay,
.flatpickr-calendar .flatpickr-day.nextMonthDay {
    color: rgba(57, 57, 57, 0.3) !important;
    background: transparent !important;
}
.flatpickr-calendar .flatpickr-day:hover {
    background: #e6e6e6 !important;
    border-color: #e6e6e6 !important;
}
.flatpickr-calendar .flatpickr-day.today {
    border-color: #3b82f6 !important;
}
.flatpickr-calendar .flatpickr-day.today:hover {
    background: #3b82f6 !important;
    color: #fff !important;
}
.flatpickr-calendar .flatpickr-day.selected,
.flatpickr-calendar .flatpickr-day.selected:hover {
    background: #3b82f6 !important;
    border-color: #3b82f6 !important;
    color: #fff !important;
}
