@font-face {
    font-family: 'Roboto';
    src: url('/PdfTemplates/Fonts/Roboto-Regular.ttf') format('woff2'), url('/PdfTemplates/Fonts/roboto-regular.woff') format('woff');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Roboto';
    src: url('/PdfTemplates/Fonts/Roboto-Bold.ttf') format('woff2'), url('/PdfTemplates/Fonts/Roboto-Bold.woff') format('woff');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}
html {
    overflow-y: scroll!important;
}
/* keeps the scrollbar gutter visible */

/* Reserve space for the vertical scrollbar so layout never shifts */
@supports (scrollbar-gutter: stable) {
    html {
        scrollbar-gutter: stable; /* modern browsers */
    }
}

/* Fallback for older browsers */
html {
    overflow-y: scroll; /* always show vertical scrollbar track */
}

/* Optional: neutralize Bootstrap’s dynamic padding if you still see any nudge */
.modal-open {
    padding-right: 0 !important; /* older BS behavior */
    --bs-body-padding-right: 0px !important; /* BS5 custom prop */
}


/* Darker, slightly tinted global backdrop */
:root {
    --bs-backdrop-bg: #000; /* or your brand navy: #001C2B */
    --bs-backdrop-opacity: .9; /* default is .5 */
}

/* Fallback for any browsers not honoring the variables */
.modal-backdrop {
    background-color: var(--bs-backdrop-bg) !important;
}

    .modal-backdrop.show {
        opacity: var(--bs-backdrop-opacity) !important;
    }

@supports ((-webkit-backdrop-filter: blur(2px)) or (backdrop-filter: blur(2px))) {
    .modal-backdrop {
        backdrop-filter: blur(2px);
        -webkit-backdrop-filter: blur(2px);
    }
}

/* Make modal headers look draggable */
.modal .modal-header {
    cursor: move;
    border-radius:0!important;
}

/* Disable the move cursor for specific modals if you opt out */
.modal[data-draggable="false"] .modal-header {
    cursor: default;
}

/* Optional: avoid text selection while dragging */
.modal-dragging, .modal-dragging * {
    user-select: none !important;
}

/* When a modal is being dragged, disable vertical centering */
.modal.drag-active .modal-dialog.modal-dialog-centered {
    align-items: flex-start; /* stop vertical centering */
    min-height: auto; /* avoid tall flex container constraints */
}


.form-label {
    font-size:small!important;
}
.btn-title {
    margin-left: 15px;
}

/* Compact form density (Bootstrap 5) */
    .compact-form {
    font-size: .9rem;
}

    .compact-form h5,
    .compact-form .h5 {
        font-size: 1rem;
        margin-bottom: .5rem;
    }

        .compact-form .form-label {
            font-size: .8rem !important;
            margin-bottom: .05rem;
        }

    .compact-form .row.g-3 {
        --bs-gutter-x: .75rem;
        --bs-gutter-y: .5rem;
    }

    .compact-form .form-control,
    .compact-form .form-select,
    .compact-form .input-group-text {
        padding: .25rem .5rem;
        font-size: .75rem;
        min-height: calc(1.5em + .5rem + 2px);
    }

    .compact-form .form-text {
        margin-top: .25rem;
        font-size: .75rem;
    }

    .compact-form .btn {
        padding: .3rem .6rem;
        font-size: .75rem;
    }

    /* Small tweak for checkboxes/radios in compact forms */
    .compact-form .form-check-input {
        width: 1rem;
        height: 1rem;
    }

    .compact-form .form-check-label {
        font-size: .875rem;
    }


.details-card .nav-tabs {
    border-bottom: 1px solid var(--bs-border-color);
}

/* Card tabs polish */
.details-card .card {
    overflow: hidden;
}
/* clip corners */
.details-card .card-header {
    background: #fff;
}
/* match body */
.details-card .nav-tabs {
    border-bottom: 1px solid var(--bs-border-color);
    margin: 0;
}

/* TEST MODAL FONTS*/
.modal-content {
    font-size: 0.875rem !important;
}

.modal-body,
.modal-header,
.modal-footer {
    padding: 0.75rem 1rem !important;
}

.modal-title {
    font-size: 1rem !important;
}

.modal-body label {
    font-weight: 500 !important;
    font-size: 0.85rem !important;
}

.modal-body input,
.modal-body select {
    font-size: 0.85rem !important;
    padding: 0.25rem 0.5rem !important;
}

/*.modal-backdrop.show {
    background-color: rgba(0, 0, 0, 0.4);*/
    /*    backdrop-filter: blur(3px);*/
/*}*/
.modal-backdrop {
    background: rgba(0,0,0,0.25); /* tint */
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
}
    /* Let the tint come from the RGBA, not opacity */
    .modal-backdrop.show {
        opacity: 1;
    }

.pulse-highlight {
    animation: pulseGlow 2.5s ease-in-out infinite;
}

@keyframes pulseGlow {
    0% {
        box-shadow: 0 0 0px rgba(220, 53, 69, 0);
    }

    50% {
        box-shadow: 0 0 12px 4px rgba(220, 53, 69, 0.6);
    }

    100% {
        box-shadow: 0 0 0px rgba(220, 53, 69, 0);
    }
}

/*.section-container {
    background-color: #ffffff;*/ /* white background */
    /*padding: 1rem;*/ /* spacing inside */
    /*margin-bottom: 1.5rem;*/ /* spacing between sections */
    /*border-radius: 0.5rem;*/ /* soft corners */
    /*box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);*/ /* subtle shadow */
/*}*/

/* ===================
   BASE LAYOUT
=================== */
.main-content,
.container {
    margin-top: 0rem; /* or padding-top if you prefer internal spacing */
}

html, body {
    height: 100%;
    margin: 0;
    padding: 0;
    overflow-x: hidden; /* allow full width control */
    overflow-y: auto; /* ensure vertical scrolling works */
    background-color: #a2a9ac !important;
    font-family: 'Roboto', Arial, sans-serif !important;
    font-size: 0.95rem; /* or 13px instead of 14px */
}

body {
    display: flex;
    flex-direction: column;
}

main {
    flex: 1;
    display: flex;
    min-height: 0;
}

.btn-square {
    width: 40px;
    text-align: center;
    padding: 0.375rem 0; /* same vertical padding as .btn-sm */
}


/* ===================
   BUTTONS / THEME STUFF
=================== */
/* Buttons*/
/* Primary theme action button (used for <a> and <button>) */
.theme-button {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 10px;
    font-size: 0.8rem;
    font-weight: 600;
    background-color: #001C2B;
    color: #ffffff;
    border: none;
    border-radius: 4px;
    text-decoration: none; /* kill anchor underline */
    cursor: pointer;
    white-space: nowrap;
}

    /* Icon inside theme button */
    .theme-button i {
        font-size: 0.75rem;
    }

    /* Hover + focus states */
    .theme-button:hover,
    .theme-button:focus {
        background-color: #6c757d;
        color: #ffffff;
        text-decoration: none;
    }

    /* Active (pressed) state */
    .theme-button:active {
        background-color: #5a6268;
        text-decoration: none;
    }

    /* Accessibility: visible focus without underline */
    .theme-button:focus-visible {
        outline: 2px solid #9ec5fe;
        outline-offset: 2px;
    }



/* Table*/
.table-dark-whole {
    font-size:0.85rem !important;
}
.table-dark th {
    background-color: #001C2B !important;
}

/* ===================
   ACCORDION
=================== */
/* Remove blue focus ring and add subtle border to accordion toggle */
.accordion-button:focus {
    outline: none !important;
    box-shadow: none !important;
    border: 1px solid #dee2e6 !important; /* light gray border */
}

/* Optional: cleaner default state */
.accordion-button {
    border: 1px solid #dee2e6 !important;
    border-radius: 4px !important;
    padding: 0.75rem 1rem;
}

    .accordion-button:not(.collapsed) {
        background-color: #a2a9ac !important; /* Light gray (Bootstrap neutral) */
        color: black !important;
        box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);
    }

.accordion-button {
    border-radius: 0 !important;
}

.accordion-item {
    border-radius: 0 !important;
}

/* ===================
   NAVIGATION
=================== */

.navbar {
    background-color: #001C2B;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
}

.navbar-logo {
    height: 48px;
}

.navbar-text {
    font-weight: 600;
    font-size: 1.25rem;
    color: white;
}

.navbar-right {
    margin-left: auto;
}

.sidebar {
    background-color: #001C2B;
    color: white;
    padding-top: 1rem;
    font-size: 0.8rem;
    min-height: 100%;
    width: 195px;
    overflow: hidden;
    transition: width 0.3s ease, padding 0.3s ease;
}

.sidebar.collapsed {
    width: 0;
    padding: 0;
}

    .sidebar a {
        color: white;
        text-decoration: none;
        padding: 0.75rem 0.5rem;
        display: block;
    }

.sidebar a:hover {
    background-color: #003452;
}

.sidebar a.active {
    background-color: #a2a9ac;
    color: darkblue;
    border-radius: 0px;
}

/* ===================
   FOOTER
=================== */

footer#bottom {
    height: 40px;
    margin: 0;
    line-height: 40px;
    text-align: center;
    font-size: 13px;
    background-color: #001C2B;
    color: white;
}

/* ===================
   DASHBOARD TILES
=================== */

.dashboard-card {
    width: 180px;
    padding: 10px;
    border-radius: 0 !important;
    border: solid thin #212529;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);
    background-color: #6c757d;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    cursor: pointer;
}

.dashboard-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
    background-color: #001C2B;
}

.dashboard-card .badge {
    font-size: 0.6rem;
    padding: 4px 6px;
    border-radius: 0 !important;
}

.dashboard-icon {
    font-size: 1.2rem;
    color: white;
}

.card-title {
    margin-top: 0.75rem;
    font-weight: 600;
    font-size: 0.90rem;
    color: white;
}

/* ===================
   QUICK INSIGHTS
=================== */

.insights-table {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.insight-row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-left: 2px;
}

.insight-row i {
    width: 20px;
    text-align: center;
    font-size: 14px;
}

.insight-row .label {
    flex-grow: 1;
    font-size: 0.875rem;
}

/* ===================
   SPINNER & TOASTS
=================== */

.spinner-overlay {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 2000;
    width: 100vw;
    height: 100vh;
    background-color: rgba(0, 0, 0, 0.85);
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
}

.spinner-overlay.show {
    opacity: 1;
    visibility: visible;
}

.spinner-border {
    animation: spinner-spin 0.8s linear infinite;
    border-width: 0.3em;
    box-shadow: 0 0 10px rgba(255, 255, 255, 0.2);
}

@keyframes spinner-spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Toasts */
.toast {
    border-radius: 0.5rem;
    animation: slideDownFromTop 0.4s ease-out forwards;
    opacity: 0;
}

@keyframes slideDownFromTop {
    from { transform: translateY(-40px); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}

.toast.fade:not(.show) {
    opacity: 0;
    transform: translateY(60px);
    transition: opacity 0.3s ease, transform 0.3s ease;
}

.toast.bg-success { border-left: 5px solid #28a745; }
.toast.bg-danger  { border-left: 5px solid #dc3545; }
.toast.bg-info    { border-left: 5px solid #0dcaf0; }

#toastIcon { font-size: 1.2rem; margin-right:10px!important; }

/* ===================
   MISCELLANEOUS COMPONENTS
=================== */

/* Footer logo */
.dashboard-logo-wrapper {
    position: absolute;
    bottom: 40px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 0; /* Send to back */
    pointer-events: none; /* Optional: avoids it catching clicks */
}

.dashboard-logo {
    max-width: 200px;
    opacity: 0.2; /* Gentle watermark feel */
    z-index: 0;
}

/* ===================
   STOCK TABLE COMPONENTS
=================== */

/* Child Rows */
table.child-detail-table > thead > tr > th {
    background-color: #6c757d;
    color: white;
    font-size: 13px;
}

.child-detail-table thead th {
    font-weight: bold;
    padding: 6px 10px;
    border: 1px solid #dee2e6;
}

.child-detail-table tbody td {
    background-color: #f8f9fa;
    border: 1px solid #dee2e6;
    padding: 5px 10px;
    font-size: 12px;
    font-weight: 500;
}

.child-wrapper {
    background-color: #838689; /* light gray */
    padding: 0.75rem 1rem;
    margin-top: 4px;
    margin-bottom: 4px;
    box-shadow: inset 0 0 4px rgba(0,0,0,0.05);
}

.child-fade {
    opacity: 0;
    transition: opacity 0.4s ease-in-out;
}

    .child-fade.show {
        opacity: 1;
    }

#productTable tbody tr.shown + tr td {
    padding: 0 !important;
    border-top: none !important;
    line-height: 0 !important; /* optionally collapse extra spacing */
}

/* ===================
   DATA TABLES PAGING
=================== */
/* All pagination buttons */
div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item .page-link {
    background-color: #f8f9fa !important;
    border: 1px solid #dee2e6 !important;
    color: #343a40 !important;
    font-weight: 500;
}

/* Active page */
div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item.active .page-link {
    background-color: #343a40 !important;
    border-color: #343a40 !important;
    color: #f8f9fa !important;
}

/* Hover effect */
div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item .page-link:hover {
    background-color: #e9ecef !important;
    color: #212529 !important;
    border-color: #adb5bd !important;
}

/* Remove blue focus border after clicking (no outline or glow) */
div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item .page-link:focus {
    outline: none !important;
    box-shadow: none !important;
}

/* Fix DataTables select and input spacing */
.dataTables_filter input,
.dataTables_length select {
    padding: 0.25rem 0.5rem !important;
    font-size: 0.875rem !important;
    height: auto !important;
    border: 1px solid #ced4da !important;
    border-radius: 0.25rem !important;
    box-shadow: none !important;
    outline: none !important;
}
.dataTables_length select {
    width: 75px !important; /* or try 80px if needed */
    padding-right: 1.5rem !important; /* space for dropdown arrow */
    font-size: 0.875rem !important;
    height: auto !important;
    border: 1px solid #ced4da !important;
    border-radius: 0.25rem !important;
    box-shadow: none !important;
}

table.dataTable tbody td {
    vertical-align: middle;
}

/* ===================
   LOGIN SCREEN
=================== */
.slogan-line {
    width: 95%;
    max-width: 400px;
    height: 1px;
    border: none;
    margin: 0.5rem auto;
    background: linear-gradient(to right, transparent, rgba(255,255,255,0.8), transparent);
}

.slogan-text {
    font-size: 1.5rem;
    font-weight: 600;
    color: #f8f9fa;
    text-align: center;
    margin: 0.5rem auto;
}

.login-wrapper {
    display: flex;
    height: 100vh;
    width: 100%;
}

.login-left,
.login-right {
    flex: 1;
    min-width: 0;
}

.login-left {
    background: url('https://mroofing.co.za/wp-content/uploads/2023/06/Isolation-roof.png') no-repeat center center;
    background-size: cover;
    position: relative;
}

    .login-left::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background-color: rgba(0, 0, 0, 0.6); /* dark overlay */
    }

.login-logo {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1;
    text-align: center;
    color: white;
    width: 100%;
}

    .login-logo img {
        height: 70px;
        margin-bottom: 10px;
    }

    .login-logo h1 {
        font-size: 2rem;
        font-weight: 600;
        color: #f8f9fa;
    }

.login-right {
    background-color: #1c1e21;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3rem;
    color: #f8f9fa;
}

#stockGridWrapper {
    opacity: 0;
    transition: opacity 0.5s ease-in;
}

    #stockGridWrapper.visible {
        opacity: 1;
    }

/* Widen toast so text doesn’t wrap so easily */
#toastMessage.toast {
    max-width: 520px; /* adjust: 500–600px works well */
    width: auto;
}

/* Keep text neat */
#toastMessage .toast-body {
    font-size: 0.9rem;
    line-height: 1.35;
    white-space: normal;
    word-wrap: break-word;
}

/* Toast polish */
#toastMessage .toast-header .me-2 {
    margin-right: .5rem !important; /* space between icon + title */
}

#toastMessage .toast-title {
    display: inline-flex;
    align-items: center;
    gap: .5rem; /* extra safety spacing */
}

/* Make ‘Missing:’ line readable on green bg */
#toastMessage .text-muted {
    color: #f5ffcc !important; /* light yellow-green for contrast */
    opacity: 0.95;
}

/* Optional: align the close (x) a hair lower so it centers visually */
#toastMessage .btn-close {
    transform: translateY(2px);
}

/* === Round Bootstrap radio buttons === */
.form-check-input[type="radio"] {
    border-radius: 10% !important; /* force perfect circle */
    aspect-ratio: 1 / 1 !important; /* equal height/width even when scaled */
    width: 1.1em !important; /* optional: normalize size */
    height: 1.1em !important;
    margin-top: 0.2em; /* slight vertical align */
}
    .form-check-input[type="radio"]:checked {
        box-shadow: 0 0 0 2px #fff, 0 0 0 4px #b5babc;
        border-color: #001c2b;
        background-color: #001c2b;
    }


/* ===== Quote/Order lines table ===== */
.qg-table {
    --qg-header-bg: #001C2B; /* brand navy */
    --qg-header-bd: #072b45; /* darker border */
    --qg-row-alt: #f7fbff; /* light zebra */
    --qg-total-bg: #eef4fb;
    --qg-total-bd: #cad8ea;
    --qg-profit: #198754; /* green */
    --qg-loss: #dc3545; /* red */
    font-size: .9rem;
    border-collapse: separate;
    border-spacing: 0;
}

    .qg-table thead th {
        background: var(--qg-header-bg) !important;
        color: #fff !important;
        border-bottom: 2px solid var(--qg-header-bd) !important;
        position: sticky; /* sticky header in long lists */
        top: 0;
        z-index: 2;
    }

    .qg-table th,
    .qg-table td {
        padding: .5rem .6rem;
        vertical-align: middle;
        white-space: nowrap;
    }

    .qg-table tbody tr:nth-child(even) td {
        background: var(--qg-row-alt);
    }

    .qg-table tbody tr:hover td {
        background: rgba(13, 110, 253, .06); /* subtle hover */
    }

    .qg-table .qg-cell-num {
        text-align: right;
        font-variant-numeric: tabular-nums; /* tidy columns of numbers */
    }

    .qg-table .qg-cell-center {
        text-align: center;
    }

    /* Totals row */
    .qg-table tfoot td,
    .qg-table .qg-row-total td {
        background: var(--qg-total-bg);
        border-top: 2px solid var(--qg-total-bd);
        font-weight: 600;
    }

    /* Profit colouring */
    .qg-table .qg-gp-pos {
        color: var(--qg-profit);
        font-weight: 600;
    }

    .qg-table .qg-gp-neg {
        color: var(--qg-loss);
        font-weight: 600;
    }

/* Keep first column readable on narrow screens */
@media (max-width: 1200px) {
    .qg-table .qg-col-name {
        max-width: 260px;
        overflow: hidden;
        text-overflow: ellipsis;
    }
}

/* Compact buttons inside table cells */
.qg-table .btn.btn-sm {
    padding: .15rem .4rem;
    border-radius: .35rem;
}

/* ==== Modal polish (global) ==== */
.modal-header--dark {
    background: #001c2b;
    color: #fff;
    border-bottom: 0;
}

    .modal-header--dark .btn-close {
        filter: invert(1) grayscale(100%);
        opacity: .9;
    }

.modal-section {
    border: 1px solid black;
    border-radius: .75rem;
    padding: 1rem;
    margin-bottom: 1rem;
    background: #e7e7e7;
    box-shadow: 0 2px 6px rgba(0,0,0,.04);
}

    .modal-section > .section-title {
        font-weight: 600;
        margin-bottom: .75rem;
    }

.form-label {
    font-weight: 500;
}


/* NEW ORDER TABLE DESIGN*/
/* === Millennium Roofing DataTables theme === */
/* Card wrapper around the whole table */
.dataTables_wrapper {
    background: #fff;
    border: 1px solid rgba(0,0,0,.08);
    border-radius: 14px;
    box-shadow: 0 4px 16px rgba(11,46,91,.08);
    padding: 12px 12px 6px;
}

/* Header bar (length + search row) */
.mr-grid-toolbar {
    margin-bottom: .25rem;
}

.dataTables_length label,
.dataTables_filter label {
    margin-bottom: 0;
    font-weight: 500;
}

/* Table header */
table.dataTable thead th {
    background: #001c2b; /* Millennium navy */
    color: #fff;
    border-bottom: none !important;
    vertical-align: middle;
}

table.dataTable thead th,
table.dataTable tbody td {
    padding: .55rem .75rem; /* compact but readable */
}

/* Row stripes + hover */
table.dataTable.stripe tbody tr:nth-child(odd) {
    background-color: #f8fbff; /* ultra light blue */
}

table.dataTable.hover tbody tr:hover {
    background-color: #eef5ff; /* hover highlight */
}

/* Rounded top corners on header, bottom on wrapper */
table.dataTable thead th:first-child {
    border-top-left-radius: 0;
}

table.dataTable thead th:last-child {
    border-top-right-radius:0;
}

/* Info + pagination row spacing */
.dataTables_info {
    padding-top: .25rem;
}

.dataTables_paginate {
    padding-top: .25rem;
}

/* DataTables Pagination - Compact Millennium Style */
.dataTables_wrapper .dataTables_paginate {
    margin-top: .25rem;
}

    .dataTables_wrapper .dataTables_paginate .paginate_button {
        border: 1px solid rgba(11,46,91,.25);
        border-radius: 4px;
        margin: 0 .1rem;
        padding: .15rem .4rem; /* smaller */
        font-size: .85rem; /* slightly reduced text size */
        line-height: 1.2;
        background: #fff;
        color: #0b2e5b !important;
        transition: all 0.15s ease;
    }

        .dataTables_wrapper .dataTables_paginate .paginate_button.current {
            background: #0b2e5b !important;
            color: #fff !important;
            border-color: #0b2e5b;
        }

        .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
            background: #113b73 !important;
            color: #fff !important;
            border-color: #113b73;
        }

        .dataTables_wrapper .dataTables_paginate .paginate_button.disabled {
            opacity: 0.5;
            cursor: not-allowed;
        }


/* Search input + length select – compact controls */
.dataTables_filter input.form-control,
.dataTables_length select.form-select {
    height: 34px;
    padding: .25rem .5rem;
}

/* Right-align the Actions col */
th.text-end, td.text-end {
    text-align: right;
}
/* Opt-in compact density */
table.mr-compact.dataTable thead th,
table.mr-compact.dataTable tbody td {
    padding: .4rem .6rem;
}


/* Fullscreen modal should fit the viewport */
/* --- Force fullscreen modal to fit viewport properly --- */
.modal-dialog.modal-fullscreen {
    margin: 0 !important;
    max-width: 100vw !important;
    width: 100vw !important;
    height: 100vh !important;
}

/* Modal content: full viewport, no rounding, no shadow */
.modal-fullscreen .modal-content {
    height: 100vh !important;
    width: 100vw !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    overflow: hidden !important;
}

/* Scroll only the body section */
.modal-fullscreen .modal-body {
    overflow-y: auto !important;
    max-height: calc(100vh - 70px) !important; /* leave room for header/footer */
}

/* Freeze background scroll when modal is open */
html.modal-open,
body.modal-open {
    overflow: hidden !important;
    padding-right: 0 !important;
}

/* Header stays fixed, dark Millennium blue */
.modal-fullscreen .modal-header {
    position: sticky !important;
    top: 0 !important;
    z-index: 1060 !important;
    background-color: #001c2b !important; /* Millennium blue */
    color: #fff !important;
    border-bottom: 1px solid rgba(255,255,255,0.1) !important;
    padding: 0.75rem 1.25rem !important;
}

/* Close button visible, properly spaced */
.modal-fullscreen .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%) !important;
    opacity: 1 !important;
    margin-right: 0.25rem !important;
    margin-top: 0.25rem !important;
}

/* Header flatten + themed Close button */
.modal-fullscreen .modal-header {
    background-color: #001c2b !important; /* Millennium dark blue */
    border-radius: 0 !important; /* remove rounding at top */
    color: #fff !important;
    padding: 0.75rem 1.5rem !important;
    border-bottom: 1px solid rgba(255,255,255,0.1);
}

/* Override the modal-content rounding globally (safety net) */
.modal-content {
    border-radius: 0 !important;
}

/* Style the Close button to fit the dark header */
.modal-header .btn-light {
    background-color: #f8f9fa !important;
    border: none !important;
    border-radius: 4px !important;
    transition: background-color 0.2s ease;
}

    .modal-header .btn-light:hover {
        background-color: #e2e6ea !important;
    }


/* Kill ALL rounding on fullscreen modal (variables + properties) */
#loadModal, /* <-- use your modal's id */
#loadModal .modal-dialog,
#loadModal .modal-content,
#loadModal .modal-header {
    --bs-modal-border-radius: 0 !important;
    --bs-modal-inner-border-radius: 0 !important;
    --bs-border-radius: 0 !important; /* utility fallback */
    border-radius: 0 !important; /* direct property fallback */
    box-shadow: none !important;
}

    /* Keep the fullscreen layout tight */
    #loadModal .modal-dialog.modal-fullscreen {
        margin: 0 !important;
        width: 100vw !important;
        height: 100vh !important;
    }

    #loadModal .modal-content {
        height: 100vh !important;
        overflow: hidden !important;
    }

    #loadModal .modal-header {
        background: #001c2b !important;
        color: #fff !important;
        position: sticky !important;
        top: 0 !important;
        z-index: 1060 !important;
    }

    #loadModal .modal-body {
        overflow-y: auto !important;
        max-height: calc(100vh - 70px) !important;
    }

/* === Admin Table Badge Enhancements === */
.admin-table .badge,
.table.admin-table .badge,
.dataTable .badge {
    font-size: 0.75rem; /* slightly larger */
    padding: 0.35rem 0.6rem; /* a bit more breathing room */
    border-radius: 0.3rem; /* smoother pill shape */
    font-weight: 600; /* readable boldness */
    letter-spacing: 0.2px;
}

    /* optional: green tone adjustment for visibility */
    .admin-table .badge.bg-success {
        background-color: #198754 !important; /* keep Bootstrap success green */
        color: #fff;
    }

/* optional subtle shadow for better contrast on white tables */
.admin-table .badge {
    box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}

/* === Global grid header style === */
.table thead.table-millennium {
    background-color: #001C2B!important;
    color: #ffffff!important;
}

    .table thead.table-millennium th {
        color: #ffffff;
        font-weight: 600;
        border-bottom: none;
        vertical-align: middle;
    }
    .table thead.table-millennium th {
        white-space: nowrap;
    }

.table-hover tbody tr:hover {
    background-color: rgba(0, 28, 43, 0.04);
}
/* Millennium table header (Bootstrap-friendly) */
.table thead.table-millennium {
    --bs-table-bg: #001C2B;
    --bs-table-color: #ffffff;
}

    /* Force header cells */
    .table thead.table-millennium th {
        background-color: #001C2B !important;
        color: #ffffff !important;
        font-weight: 600;
        border-bottom: none;
        vertical-align: middle;
        white-space: nowrap;
    }

/* Vertically center all table cell content */
.table td,
.table th {
    vertical-align: middle !important;
}

.status-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 3px 8px;
    border-radius: 3px;
    font-size: 0.78rem;
    font-weight: 600;
    line-height: 1.4;
    white-space: nowrap;
    width: 100%;
    text-align: center;
}

.status-new {
    background: #adb5bd;
    color: #001C2B;
}

.status-inprogress {
    background: #0dcaf0;
    color: #001C2B;
}

.status-quoted {
    background: #6f42c1;
    color: #ffffff;
}

.status-approved {
    background: #198754;
    color: #ffffff;
}

.status-rejected {
    background: #dc3545;
    color: #ffffff;
}

.status-implemented {
    background: #0d6efd;
    color: #ffffff;
}