@import '_content/PSC.Blazor.Components.Chartjs/PSC.Blazor.Components.Chartjs.bundle.scp.css';
@import '_content/RazorGrid/RazorGrid.a724m57zte.bundle.scp.css';
@import '_content/RollingPlainsPortal.Estimating/RollingPlainsPortal.Estimating.dgv40uefba.bundle.scp.css';

/* /Components/Layout/MainLayout.razor.rz.scp.css */
.app-layout[b-jsgjtkyp3p] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.app-navbar[b-jsgjtkyp3p] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 56px;
    z-index: 1030;
    background-color: var(--color-bg-navbar) !important;
    box-shadow: var(--shadow-navbar);
    transition: background-color var(--transition-normal);
}

.app-body[b-jsgjtkyp3p] {
    display: flex;
    flex: 1;
    margin-top: 56px;
}

.app-sidebar[b-jsgjtkyp3p] {
    position: fixed;
    top: 56px;
    left: 0;
    bottom: 0;
    background-color: var(--color-bg-sidebar);
    overflow: visible;
    transition: width var(--transition-normal), background-color var(--transition-normal), box-shadow var(--transition-normal);
    z-index: 1020;
    box-shadow: 1px 0 3px rgba(0, 0, 0, 0.04);
}

.sidebar-scroll[b-jsgjtkyp3p] {
    overflow-y: auto;
    height: 100%;
}

.app-sidebar.expanded[b-jsgjtkyp3p] {
    width: 260px;
}

.app-sidebar.collapsed[b-jsgjtkyp3p] {
    width: 60px;
}

.app-sidebar.closed[b-jsgjtkyp3p] {
    width: 0;
    overflow: hidden;
    box-shadow: none;
}

/* Click-through strip over the top of the sidebar: it carries the close button without
   occupying layout height, so no nav menu has to make room for it. */
.sidebar-close-layer[b-jsgjtkyp3p] {
    position: absolute;
    top: 0;
    right: 0;
    z-index: 10;
    padding: 0.375rem 0.5rem 0 0;
    pointer-events: none;
}

.sidebar-close-btn[b-jsgjtkyp3p] {
    pointer-events: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    padding: 0;
    border: none;
    border-radius: var(--radius-md);
    background: transparent;
    color: var(--section-nav-text, var(--color-nav-text));
    opacity: 0.6;
    transition: opacity var(--transition-normal), background-color var(--transition-normal);
}

.sidebar-close-btn:hover[b-jsgjtkyp3p] {
    opacity: 1;
    background-color: var(--section-nav-hover-bg, var(--color-nav-hover-bg));
}

.sidebar-close-btn i[b-jsgjtkyp3p] {
    font-size: 0.875rem;
}

/* Hover-expand: collapsed sidebar overlays content when hovered.
   transition-delay on collapsed state keeps sidebar open briefly after mouse leaves,
   giving the user time to move the cursor into the expanded area. */
@media (min-width: 769px) {
    .app-sidebar.collapsed[b-jsgjtkyp3p] {
        transition-delay: 0.3s;
    }

    .app-sidebar.collapsed:hover[b-jsgjtkyp3p] {
        width: 260px;
        box-shadow: 4px 0 12px rgba(0, 0, 0, 0.15);
        transition-delay: 0s;
    }
}

.app-content[b-jsgjtkyp3p] {
    flex: 1;
    margin-left: 0;
    width: 100%;
    transition: margin-left var(--transition-normal), width var(--transition-normal), background-color var(--transition-normal);
    min-height: calc(100vh - 56px);
    background-color: var(--color-bg-body);
}

.app-sidebar.collapsed ~ .app-content[b-jsgjtkyp3p] {
    margin-left: 60px;
    width: calc(100% - 60px);
}

.app-sidebar.expanded ~ .app-content[b-jsgjtkyp3p] {
    margin-left: 260px;
    width: calc(100% - 260px);
}

.app-sidebar.closed ~ .app-content[b-jsgjtkyp3p] {
    margin-left: 0;
    width: 100%;
}

.logo[b-jsgjtkyp3p] {
    display: block;
}

/* Logo visibility based on theme */
:global([data-theme="light"]) .logo-light[b-jsgjtkyp3p] {
    display: block;
}

:global([data-theme="light"]) .logo-dark[b-jsgjtkyp3p] {
    display: none;
}

:global([data-theme="dark"]) .logo-light[b-jsgjtkyp3p] {
    display: none;
}

:global([data-theme="dark"]) .logo-dark[b-jsgjtkyp3p] {
    display: block;
}

/* Impersonation Mode - offsets layout for the banner */
.app-layout.impersonating .app-navbar[b-jsgjtkyp3p] {
    top: 34px;
}

.app-layout.impersonating .app-body[b-jsgjtkyp3p] {
    margin-top: 90px;
}

.app-layout.impersonating .app-sidebar[b-jsgjtkyp3p] {
    top: 90px;
}

/* Focus Mode - hides navbar and sidebar for full-screen content */
.app-layout.focus-mode .app-navbar[b-jsgjtkyp3p] {
    transform: translateY(-100%);
}

.app-layout.focus-mode .app-sidebar[b-jsgjtkyp3p] {
    transform: translateX(-100%);
}

.app-layout.focus-mode .app-body[b-jsgjtkyp3p] {
    margin-top: 0;
}

.app-layout.focus-mode .app-content[b-jsgjtkyp3p] {
    margin-left: 0;
    width: 100%;
    min-height: 100vh;
}

/* Focus mode exit button - floating button in top-right corner */
.focus-mode-exit[b-jsgjtkyp3p] {
    position: fixed;
    top: 1rem;
    right: 1rem;
    z-index: 1050;
    opacity: 0.3;
    transition: opacity var(--transition-normal);
}

.focus-mode-exit:hover[b-jsgjtkyp3p] {
    opacity: 1;
}

/* Compact viewport — shrink appbar to save vertical space when zoomed */
:global(.viewport-compact) .app-navbar[b-jsgjtkyp3p] {
    height: 40px;
}

:global(.viewport-compact) .app-body[b-jsgjtkyp3p] {
    margin-top: 40px;
}

:global(.viewport-compact) .app-sidebar[b-jsgjtkyp3p] {
    top: 40px;
}

:global(.viewport-compact) .app-content[b-jsgjtkyp3p] {
    min-height: calc(100vh - 40px);
}

:global(.viewport-compact) .app-layout.impersonating .app-navbar[b-jsgjtkyp3p] {
    top: 34px;
}

:global(.viewport-compact) .app-layout.impersonating .app-body[b-jsgjtkyp3p] {
    margin-top: 74px;
}

:global(.viewport-compact) .app-layout.impersonating .app-sidebar[b-jsgjtkyp3p] {
    top: 74px;
}

/* Narrow viewport — even more compact */
:global(.viewport-narrow) .app-navbar[b-jsgjtkyp3p] {
    height: 36px;
}

:global(.viewport-narrow) .app-body[b-jsgjtkyp3p] {
    margin-top: 36px;
}

:global(.viewport-narrow) .app-sidebar[b-jsgjtkyp3p] {
    top: 36px;
}

:global(.viewport-narrow) .app-content[b-jsgjtkyp3p] {
    min-height: calc(100vh - 36px);
}

:global(.viewport-narrow) .app-layout.impersonating .app-navbar[b-jsgjtkyp3p] {
    top: 34px;
}

:global(.viewport-narrow) .app-layout.impersonating .app-body[b-jsgjtkyp3p] {
    margin-top: 70px;
}

:global(.viewport-narrow) .app-layout.impersonating .app-sidebar[b-jsgjtkyp3p] {
    top: 70px;
}

/* Responsive */
@media (max-width: 768px) {
    .app-sidebar[b-jsgjtkyp3p] {
        transform: translateX(-100%);
    }

    .app-sidebar.expanded[b-jsgjtkyp3p] {
        transform: translateX(0);
        width: 260px;
    }

    .app-content[b-jsgjtkyp3p] {
        margin-left: 0 !important;
        width: 100% !important;
    }

    /* Account pages on mobile: show icon-only sidebar instead of hiding */
    .app-layout.account-page .app-sidebar[b-jsgjtkyp3p],
    .app-layout.account-page .app-sidebar.expanded[b-jsgjtkyp3p] {
        transform: translateX(0);
        width: 60px;
    }

    .app-layout.account-page .app-content[b-jsgjtkyp3p] {
        margin-left: 60px !important;
        width: calc(100% - 60px) !important;
    }
}

#blazor-error-ui[b-jsgjtkyp3p] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

#blazor-error-ui .dismiss[b-jsgjtkyp3p] {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}
/* /Components/Layout/NavMenu.razor.rz.scp.css */
/* NavMenu styles are defined globally in theme.css for proper specificity */
/* /Components/Layout/NavMenuField.razor.rz.scp.css */
.nav-item[b-ql6biz2b65]  .nav-icon {
    margin-right: 0.75rem;
    font-size: 1.25rem;
}

.nav-item[b-ql6biz2b65] {
    font-size: 0.9rem;
    padding-bottom: 0.5rem;
}

    .nav-item:first-of-type[b-ql6biz2b65] {
        padding-top: 1rem;
    }

    .nav-item:last-of-type[b-ql6biz2b65] {
        padding-bottom: 1rem;
    }

    .nav-item[b-ql6biz2b65]  .nav-link {
        color: inherit;
        background: none;
        border: none;
        border-radius: var(--radius-md);
        height: 3rem;
        display: flex;
        align-items: center;
        line-height: 3rem;
        width: 100%;
        opacity: 0.85;
        transition: background-color var(--transition-fast), opacity var(--transition-fast);
    }

.nav-item[b-ql6biz2b65]  a.active {
    background-color: var(--color-primary);
    color: var(--color-text-inverse);
    opacity: 1;
}

.nav-item[b-ql6biz2b65]  .nav-link:hover {
    background-color: var(--color-hover-overlay);
    opacity: 1;
}
/* /Components/Pages/Admin/AdminFlags.razor.rz.scp.css */
.flag-card[b-zi2o080ho1] {
    border-left-width: 3px;
}

.flag-card.flag-on[b-zi2o080ho1] {
    border-left-color: var(--bs-primary);
}

.flag-card.flag-off[b-zi2o080ho1] {
    background-color: var(--bs-tertiary-bg);
}

.flag-chevron[b-zi2o080ho1] {
    width: 1.25rem;
}

.flag-meta dt[b-zi2o080ho1] {
    font-size: 0.7rem;
    padding-top: 0.15rem;
}

.flags-rail .list-group-item.active .font-monospace[b-zi2o080ho1] {
    color: inherit !important;
}
/* /Components/Pages/Assignments/Dialogs/CrewOrganizationDialog.razor.rz.scp.css */
.crew-org-overlay[b-o8uolww25d] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.4);
    z-index: 1080;
}

.crew-org-dialog[b-o8uolww25d] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 900px;
    max-width: 95vw;
    height: 100%;
    max-height: 100%;
    background: var(--color-bg-surface);
    border-radius: 8px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
    z-index: 1090;
    display: flex;
    flex-direction: column;
}

/* Once JS owns positioning via top/left, drop the centering transform permanently
   (otherwise it re-applies on drag end and snaps the dialog back by half its size). */
.crew-org-dialog.dragged[b-o8uolww25d] {
    transform: none;
}

/* During active drag/resize, disable transitions */
.crew-org-dialog.interacting[b-o8uolww25d] {
    transition: none !important;
}

.crew-org-header.modal-draggable[b-o8uolww25d] {
    cursor: move;
    user-select: none;
}

/* Resize handles — invisible but interactive. JS appends these to the dialog element,
   so they don't carry this component's scoped attribute; ::deep targets them. */
[b-o8uolww25d] .resize-handle {
    position: absolute;
    z-index: 1;
    background: transparent;
}

[b-o8uolww25d] .resize-handle-n,
[b-o8uolww25d] .resize-handle-s {
    left: 12px;
    right: 12px;
    height: 8px;
    cursor: ns-resize;
}

[b-o8uolww25d] .resize-handle-n { top: -4px; }
[b-o8uolww25d] .resize-handle-s { bottom: -4px; }

[b-o8uolww25d] .resize-handle-e,
[b-o8uolww25d] .resize-handle-w {
    top: 12px;
    bottom: 12px;
    width: 8px;
    cursor: ew-resize;
}

[b-o8uolww25d] .resize-handle-e { right: -4px; }
[b-o8uolww25d] .resize-handle-w { left: -4px; }

[b-o8uolww25d] .resize-handle-nw,
[b-o8uolww25d] .resize-handle-ne,
[b-o8uolww25d] .resize-handle-sw,
[b-o8uolww25d] .resize-handle-se {
    width: 12px;
    height: 12px;
}

[b-o8uolww25d] .resize-handle-nw { top: -4px; left: -4px; cursor: nwse-resize; }
[b-o8uolww25d] .resize-handle-ne { top: -4px; right: -4px; cursor: nesw-resize; }
[b-o8uolww25d] .resize-handle-sw { bottom: -4px; left: -4px; cursor: nesw-resize; }
[b-o8uolww25d] .resize-handle-se { bottom: -4px; right: -4px; cursor: nwse-resize; }

.crew-org-header[b-o8uolww25d] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--color-border);
    background: var(--color-bg-header);
    border-radius: 8px 8px 0 0;
}

.crew-org-body[b-o8uolww25d] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.suggestion-banner[b-o8uolww25d] {
    display: flex;
    align-items: center;
    padding: 0.75rem 1rem;
    background: var(--color-warning-bg);
    border-bottom: 1px solid var(--color-warning);
    color: var(--color-warning);
}

.crew-org-content[b-o8uolww25d] {
    display: flex;
    flex: 1;
    overflow: hidden;
}

.unassigned-panel[b-o8uolww25d] {
    width: 40%;
    display: flex;
    flex-direction: column;
    border-right: 1px solid var(--color-border);
    background: var(--color-bg-muted);
    transition: box-shadow 0.15s;
}

.unassigned-panel.drag-over[b-o8uolww25d] {
    box-shadow: inset 0 0 0 3px var(--color-focus-ring);
    background: var(--color-hover-overlay);
}

.crews-panel[b-o8uolww25d] {
    width: 60%;
    display: flex;
    flex-direction: column;
}

.panel-header[b-o8uolww25d] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--color-border-light);
    background: var(--color-bg-surface);
}

.employee-list[b-o8uolww25d] {
    flex: 1;
    overflow-y: auto;
    padding: 0;
}

.employee-item[b-o8uolww25d] {
    display: flex;
    align-items: center;
    padding: 0.5rem 1rem;
    border-bottom: 1px solid var(--color-border-light);
    cursor: grab;
    transition: all 0.15s;
    background: var(--color-bg-surface);
}

.employee-item:hover[b-o8uolww25d] {
    background-color: var(--color-bg-selected);
}

.employee-item:active[b-o8uolww25d] {
    cursor: grabbing;
    background-color: var(--color-bg-hover);
}

.employee-info[b-o8uolww25d] {
    flex: 1;
    min-width: 0;
}

.employee-name[b-o8uolww25d] {
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.crews-list[b-o8uolww25d] {
    flex: 1;
    overflow-y: auto;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.crew-group[b-o8uolww25d] {
    border: 2px dashed var(--color-border);
    border-radius: 8px;
    background: var(--color-bg-surface);
    transition: all 0.2s;
}

.crew-group.drag-over[b-o8uolww25d] {
    border-color: var(--color-primary);
    background: var(--color-hover-overlay);
    box-shadow: 0 0 0 3px var(--color-focus-ring);
}

.crew-group.reference[b-o8uolww25d] {
    border-style: solid;
    border-color: var(--color-border-light);
    background: var(--color-bg-muted);
}

.reference-foreman[b-o8uolww25d] {
    font-weight: 500;
    padding: 0.25rem 0;
}

.member-item.reference-member[b-o8uolww25d] {
    background: transparent;
    color: var(--color-text-muted);
    font-style: italic;
}

.crew-header[b-o8uolww25d] {
    display: flex;
    gap: 0.75rem;
    align-items: flex-end;
    padding: 0.75rem;
    border-bottom: 1px solid var(--color-border-light);
    background: var(--color-bg-header);
    border-radius: 6px 6px 0 0;
}

.crew-foreman[b-o8uolww25d] {
    flex: 1;
}

.crew-foreman-name[b-o8uolww25d] {
    font-weight: 500;
    padding: 0.25rem 0;
}

.crew-foreman-hint[b-o8uolww25d] {
    padding: 0.25rem 0;
}

.crew-members[b-o8uolww25d] {
    min-height: 60px;
    padding: 0.5rem;
}

.member-item[b-o8uolww25d] {
    display: flex;
    align-items: center;
    padding: 0.375rem 0.5rem;
    border-radius: 4px;
    background: var(--color-bg-hover);
    margin-bottom: 0.375rem;
    font-size: 0.875rem;
}

.member-item:last-child[b-o8uolww25d] {
    margin-bottom: 0;
}

.member-item[draggable="true"][b-o8uolww25d] {
    cursor: grab;
}

.member-item[draggable="true"]:active[b-o8uolww25d] {
    cursor: grabbing;
}

/* Clickable outline star that promotes a member to crew lead. */
.star-btn[b-o8uolww25d] {
    border: none;
    background: transparent;
    padding: 0 0.375rem 0 0;
    line-height: 1;
    color: var(--color-text-muted);
    cursor: pointer;
}

.star-btn:hover[b-o8uolww25d] {
    color: var(--color-warning);
}

.star-spacer[b-o8uolww25d] {
    display: inline-block;
    width: 1.375rem;
}

/* Crew lead shown in the member list — visually distinct from movable members. */
.member-item.member-lead[b-o8uolww25d] {
    background: var(--color-bg-header);
    font-weight: 500;
}

/* Members already assigned to the project (reassigned, not created). */
.member-item.member-existing[b-o8uolww25d] {
    border: 1px dashed var(--color-border);
}

.drop-hint[b-o8uolww25d] {
    color: var(--color-text-muted);
}

.crew-count[b-o8uolww25d] {
    padding: 0.5rem 0.75rem;
    background: var(--color-bg-header);
    border-top: 1px solid var(--color-border-light);
    font-size: 0.75rem;
    color: var(--color-text-muted);
    border-radius: 0 0 6px 6px;
}

.crew-org-footer[b-o8uolww25d] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid var(--color-border);
    background: var(--color-bg-header);
    border-radius: 0 0 8px 8px;
}

.summary[b-o8uolww25d] {
    font-size: 0.875rem;
}

@media (max-width: 768px) {
    .crew-org-dialog[b-o8uolww25d] {
        width: 98%;
        max-height: 100%;
    }

    .crew-org-content[b-o8uolww25d] {
        flex-direction: column;
    }

    .unassigned-panel[b-o8uolww25d],
    .crews-panel[b-o8uolww25d] {
        width: 100%;
        border-right: none;
    }

    .unassigned-panel[b-o8uolww25d] {
        border-bottom: 1px solid var(--color-border);
        max-height: 40%;
    }

    .crews-panel[b-o8uolww25d] {
        flex: 1;
    }
}
/* /Components/Pages/Assignments/Dialogs/ProjectPickerDialog.razor.rz.scp.css */
.picker-dialog-overlay[b-ieh10esku2] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.4);
    z-index: 1080;
}

.picker-dialog[b-ieh10esku2] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 450px;
    max-width: 95vw;
    max-height: 80vh;
    background: var(--color-bg-surface);
    border-radius: 8px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
    z-index: 1090;
    display: flex;
    flex-direction: column;
}

.picker-dialog-header[b-ieh10esku2] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--color-border);
}

.picker-dialog-body[b-ieh10esku2] {
    padding: 1rem 1.25rem;
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.picker-list[b-ieh10esku2] {
    flex: 1;
    overflow-y: auto;
    margin: 0 -1.25rem;
    max-height: 400px;
}

.picker-item[b-ieh10esku2] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1.25rem;
    border-bottom: 1px solid var(--color-border-light);
    cursor: pointer;
    transition: background-color 0.15s;
}

.picker-item:hover[b-ieh10esku2] {
    background-color: var(--color-bg-hover);
}

.picker-item.selected[b-ieh10esku2] {
    background-color: var(--color-bg-selected);
}

.picker-item-info[b-ieh10esku2] {
    flex: 1;
    min-width: 0;
}

.picker-item-name[b-ieh10esku2] {
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.picker-dialog-footer[b-ieh10esku2] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid var(--color-border);
    background: var(--color-bg-header);
}

@media (max-width: 576px) {
    .picker-dialog[b-ieh10esku2] {
        width: 98%;
    }
}
/* /Components/Pages/Assignments/Dialogs/ScheduleBulkEditPanel.razor.rz.scp.css */
.bulk-edit-overlay[b-vlai10a0ps] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.3);
    z-index: 1060;
}

.bulk-edit-panel[b-vlai10a0ps] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 400px;
    max-width: 95vw;
    background: var(--color-bg-surface);
    border-radius: 8px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
    z-index: 1070;
    display: flex;
    flex-direction: column;
}

.bulk-edit-header[b-vlai10a0ps] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--color-border);
}

.bulk-edit-content[b-vlai10a0ps] {
    padding: 1.25rem;
    max-height: 60vh;
    overflow-y: auto;
}

.bulk-edit-field[b-vlai10a0ps] {
    padding: 0.75rem;
    background: var(--color-bg-muted);
    border-radius: 6px;
    margin-bottom: 0.75rem;
}

.bulk-edit-field:last-child[b-vlai10a0ps] {
    margin-bottom: 0;
}

.bulk-edit-field .field-inputs[b-vlai10a0ps] {
    padding-left: 1.5rem;
}

.bulk-edit-summary[b-vlai10a0ps] {
    padding: 0.75rem 1.25rem;
    background: var(--color-bg-muted);
    border-top: 1px solid var(--color-border);
    font-size: 0.875rem;
}

.bulk-edit-footer[b-vlai10a0ps] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid var(--color-border);
}

/* Date picker button styling */
.date-picker-btn[b-vlai10a0ps] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.bulk-edit-header.draggable-header[b-vlai10a0ps] {
    cursor: move;
    user-select: none;
}

.bulk-edit-panel.interacting[b-vlai10a0ps] {
    transition: none !important;
}

/* Sticky once the user starts dragging — see ScheduleEditAssignmentsDialog.razor.css for
   the full explanation. */
.bulk-edit-panel.dragged[b-vlai10a0ps] {
    transform: none !important;
}
/* /Components/Pages/Assignments/Dialogs/ScheduleCreateAssignmentsDialog.razor.rz.scp.css */
.create-dialog-overlay[b-np27qigr0d] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.3);
    z-index: 1060;
}

.create-dialog[b-np27qigr0d] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 800px;
    max-width: 95vw;
    max-height: 90vh;
    background: var(--color-bg-surface);
    border-radius: 8px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
    z-index: 1070;
    display: flex;
    flex-direction: column;
}

.create-dialog-header[b-np27qigr0d] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--color-border);
}

.create-dialog-body[b-np27qigr0d] {
    display: flex;
    flex: 1;
    overflow: hidden;
}

.selection-panel[b-np27qigr0d] {
    width: 50%;
    display: flex;
    flex-direction: column;
    border-right: 1px solid var(--color-border);
}

.selection-header[b-np27qigr0d] {
    padding: 1rem;
    border-bottom: 1px solid var(--color-border-light);
}

.selection-list[b-np27qigr0d] {
    flex: 1;
    overflow-y: auto;
    padding: 0;
}

.selection-item[b-np27qigr0d] {
    display: flex;
    align-items: center;
    padding: 0.5rem 1rem;
    border-bottom: 1px solid var(--color-border-light);
    cursor: pointer;
    transition: background-color 0.15s;
}

.selection-item:hover[b-np27qigr0d] {
    background-color: var(--color-bg-hover);
}

.selection-item.selected[b-np27qigr0d] {
    background-color: var(--color-bg-selected);
}

.selection-item .item-info[b-np27qigr0d] {
    flex: 1;
    min-width: 0;
}

.selection-item .item-name[b-np27qigr0d] {
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.selection-footer[b-np27qigr0d] {
    padding: 0.75rem 1rem;
    background: var(--color-bg-header);
    border-top: 1px solid var(--color-border);
    font-size: 0.875rem;
    color: var(--color-text-muted);
}

.details-panel[b-np27qigr0d] {
    width: 50%;
    padding: 1.25rem;
    overflow-y: auto;
}

.create-dialog-footer[b-np27qigr0d] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid var(--color-border);
    background: var(--color-bg-header);
}

/* Date picker button styling */
.date-picker-btn[b-np27qigr0d] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

/* Project selector panel (for Employee grouping) */
.project-selector-panel[b-np27qigr0d] {
    width: 300px;
    padding: 1.25rem;
    background: var(--color-bg-muted);
    border-right: 1px solid var(--color-border);
    display: flex;
    flex-direction: column;
}

.selected-project-card[b-np27qigr0d] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.75rem;
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border);
    border-radius: 0.375rem;
}

.selected-project-card .project-info[b-np27qigr0d] {
    flex: 1;
    min-width: 0;
}

.selected-project-card .project-name[b-np27qigr0d] {
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

@media (max-width: 768px) {
    .create-dialog[b-np27qigr0d] {
        width: 98%;
        max-height: 95vh;
    }

    .create-dialog-body[b-np27qigr0d] {
        flex-direction: column;
    }

    .selection-panel[b-np27qigr0d],
    .details-panel[b-np27qigr0d],
    .project-selector-panel[b-np27qigr0d] {
        width: 100%;
        border-right: none;
    }

    .selection-panel[b-np27qigr0d] {
        border-bottom: 1px solid var(--color-border);
        max-height: 50%;
    }

    .project-selector-panel[b-np27qigr0d] {
        border-bottom: 1px solid var(--color-border);
    }
}
/* /Components/Pages/Assignments/Dialogs/ScheduleEditAssignmentsDialog.razor.rz.scp.css */
.edit-dialog-overlay[b-o2abh6vuwl] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: 1040;
}

.edit-dialog[b-o2abh6vuwl] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 95%;
    max-width: 1500px;
    max-height: 90vh;
    background: var(--color-bg-surface);
    border-radius: 8px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
    z-index: 1050;
    display: flex;
    flex-direction: column;
}

.edit-dialog-header[b-o2abh6vuwl] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.5rem;
    border-bottom: 1px solid var(--color-border);
}

.header-info[b-o2abh6vuwl] {
    display: flex;
    flex-direction: column;
}

.edit-dialog-toolbar[b-o2abh6vuwl] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1.5rem;
    background: var(--color-bg-header);
    border-bottom: 1px solid var(--color-border);
}

.edit-dialog-content[b-o2abh6vuwl] {
    flex: 1;
    overflow: auto;
    padding: 0;
    min-height: 300px;
    max-height: calc(90vh - 220px);
}

.edit-dialog-content .table[b-o2abh6vuwl] {
    margin-bottom: 0;
}

.edit-dialog-content .table thead th[b-o2abh6vuwl] {
    position: sticky;
    top: 0;
    background: var(--color-bg-surface);
    z-index: 10;
    border-top: none;
    font-weight: 600;
    font-size: 0.875rem;
    white-space: nowrap;
    padding: 0.75rem 0.5rem;
}

.edit-dialog-content .table tbody td[b-o2abh6vuwl] {
    vertical-align: middle;
    padding: 0.5rem;
}

/* Checkbox column - narrower with left padding */
.checkbox-col[b-o2abh6vuwl] {
    width: 32px;
    min-width: 32px;
    max-width: 32px;
    padding-left: 1rem !important;
}

/* Modified indicator column - narrow */
.modified-col[b-o2abh6vuwl] {
    width: 24px;
    min-width: 24px;
    max-width: 24px;
    text-align: center;
}

/* Name column - resizable */
.name-col[b-o2abh6vuwl] {
    min-width: 100px;
    max-width: 500px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Crew grouping: members hang-indent under their foreman. */
.name-col.crew-member-cell[b-o2abh6vuwl] {
    padding-left: 22px;
}

.crew-header-row td[b-o2abh6vuwl] {
    background: var(--color-bg-muted, #f1f3f5);
    padding-top: 6px;
    padding-bottom: 6px;
}

/* Week navigator (By Week view) */
.edit-dialog-weeknav[b-o2abh6vuwl] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    padding: 0.4rem 1.5rem;
    background: var(--color-bg-header);
    border-bottom: 1px solid var(--color-border);
}

.edit-dialog-weeknav .week-label[b-o2abh6vuwl] {
    font-weight: 600;
    font-size: 0.875rem;
    min-width: 180px;
    text-align: center;
}

/* Grouped view: summary + expandable child rows */
.group-summary-row[b-o2abh6vuwl] {
    cursor: pointer;
}

.group-summary-row td[b-o2abh6vuwl] {
    background: var(--color-bg-muted, #f1f3f5);
    padding-top: 6px;
    padding-bottom: 6px;
}

.group-summary-row:hover td[b-o2abh6vuwl] {
    background: var(--color-bg-hover, #e9ecef);
}

.edit-dialog-content .table tbody tr.child-row td[b-o2abh6vuwl] {
    background: var(--color-bg-surface);
}

.row-saving[b-o2abh6vuwl] {
    opacity: 0.7;
}

/* Project pick button in the name column (Employee view) */
.project-pick-btn[b-o2abh6vuwl] {
    color: var(--color-primary);
    text-decoration: none;
    white-space: nowrap;
}

.project-pick-btn:hover[b-o2abh6vuwl] {
    text-decoration: underline;
}

.name-col.resizable[b-o2abh6vuwl] {
    position: relative;
}

.name-col .th-content[b-o2abh6vuwl] {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.name-col .resize-handle[b-o2abh6vuwl] {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: 6px;
    cursor: col-resize;
    background: transparent;
    transition: background-color 0.15s;
}

.name-col .resize-handle:hover[b-o2abh6vuwl],
.edit-dialog.resizing .name-col .resize-handle[b-o2abh6vuwl] {
    background: rgba(0, 18, 107, 0.3);
}

/* Disable text selection during resize */
.edit-dialog.resizing[b-o2abh6vuwl] {
    user-select: none;
    cursor: col-resize;
}

.edit-dialog-content .table tbody tr.table-warning[b-o2abh6vuwl] {
    background-color: rgba(255, 193, 7, 0.15) !important;
}

.edit-dialog-content .table tbody tr.table-warning td[b-o2abh6vuwl] {
    border-color: rgba(255, 193, 7, 0.3);
}

.edit-dialog-content .form-control-sm[b-o2abh6vuwl],
.edit-dialog-content .form-select-sm[b-o2abh6vuwl] {
    padding: 0.25rem 0.5rem;
    font-size: 0.875rem;
}

/* Date picker button styling */
.date-picker-btn[b-o2abh6vuwl] {
    font-size: 0.875rem;
    color: var(--color-primary);
    text-decoration: none;
    white-space: nowrap;
}

.date-picker-btn:hover[b-o2abh6vuwl] {
    color: var(--color-primary-hover);
    text-decoration: underline;
}

.date-picker-btn i[b-o2abh6vuwl] {
    font-size: 0.75rem;
}

.edit-dialog-footer[b-o2abh6vuwl] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 1rem 1.5rem;
    border-top: 1px solid var(--color-border);
    background: var(--color-bg-header);
}

/* Delete confirmation dialog */
.delete-confirm-overlay[b-o2abh6vuwl] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: 1060;
}

.delete-confirm-dialog[b-o2abh6vuwl] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: var(--color-bg-surface);
    border-radius: 8px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
    z-index: 1061;
    min-width: 350px;
    max-width: 450px;
}

.delete-confirm-content[b-o2abh6vuwl] {
    padding: 1.5rem;
    text-align: center;
}

.delete-confirm-footer[b-o2abh6vuwl] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 1rem 1.5rem;
    border-top: 1px solid var(--color-border);
    background: var(--color-bg-header);
    border-radius: 0 0 8px 8px;
}

/* Responsive adjustments */
@media (max-width: 992px) {
    .edit-dialog[b-o2abh6vuwl] {
        width: 98%;
        max-height: 95vh;
    }

    .edit-dialog-content[b-o2abh6vuwl] {
        max-height: calc(95vh - 220px);
    }

    .edit-dialog-content .table thead th[b-o2abh6vuwl],
    .edit-dialog-content .table tbody td[b-o2abh6vuwl] {
        font-size: 0.8rem;
        padding: 0.4rem;
    }
}

.edit-dialog-header.draggable-header[b-o2abh6vuwl] {
    cursor: move;
    user-select: none;
}

.edit-dialog.interacting[b-o2abh6vuwl] {
    transition: none !important;
}

/* Sticky once the user starts dragging — JS owns positioning via top/left from this point on,
   so the centering transform must stay cleared (otherwise the dialog snaps by (-50%, -50%)
   on drag end). The `dragged` class is removed in modal-interact.js dispose() when the modal
   closes, restoring centering for the next open. */
.edit-dialog.dragged[b-o2abh6vuwl] {
    transform: none !important;
}
/* /Components/Pages/Assignments/Dialogs/ScheduleFilterDrawer.razor.rz.scp.css */
.filter-modal-overlay[b-2885a6xon0] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 10000;
}

.filter-modal[b-2885a6xon0] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 90%;
    max-width: 760px;
    max-height: 85vh;
    background-color: var(--color-bg-surface);
    border-radius: 8px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.24);
    z-index: 10001;
    display: flex;
    flex-direction: column;
}

.filter-modal-header[b-2885a6xon0] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 20px;
    border-bottom: 1px solid var(--color-border);
    flex-shrink: 0;
}

.filter-modal-header h3[b-2885a6xon0] {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 500;
}

.filter-modal-content[b-2885a6xon0] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 24px;
    padding: 20px;
    overflow-y: auto;
    flex: 1;
}

.full-width[b-2885a6xon0] {
    grid-column: 1 / -1;
}

.section-heading[b-2885a6xon0] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-muted);
    margin-bottom: 8px;
}

.section-heading.job-heading[b-2885a6xon0] {
    color: #1971c2;
}

.section-heading.employee-heading[b-2885a6xon0] {
    color: #2f9e44;
}

.filter-column[b-2885a6xon0] {
    display: flex;
    flex-direction: column;
}

.filter-column.disabled[b-2885a6xon0] {
    opacity: 0.5;
    pointer-events: none;
}

.filter-group[b-2885a6xon0] {
    margin-bottom: 16px;
}

.filter-group.disabled[b-2885a6xon0] {
    opacity: 0.5;
    pointer-events: none;
}

.filter-group .form-label[b-2885a6xon0] {
    font-size: 0.875rem;
    font-weight: 500;
    margin-bottom: 0.375rem;
    color: var(--color-text-primary);
}

.filter-divider[b-2885a6xon0] {
    border: none;
    border-top: 1px solid var(--color-border);
    margin: 12px 0 16px;
}

.footer-section[b-2885a6xon0] {
    display: flex;
    flex-direction: column;
}

.footer-section-heading[b-2885a6xon0] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-muted);
    margin-bottom: 8px;
}

.clear-filters-btn[b-2885a6xon0] {
    background: none;
    border: none;
    color: var(--color-accent);
    font-size: 0.875rem;
    cursor: pointer;
    padding: 4px 8px;
}

.clear-filters-btn:hover[b-2885a6xon0] {
    text-decoration: underline;
}

.close-btn[b-2885a6xon0] {
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-muted);
    border-radius: 4px;
}

.close-btn:hover[b-2885a6xon0] {
    background-color: var(--color-hover-overlay);
}

.form-check[b-2885a6xon0] {
    margin-bottom: 0.5rem;
}

.form-check-label[b-2885a6xon0] {
    font-size: 0.875rem;
}
/* /Components/Pages/Assignments/ScheduleGrid.razor.rz.scp.css */
.schedule-container[b-nkyikcocc0] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 120px + var(--compact-height-bonus, 0px));
    background: var(--color-bg-surface);
    position: relative;
}

.focus-mode .schedule-container[b-nkyikcocc0] {
    height: calc(100vh - 40px + var(--compact-height-bonus, 0px));
}

/* Header Bar */
.schedule-header[b-nkyikcocc0] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 16px;
    border-bottom: 2px solid var(--color-accent);
    background: var(--color-bg-surface);
}

.header-left[b-nkyikcocc0],
.header-right[b-nkyikcocc0] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.header-center[b-nkyikcocc0] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.date-range-text[b-nkyikcocc0] {
    font-size: 16px;
    font-weight: 500;
    color: var(--color-accent);
    min-width: 280px;
    text-align: center;
}

.view-select[b-nkyikcocc0] {
    min-width: 150px;
}

/* Date-jump calendar popup (anchored to the calendar button) */
.date-picker-overlay[b-nkyikcocc0] {
    position: fixed;
    inset: 0;
    z-index: 1055;
}

.date-picker-popup[b-nkyikcocc0] {
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    margin-top: 4px;
    z-index: 1060;
    width: 280px;
    background: var(--color-bg-elevated);
    border: 1px solid var(--color-border);
    border-radius: 0.375rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
    padding: 0.5rem;
}

.calendar-header[b-nkyikcocc0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 4px;
}

.calendar-month-label[b-nkyikcocc0] {
    font-size: 14px;
    font-weight: 600;
    color: var(--color-text-primary);
}

.calendar-grid[b-nkyikcocc0] {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}

.calendar-weekday[b-nkyikcocc0] {
    font-size: 11px;
    font-weight: 600;
    color: var(--color-text-muted);
    text-align: center;
    padding: 2px 0;
}

.calendar-day[b-nkyikcocc0] {
    border: none;
    background: transparent;
    color: var(--color-text-primary);
    font-size: 13px;
    text-align: center;
    padding: 4px 0;
    border-radius: 4px;
    cursor: pointer;
}

.calendar-day:hover[b-nkyikcocc0] {
    background: var(--color-bg-hover);
}

.calendar-day.outside[b-nkyikcocc0] {
    color: var(--color-text-muted);
    opacity: 0.6;
}

.calendar-day.in-view[b-nkyikcocc0] {
    background: color-mix(in srgb, var(--color-accent) 15%, transparent);
}

.calendar-day.in-view:hover[b-nkyikcocc0] {
    background: var(--color-bg-hover);
}

.calendar-day.today[b-nkyikcocc0] {
    outline: 1px solid var(--color-accent);
    outline-offset: -1px;
    font-weight: 600;
}

.calendar-footer[b-nkyikcocc0] {
    display: flex;
    justify-content: flex-end;
    margin-top: 4px;
}

/* Control Bar */
.schedule-controls[b-nkyikcocc0] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    border-bottom: 1px solid var(--color-border);
    background: var(--color-bg-surface);
}

.groupby-select[b-nkyikcocc0] {
    min-width: 180px;
}

.search-field[b-nkyikcocc0] {
    flex: 1;
    max-width: 300px;
}

/* Main Content Area - Single scrollable container */
.schedule-content[b-nkyikcocc0] {
    flex: 1;
    overflow: hidden;
    display: flex;
}

/* Single scrollable wrapper for the entire table */
.schedule-table-wrapper[b-nkyikcocc0] {
    flex: 1;
    overflow: auto;
    position: relative;
}

/* Table structure */
.schedule-table[b-nkyikcocc0] {
    border-collapse: separate;
    border-spacing: 0;
    min-width: max-content;
}

/* Sticky header */
.schedule-table thead[b-nkyikcocc0] {
    position: sticky;
    top: 0;
    z-index: 10;
}

.schedule-table thead th[b-nkyikcocc0] {
    background: var(--color-bg-surface);
}

/* Sticky left column - corner cell */
.schedule-table .corner-cell[b-nkyikcocc0] {
    position: sticky;
    left: 0;
    z-index: 11;
    background: var(--color-bg-surface);
    width: 300px;
    min-width: 300px;
    max-width: 300px;
    border-right: 2px solid var(--color-accent);
    border-bottom: 2px solid var(--color-accent);
}

/* Sticky left column - data cells */
.schedule-table .left-cell[b-nkyikcocc0] {
    position: sticky;
    left: 0;
    z-index: 5;
    background: var(--color-bg-surface);
    width: 300px;
    min-width: 300px;
    max-width: 300px;
    border-right: 2px solid var(--color-accent);
    border-bottom: 1px solid var(--color-border);
}

.schedule-table .left-cell.group-header[b-nkyikcocc0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--color-bg-muted);
    font-weight: 600;
    cursor: pointer;
    padding: 1.5px 8px;
    min-height: 30px;
}

.schedule-table tr.group-header-row:hover .left-cell.group-header[b-nkyikcocc0] {
    background: var(--color-bg-hover);
}

.group-header-content[b-nkyikcocc0] {
    display: flex;
    align-items: center;
    flex: 1;
    min-width: 0;
}

.edit-group-btn[b-nkyikcocc0],
.info-group-btn[b-nkyikcocc0] {
    opacity: 0;
    transition: opacity 0.15s ease;
    color: var(--color-accent);
    flex-shrink: 0;
}

.schedule-table tr.group-header-row:hover .edit-group-btn[b-nkyikcocc0],
.schedule-table tr.group-header-row:hover .info-group-btn[b-nkyikcocc0] {
    opacity: 1;
}

.edit-group-btn:hover[b-nkyikcocc0],
.info-group-btn:hover[b-nkyikcocc0] {
    color: var(--color-primary);
}

.expand-icon[b-nkyikcocc0] {
    margin-right: 4px;
    color: var(--color-accent);
}

.group-name[b-nkyikcocc0] {
    font-size: 13px;
    color: var(--color-accent);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.schedule-table .left-cell.assignment-cell-left[b-nkyikcocc0] {
    padding: 4px 8px 4px 24px;
    min-height: 30px;
    display: flex;
    align-items: center;
}

.secondary-name[b-nkyikcocc0] {
    font-size: 12px;
    color: var(--color-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Crew grouping (Group by Job): foreman leads, members hang-indent beneath. */
.schedule-table .left-cell.assignment-cell-left.crew-member-cell[b-nkyikcocc0] {
    /* base padding-left is 24px; hang-indent members deeper under their foreman */
    padding-left: 44px;
}

.secondary-name.crew-lead[b-nkyikcocc0] {
    font-weight: 600;
}

.crew-lead-tag[b-nkyikcocc0] {
    font-weight: 400;
    color: var(--color-text-muted);
}

/* Stand-in header row for a foreman not assigned to this job (no bar). */
.schedule-table tr.assignment-row.crew-header-row td.day-cell.assignment-cell[b-nkyikcocc0] {
    background: transparent;
}

/* Week row header cells */
.schedule-table .week-row th[b-nkyikcocc0] {
    border-bottom: 1px solid var(--color-border);
}

.schedule-table .week-label[b-nkyikcocc0] {
    font-size: 12px;
    font-weight: 600;
    color: var(--color-accent);
    background: var(--color-bg-muted);
    padding: 4px;
    border-right: 1px solid var(--color-border);
    text-align: center;
    vertical-align: middle;
}

/* Month row header cells */
.schedule-table .month-row th[b-nkyikcocc0] {
    border-bottom: 1px solid var(--color-border);
}

.schedule-table .month-label[b-nkyikcocc0] {
    font-size: 11px;
    color: var(--color-text-muted);
    padding: 2px;
    background: var(--color-bg-surface);
    text-align: center;
    vertical-align: middle;
}

/* Day abbreviation row */
.schedule-table .dayabbrev-row th[b-nkyikcocc0] {
    border-bottom: 1px solid var(--color-border);
}

/* Day number row */
.schedule-table .daynum-row th[b-nkyikcocc0] {
    border-bottom: 2px solid var(--color-accent);
}

/* Day cells in header */
.schedule-table th.day-cell[b-nkyikcocc0] {
    font-size: 11px;
    font-weight: normal;
    color: var(--color-text-primary);
    border-right: 1px solid var(--color-border-light);
    min-height: 22px;
    width: var(--day-width, 40px);
    min-width: var(--day-width, 40px);
    max-width: var(--day-width, 40px);
    text-align: center;
    vertical-align: middle;
    padding: 2px;
    background: var(--color-bg-surface);
}

.schedule-table th.day-cell.weekend[b-nkyikcocc0] {
    background: var(--color-bg-muted);
}

/* Day cells in data rows */
.schedule-table td.day-cell[b-nkyikcocc0] {
    font-size: 11px;
    color: var(--color-text-primary);
    border-right: 1px solid var(--color-border-light);
    border-bottom: 1px solid var(--color-border);
    min-height: 30px;
    height: 30px;
    width: var(--day-width, 40px);
    min-width: var(--day-width, 40px);
    max-width: var(--day-width, 40px);
    text-align: center;
    vertical-align: middle;
    padding: 0;
    background: var(--color-bg-surface);
}

.schedule-table td.day-cell.weekend[b-nkyikcocc0] {
    background: var(--color-bg-muted);
}

.schedule-table td.day-cell.group-count-cell[b-nkyikcocc0] {
    font-size: 10px;
    font-weight: 500;
    color: var(--color-accent);
    background: var(--color-bg-muted);
}

.schedule-table td.day-cell.assignment-cell[b-nkyikcocc0] {
    background: var(--color-bg-surface);
}

.schedule-table td.day-cell.assignment-cell.weekend[b-nkyikcocc0] {
    background: var(--color-bg-muted);
}

/* One cell spanning the whole timeline in place of a cell per day. The range always starts on a
   Saturday, so the weekend block is the first two columns of each 7-day repeat and the day
   separators sit on every column boundary. */
.schedule-table td.day-cell.day-strip[b-nkyikcocc0] {
    width: auto;
    min-width: 0;
    max-width: none;
    padding: 0;
    background-color: var(--color-bg-surface);
    background-image:
        repeating-linear-gradient(
            to right,
            var(--color-bg-muted) 0,
            var(--color-bg-muted) calc(var(--day-width, 40px) * 2),
            transparent calc(var(--day-width, 40px) * 2),
            transparent calc(var(--day-width, 40px) * 7)),
        repeating-linear-gradient(
            to right,
            transparent 0,
            transparent calc(var(--day-width, 40px) - 1px),
            var(--color-border-light) calc(var(--day-width, 40px) - 1px),
            var(--color-border-light) var(--day-width, 40px));
    background-repeat: repeat, repeat;
}

.schedule-table tr.assignment-row:hover td.day-cell.day-strip[b-nkyikcocc0] {
    background-color: var(--color-bg-hover);
}

/* Assignment rows */
.schedule-table tr.assignment-row[b-nkyikcocc0] {
    position: relative;
}

.schedule-table tr.assignment-row:hover td.day-cell.assignment-cell:not(.weekend)[b-nkyikcocc0] {
    background: var(--color-bg-hover);
}

/* Assignment Bars - positioned within the row */
.assignment-bar-container[b-nkyikcocc0] {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    height: 21px;
    z-index: 4;
    left: calc(300px + (var(--start-day) - 1) * var(--day-width, 40px) + 2px);
    width: calc(var(--span-days) * var(--day-width, 40px) - 4px);
    pointer-events: auto;
}

.assignment-bar[b-nkyikcocc0] {
    width: 100%;
    height: 100%;
    border-radius: 2px;
}

.assignment-bar.color1[b-nkyikcocc0] {
    background: #1E3A8A;
}

.assignment-bar.color2[b-nkyikcocc0] {
    background: #65A30D;
}

.assignment-bar:hover[b-nkyikcocc0] {
    opacity: 0.9;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

.assignment-bar.clickable[b-nkyikcocc0] {
    cursor: pointer;
}

.assignment-bar.clickable:hover[b-nkyikcocc0] {
    filter: brightness(1.1);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}

/* Bar Hover Toolbar */
.bar-toolbar[b-nkyikcocc0] {
    position: absolute;
    top: -28px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 2px;
    background: var(--color-bg-elevated);
    border: 1px solid var(--color-border);
    border-radius: 4px;
    padding: 2px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    z-index: 10;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.15s ease;
}

.assignment-bar-container:hover .bar-toolbar[b-nkyikcocc0] {
    opacity: 1;
    pointer-events: auto;
}

.bar-toolbar[b-nkyikcocc0]::after {
    content: '';
    position: absolute;
    bottom: -6px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-top: 6px solid var(--color-bg-elevated);
}

.bar-toolbar[b-nkyikcocc0]::before {
    content: '';
    position: absolute;
    bottom: -8px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
    border-top: 7px solid var(--color-border);
}

.bar-toolbar-btn[b-nkyikcocc0] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border: none;
    background: transparent;
    color: var(--color-text-secondary);
    cursor: pointer;
    border-radius: 3px;
    padding: 0;
    transition: all 0.15s;
}

.bar-toolbar-btn:hover[b-nkyikcocc0] {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.bar-toolbar-btn i[b-nkyikcocc0] {
    font-size: 14px;
}

/* Footer */
.schedule-footer[b-nkyikcocc0] {
    display: flex;
    align-items: center;
    padding: 8px 16px;
    border-top: 1px solid var(--color-border);
    background: var(--color-bg-surface);
}

.footer-text[b-nkyikcocc0] {
    font-size: 12px;
    color: var(--color-accent);
}
/* /Components/Pages/Development/Organizer/OrganizerEffortDetail.razor.rz.scp.css */
/* A writing surface, not a form. Fields are invisible until you touch them, so
   the page reads as a document and edits without ceremony. */

.org[b-tqz8gr0flx] {
    max-width: 54rem;
    margin-inline: auto;
    padding: 1.5rem clamp(1rem, 3vw, 2rem) 5rem;
}

.org-state[b-tqz8gr0flx] {
    padding: 3rem clamp(1rem, 3vw, 2rem);
    color: var(--color-text-secondary, #4a6463);
}

.org-topbar[b-tqz8gr0flx] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 1.75rem;
    margin-bottom: 1.25rem;
}

.org-back[b-tqz8gr0flx] {
    font-size: .875rem;
    color: var(--color-text-secondary, #4a6463);
    text-decoration: none;
}

.org-back:hover[b-tqz8gr0flx] {
    color: var(--color-primary, #00857c);
}

/* ---- head ---- */

.org-head[b-tqz8gr0flx] {
    margin-bottom: 2.5rem;
}

[b-tqz8gr0flx] .org-title-input {
    display: block;
    width: 100%;
    font-size: clamp(1.5rem, 4vw, 2rem);
    font-weight: 700;
    letter-spacing: -.02em;
    color: var(--color-text-primary, #1a2e2d);
    background: transparent;
    border: 0;
    border-radius: .375rem;
    padding: .25rem .5rem;
    margin-left: -.5rem;
}

[b-tqz8gr0flx] .org-title-input:hover {
    background: var(--color-bg-muted, #f1f5f5);
}

[b-tqz8gr0flx] .org-title-input:focus {
    outline: 2px solid var(--color-primary, #00857c);
    outline-offset: 0;
    background: var(--color-bg-surface, #fff);
}

.org-head-meta[b-tqz8gr0flx] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .625rem;
    margin: .5rem 0 .75rem;
}

.org-done[b-tqz8gr0flx] {
    margin: 0;
    padding: .25rem .625rem;
    font-size: .8125rem;
    color: var(--color-text-secondary, #4a6463);
    border: 1px solid var(--color-border, #eef2f2);
    border-radius: .375rem;
    white-space: nowrap;
}

.org-done .form-check-input[b-tqz8gr0flx] {
    cursor: pointer;
}

.org-done .form-check-label[b-tqz8gr0flx] {
    cursor: pointer;
}

.org-kind[b-tqz8gr0flx] {
    width: auto;
    min-width: 9rem;
}

.org-branch[b-tqz8gr0flx],
.org-pr[b-tqz8gr0flx] {
    font-size: .8125rem;
    color: var(--color-text-muted, #6b8382);
    font-family: var(--bs-font-monospace, monospace);
}

.org-pr[b-tqz8gr0flx] {
    text-decoration: none;
}

.org-pr:hover[b-tqz8gr0flx] {
    color: var(--color-primary, #00857c);
}

.org-pr-state[b-tqz8gr0flx] {
    text-transform: lowercase;
    margin-left: .35rem;
    opacity: .75;
}

[b-tqz8gr0flx] .org-notes-input {
    display: block;
    width: 100%;
    font-size: .9375rem;
    line-height: 1.55;
    color: var(--color-text-secondary, #4a6463);
    background: transparent;
    border: 0;
    border-radius: .375rem;
    padding: .35rem .5rem;
    margin-left: -.5rem;
    resize: vertical;
}

[b-tqz8gr0flx] .org-notes-input:hover {
    background: var(--color-bg-muted, #f1f5f5);
}

[b-tqz8gr0flx] .org-notes-input:focus {
    outline: 2px solid var(--color-primary, #00857c);
    background: var(--color-bg-surface, #fff);
}

/* ---- sections ---- */

.org-section-title[b-tqz8gr0flx] {
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--color-text-muted, #6b8382);
    margin: 0 0 .75rem;
}

.org-items[b-tqz8gr0flx],
.org-steplist[b-tqz8gr0flx] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.org-item[b-tqz8gr0flx] {
    border-bottom: 1px solid var(--color-border, #eef2f2);
}

/* Two lines: the title keeps a full-width line of its own, controls sit under it
   right-aligned. Everything stays reachable without opening the item. */
.org-item-row[b-tqz8gr0flx] {
    display: grid;
    grid-template-columns: 1.5rem 1fr;
    grid-template-areas:
        "disclose title"
        ".        controls";
    align-items: center;
    column-gap: .5rem;
    row-gap: .125rem;
    padding-block: .25rem;
}

/* The new-item row carries its area picker beside the title rather than in the
   controls strip, so an area is chosen before the item exists. */
.org-item-new .org-item-row[b-tqz8gr0flx] {
    grid-template-columns: 1.5rem auto 1fr;
    grid-template-areas: "disclose area title";
}

.org-area-new[b-tqz8gr0flx] {
    grid-area: area;
}

.org-item-controls[b-tqz8gr0flx] {
    grid-area: controls;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: .375rem;
    padding-bottom: .25rem;
}

.org-item-open[b-tqz8gr0flx] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: .375rem;
    color: var(--color-text-muted, #6b8382);
    text-decoration: none;
}

.org-item-open:hover[b-tqz8gr0flx] {
    background: var(--color-bg-muted, #f1f5f5);
    color: var(--color-primary, #00857c);
}

.org-item-delete[b-tqz8gr0flx] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border: 0;
    border-radius: .375rem;
    background: none;
    color: var(--color-text-muted, #6b8382);
    cursor: pointer;
}

.org-item-delete:hover[b-tqz8gr0flx],
.org-item-delete:focus-visible[b-tqz8gr0flx] {
    background: var(--color-bg-muted, #f1f5f5);
    color: var(--bs-danger, #dc3545);
}

.org-disclose[b-tqz8gr0flx] {
    grid-area: disclose;
    width: 1.5rem;
    height: 1.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    background: transparent;
    color: var(--color-text-muted, #6b8382);
    border-radius: .25rem;
    padding: 0;
}

.org-disclose i[b-tqz8gr0flx] {
    transition: transform .15s ease;
    font-size: .75rem;
}

.org-disclose.is-open i[b-tqz8gr0flx] {
    transform: rotate(90deg);
}

.org-disclose-placeholder[b-tqz8gr0flx] {
    width: 1.5rem;
}

[b-tqz8gr0flx] .org-item-row > .org-line-input {
    grid-area: title;
}

[b-tqz8gr0flx] .org-line-input {
    flex: 1 1 auto;
    min-width: 0;
    font-size: .9375rem;
    color: var(--color-text-primary, #1a2e2d);
    background: transparent;
    border: 0;
    border-radius: .375rem;
    padding: .4rem .5rem;
}

[b-tqz8gr0flx] .org-line-input:hover {
    background: var(--color-bg-muted, #f1f5f5);
}

[b-tqz8gr0flx] .org-line-input:focus {
    outline: 2px solid var(--color-primary, #00857c);
    background: var(--color-bg-surface, #fff);
}

[b-tqz8gr0flx] .org-line-input::placeholder {
    color: var(--color-text-muted, #9db0af);
}

.org-status[b-tqz8gr0flx] {
    flex: 0 0 auto;
    width: 8.5rem;
}

.org-area[b-tqz8gr0flx] {
    flex: 0 0 auto;
    width: 9.5rem;
}

.org-pct[b-tqz8gr0flx] {
    flex: 0 0 auto;
    width: 4.5rem;
    text-align: right;
}

/* ---- item detail ---- */

.org-item-detail[b-tqz8gr0flx] {
    padding: .5rem 0 1.25rem 2rem;
    display: grid;
    gap: 1rem;
}

.org-signoffs[b-tqz8gr0flx] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem 2rem;
    padding: .75rem .875rem;
    background: var(--color-bg-muted, #f7fafa);
    border-radius: .5rem;
}

.org-signoff-field[b-tqz8gr0flx] {
    display: flex;
    align-items: baseline;
    gap: .5rem;
}

.org-signoff-note[b-tqz8gr0flx] {
    font-size: .75rem;
    color: var(--color-text-muted, #6b8382);
}

.org-steps-title[b-tqz8gr0flx] {
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--color-text-muted, #6b8382);
    margin: 0 0 .35rem;
}

.org-step[b-tqz8gr0flx] {
    display: flex;
    align-items: center;
    gap: .5rem;
}

.org-step-check[b-tqz8gr0flx] {
    flex: 0 0 auto;
    margin: 0;
    cursor: pointer;
}

.org-step-delete[b-tqz8gr0flx] {
    flex: 0 0 auto;
    border: 0;
    background: none;
    padding: .1rem .25rem;
    color: var(--color-text-muted, #6b8382);
    opacity: 0;
    cursor: pointer;
    transition: opacity .12s ease, color .12s ease;
}

.org-step:hover .org-step-delete[b-tqz8gr0flx],
.org-step-delete:focus-visible[b-tqz8gr0flx] {
    opacity: 1;
}

.org-step-delete:hover[b-tqz8gr0flx],
.org-step-delete:focus-visible[b-tqz8gr0flx] {
    color: var(--bs-danger, #dc3545);
}

.org-step-done[b-tqz8gr0flx]  .org-step-input {
    text-decoration: line-through;
    color: var(--color-text-muted, #9db0af);
}

[b-tqz8gr0flx] .org-step-input {
    font-size: .875rem;
}

@media (max-width: 40rem) {
    .org-status[b-tqz8gr0flx] {
        width: 6.5rem;
    }

    .org-area[b-tqz8gr0flx] {
        width: 7.5rem;
    }

    .org-pct[b-tqz8gr0flx] {
        width: 3.75rem;
    }

    .org-item-controls[b-tqz8gr0flx] {
        justify-content: flex-start;
    }

    [b-tqz8gr0flx] .signoff-mode {
        flex: 1 1 8rem;
        min-width: 0;
    }

    .org-item-detail[b-tqz8gr0flx] {
        padding-left: .5rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .org-disclose i[b-tqz8gr0flx] {
        transition: none;
    }
}
/* /Components/Pages/Development/Organizer/OrganizerEffortsContent.razor.rz.scp.css */
.efforts-list[b-6hiztsz95c] {
    list-style: none;
    margin: 0;
    padding: 0;
    max-width: 72rem;
}

.efforts-toolbar[b-6hiztsz95c] {
    display: flex;
    align-items: center;
    gap: .75rem;
    max-width: 72rem;
    margin-bottom: .5rem;
}

/* !important throughout: these beat ::deep .org-line-input, which the search box
   shares with the borderless inline inputs. */
.efforts-search[b-6hiztsz95c] {
    flex: 1 1 auto;
    max-width: 22rem;
    border: 1px solid var(--color-border-strong, #d7e0df) !important;
    border-radius: .375rem !important;
    background: var(--color-bg-surface, #fff) !important;
}

.efforts-search:focus[b-6hiztsz95c] {
    border-color: var(--color-primary, #00857c) !important;
    outline: 2px solid var(--color-primary, #00857c);
    outline-offset: -1px;
}

.efforts-kind-filter[b-6hiztsz95c] {
    flex: 0 0 auto;
    width: auto;
    font-size: .8125rem;
}

.efforts-area-filter[b-6hiztsz95c] {
    flex: 0 0 auto;
    width: auto;
    font-size: .8125rem;
}

.efforts-completion-filter[b-6hiztsz95c] {
    flex: 0 0 auto;
    width: auto;
    font-size: .8125rem;
}

.efforts-assignee-filter[b-6hiztsz95c] {
    flex: 0 0 auto;
    width: auto;
    max-width: 11rem;
    font-size: .8125rem;
}

.efforts-group-toggle[b-6hiztsz95c] {
    flex: 0 0 auto;
    margin: 0;
    font-size: .8125rem;
    color: var(--color-text-muted, #6b8382);
    white-space: nowrap;
}

.efforts-manage-areas[b-6hiztsz95c] {
    flex: 0 0 auto;
    margin-left: auto;
    padding: .25rem .375rem;
    line-height: 1;
    color: var(--color-text-muted, #6b8382);
    background: transparent;
    border: 0;
    border-radius: .375rem;
    cursor: pointer;
}

.efforts-manage-areas:hover[b-6hiztsz95c],
.efforts-manage-areas:focus-visible[b-6hiztsz95c] {
    color: var(--color-text-primary, #1a2e2d);
    background: var(--color-surface-alt, #f4f7f7);
}

.efforts-row[b-6hiztsz95c] {
    display: flex;
    align-items: center;
    gap: .625rem;
    padding: .625rem .25rem;
    border-bottom: 1px solid var(--color-border, #eef2f2);
}

.efforts-header[b-6hiztsz95c] {
    padding-top: .25rem;
    padding-bottom: .25rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    font-size: .6875rem;
    color: var(--color-text-muted, #9db0af);
}

.efforts-sort[b-6hiztsz95c] {
    cursor: pointer;
    user-select: none;
}

.efforts-sort:hover[b-6hiztsz95c] {
    color: var(--color-primary, #00857c);
}

/* flex-basis, not min-width:0 — the title column has to hold its width against
   the fixed cells rather than being the only thing that gives when the viewport
   is narrower than the list. */
.efforts-link[b-6hiztsz95c] {
    flex: 1 1 20rem;
    min-width: 12rem;
    display: flex;
    align-items: baseline;
    gap: .625rem;
    text-decoration: none;
}

.efforts-title[b-6hiztsz95c] {
    font-size: .9375rem;
    font-weight: 600;
    color: var(--color-text-primary, #1a2e2d);
}

.efforts-link:hover .efforts-title[b-6hiztsz95c] {
    color: var(--color-primary, #00857c);
}

.efforts-assigned[b-6hiztsz95c] {
    flex: 0 0 auto;
    width: 7rem;
    font-size: .75rem;
    color: var(--color-text-muted, #6b8382);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.efforts-header .efforts-assigned[b-6hiztsz95c] {
    text-transform: uppercase;
}

.efforts-kind[b-6hiztsz95c] {
    flex: 0 0 auto;
    width: 7rem;
    font-size: .75rem;
    text-transform: lowercase;
    color: var(--color-text-muted, #6b8382);
}

.efforts-header .efforts-kind[b-6hiztsz95c] {
    text-transform: uppercase;
}

.efforts-area[b-6hiztsz95c] {
    flex: 0 0 auto;
    width: 7.5rem;
    font-size: .75rem;
    color: var(--color-text-muted, #6b8382);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.efforts-header .efforts-area[b-6hiztsz95c] {
    text-transform: uppercase;
}

/* The negative margin pulls the fill out past .efforts-row's .25rem side padding
   so it spans the whole list rather than stopping short at each edge. Same
   token pair as the active nav item, so it tracks the theme. */
.efforts-group-header[b-6hiztsz95c] {
    gap: .5rem;
    margin-top: .75rem;
    padding: .5rem .75rem;
    margin-left: -.5rem;
    margin-right: -.5rem;
    background: var(--color-nav-active-bg, #00857c);
    border-bottom: 0;
    border-radius: .25rem;
}

.efforts-group-name[b-6hiztsz95c] {
    font-size: .9375rem;
    font-weight: 600;
    color: var(--color-nav-active-text, #fff);
}

.efforts-group-count[b-6hiztsz95c] {
    font-size: .75rem;
    color: var(--color-nav-active-text, #fff);
    opacity: .8;
}

.efforts-row-grouped[b-6hiztsz95c] {
    padding-left: 1.5rem;
}

.efforts-date[b-6hiztsz95c] {
    flex: 0 0 auto;
    width: 4.5rem;
    font-size: .8125rem;
    color: var(--color-text-muted, #6b8382);
    font-variant-numeric: tabular-nums;
}

.efforts-counts[b-6hiztsz95c],
.efforts-pr[b-6hiztsz95c] {
    flex: 0 0 auto;
    font-size: .8125rem;
    color: var(--color-text-muted, #6b8382);
    font-variant-numeric: tabular-nums;
}

.efforts-counts[b-6hiztsz95c] {
    width: 5rem;
}

.efforts-pr[b-6hiztsz95c] {
    width: 4rem;
    font-family: var(--bs-font-monospace, monospace);
}

.efforts-header .efforts-pr[b-6hiztsz95c] {
    font-family: inherit;
}

.efforts-row-done .efforts-title[b-6hiztsz95c],
.efforts-row-done .efforts-assigned[b-6hiztsz95c],
.efforts-row-done .efforts-kind[b-6hiztsz95c],
.efforts-row-done .efforts-area[b-6hiztsz95c] {
    color: var(--color-text-muted, #9db0af);
}

.efforts-empty-text[b-6hiztsz95c] {
    padding: 1rem .25rem;
    font-size: .8125rem;
}

.efforts-delete-cell[b-6hiztsz95c],
.efforts-delete[b-6hiztsz95c] {
    flex: 0 0 auto;
    width: 2rem;
}

.efforts-delete[b-6hiztsz95c] {
    border: 0;
    background: none;
    padding: .25rem;
    color: var(--color-text-muted, #6b8382);
    opacity: 0;
    cursor: pointer;
    transition: opacity .12s ease, color .12s ease;
}

.efforts-row:hover .efforts-delete[b-6hiztsz95c] {
    opacity: 1;
}

.efforts-delete:hover[b-6hiztsz95c],
.efforts-delete:focus-visible[b-6hiztsz95c] {
    opacity: 1;
    color: var(--bs-danger, #dc3545);
}

[b-6hiztsz95c] .org-line-input {
    flex: 1 1 auto;
    min-width: 0;
    font-size: .9375rem;
    color: var(--color-text-primary, #1a2e2d);
    background: transparent;
    border: 0;
    border-radius: .375rem;
    padding: .4rem .5rem;
}

[b-6hiztsz95c] .org-line-input:hover {
    background: var(--color-bg-muted, #f1f5f5);
}

[b-6hiztsz95c] .org-line-input:focus {
    outline: 2px solid var(--color-primary, #00857c);
    background: var(--color-bg-surface, #fff);
}

[b-6hiztsz95c] .org-line-input::placeholder {
    color: var(--color-text-muted, #9db0af);
}

.org-state[b-6hiztsz95c] {
    padding: 2rem .25rem;
    color: var(--color-text-secondary, #4a6463);
}
/* /Components/Pages/Development/Organizer/OrganizerItemDetail.razor.rz.scp.css */
/* The item page has room the effort row does not, so the same pickers get
   visible labels instead of relying on their option text. */

.org[b-zawb3fv1tf] {
    max-width: 54rem;
    margin-inline: auto;
    padding: 1.5rem clamp(1rem, 3vw, 2rem) 5rem;
}

.org-state[b-zawb3fv1tf] {
    padding: 3rem clamp(1rem, 3vw, 2rem);
    color: var(--color-text-secondary, #4a6463);
}

.org-topbar[b-zawb3fv1tf] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 1.75rem;
    margin-bottom: 1.25rem;
}

.org-back[b-zawb3fv1tf] {
    font-size: .875rem;
    color: var(--color-text-secondary, #4a6463);
    text-decoration: none;
}

.org-back:hover[b-zawb3fv1tf] {
    color: var(--color-primary, #00857c);
}

.org-head[b-zawb3fv1tf] {
    margin-bottom: 2rem;
}

[b-zawb3fv1tf] .org-title-input {
    display: block;
    width: 100%;
    font-size: clamp(1.5rem, 4vw, 2rem);
    font-weight: 700;
    letter-spacing: -.02em;
    color: var(--color-text-primary, #1a2e2d);
    background: transparent;
    border: 0;
    border-radius: .375rem;
    padding: .25rem .5rem;
    margin-left: -.5rem;
}

[b-zawb3fv1tf] .org-title-input:hover {
    background: var(--color-bg-muted, #f1f5f5);
}

[b-zawb3fv1tf] .org-title-input:focus {
    outline: 2px solid var(--color-primary, #00857c);
    background: var(--color-bg-surface, #fff);
}

.org-head-meta[b-zawb3fv1tf] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .625rem;
    margin: .5rem 0 .75rem;
}

.org-status[b-zawb3fv1tf] {
    width: 8.5rem;
}

.org-pct[b-zawb3fv1tf] {
    width: 4.5rem;
    text-align: right;
}

[b-zawb3fv1tf] .org-notes-input {
    display: block;
    width: 100%;
    font-size: .9375rem;
    line-height: 1.55;
    color: var(--color-text-secondary, #4a6463);
    background: transparent;
    border: 0;
    border-radius: .375rem;
    padding: .35rem .5rem;
    margin-left: -.5rem;
    resize: vertical;
}

[b-zawb3fv1tf] .org-notes-input:hover {
    background: var(--color-bg-muted, #f1f5f5);
}

[b-zawb3fv1tf] .org-notes-input:focus {
    outline: 2px solid var(--color-primary, #00857c);
    background: var(--color-bg-surface, #fff);
}

.org-section[b-zawb3fv1tf] {
    margin-bottom: 2rem;
}

.org-signoffs[b-zawb3fv1tf] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 2.5rem;
    padding: .875rem;
    background: var(--color-bg-muted, #f7fafa);
    border-radius: .5rem;
}

.org-signoff-field[b-zawb3fv1tf] {
    display: flex;
    flex-direction: column;
    gap: .25rem;
}

.org-signoff-label[b-zawb3fv1tf] {
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--color-text-muted, #6b8382);
}

.org-signoff-hint[b-zawb3fv1tf] {
    font-size: .8125rem;
    color: var(--color-text-muted, #6b8382);
    margin: .5rem 0 0;
}
/* /Components/Pages/Estimating/Bids/MyEstimatingEdgeBids.razor.rz.scp.css */
.ee-page[b-9x6xr6cjiz] {
    max-width: 1400px;
}

.ee-header[b-9x6xr6cjiz] {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 1.5rem;
    margin-bottom: 1.25rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid #e9ecef;
}

.ee-title[b-9x6xr6cjiz] {
    margin: 0 0 0.25rem 0;
    font-weight: 600;
    color: #212529;
}

.ee-subtitle[b-9x6xr6cjiz] {
    color: #6c757d;
    font-size: 0.875rem;
}

.ee-subtitle-sep[b-9x6xr6cjiz] {
    margin: 0 0.5rem;
    color: #adb5bd;
}

.ee-header-controls[b-9x6xr6cjiz] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

.ee-search[b-9x6xr6cjiz] {
    position: relative;
    display: flex;
    align-items: center;
}

.ee-search i[b-9x6xr6cjiz] {
    position: absolute;
    left: 0.75rem;
    color: #adb5bd;
    pointer-events: none;
}

.ee-search-input[b-9x6xr6cjiz] {
    border: 1px solid #dee2e6;
    border-radius: 0.5rem;
    padding: 0.4rem 0.75rem 0.4rem 2.25rem;
    font-size: 0.875rem;
    width: 240px;
    background: #fff;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.ee-search-input:focus[b-9x6xr6cjiz] {
    outline: none;
    border-color: #1971c2;
    box-shadow: 0 0 0 3px rgba(25, 113, 194, 0.15);
}

.ee-empty[b-9x6xr6cjiz] {
    padding: 2rem;
    text-align: center;
    color: #6c757d;
}

.ee-cards[b-9x6xr6cjiz] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.ee-card[b-9x6xr6cjiz] {
    position: relative;
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 0.5rem;
    overflow: hidden;
    transition: box-shadow 0.15s, border-color 0.15s;
}

.ee-card:hover[b-9x6xr6cjiz] {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
    border-color: #ced4da;
}

.ee-card-edge[b-9x6xr6cjiz] {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 4px;
    background: #adb5bd;
}

.ee-card.accent-won .ee-card-edge[b-9x6xr6cjiz] { background: #2f9e44; }
.ee-card.accent-submitted-linked .ee-card-edge[b-9x6xr6cjiz] { background: #2f9e44; }
.ee-card.accent-submitted .ee-card-edge[b-9x6xr6cjiz] { background: #f59f00; }
.ee-card.accent-progress-linked .ee-card-edge[b-9x6xr6cjiz] { background: #1971c2; }
.ee-card.accent-unlinked .ee-card-edge[b-9x6xr6cjiz] { background: #adb5bd; }
.ee-card.accent-lost .ee-card-edge[b-9x6xr6cjiz] { background: #868e96; }

.ee-card-body[b-9x6xr6cjiz] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1.5rem;
    padding: 1rem 1.25rem 1rem 1.5rem;
}

.ee-card-main[b-9x6xr6cjiz] {
    flex: 1;
    min-width: 0;
}

.ee-card-meta[b-9x6xr6cjiz] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.25rem;
}

.ee-bidnum[b-9x6xr6cjiz] {
    font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
    font-size: 0.875rem;
    color: #1971c2;
    font-weight: 500;
}

.ee-meta-sep[b-9x6xr6cjiz] {
    color: #ced4da;
}

.ee-date[b-9x6xr6cjiz] {
    font-size: 0.8125rem;
    color: #6c757d;
}

.ee-card-title[b-9x6xr6cjiz] {
    font-size: 1.125rem;
    font-weight: 600;
    color: #212529;
    line-height: 1.35;
    margin-bottom: 0.375rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ee-card-submeta[b-9x6xr6cjiz] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    color: #6c757d;
    font-size: 0.8125rem;
    margin-bottom: 0.625rem;
}

.ee-card-submeta i[b-9x6xr6cjiz] {
    margin-right: 0.25rem;
    color: #adb5bd;
}

.ee-pills[b-9x6xr6cjiz] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
}

.ee-pill[b-9x6xr6cjiz] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.25rem 0.625rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 500;
    border: 1px solid;
}

.ee-pill-dot[b-9x6xr6cjiz] {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
}

.ee-pill-status-in-progress[b-9x6xr6cjiz] {
    color: #1971c2;
    background: #e7f5ff;
    border-color: #a5d8ff;
}

.ee-pill-status-submitted[b-9x6xr6cjiz] {
    color: #f08c00;
    background: #fff4e6;
    border-color: #ffd8a8;
}

.ee-pill-status-won[b-9x6xr6cjiz] {
    color: #2f9e44;
    background: #ebfbee;
    border-color: #b2f2bb;
}

.ee-pill-status-lost[b-9x6xr6cjiz],
.ee-pill-status-cancelled[b-9x6xr6cjiz] {
    color: #495057;
    background: #f1f3f5;
    border-color: #dee2e6;
}

.ee-pill-link[b-9x6xr6cjiz] {
    color: #7048e8;
    background: #f3f0ff;
    border-color: #d0bfff;
}

.ee-pill-scenarios[b-9x6xr6cjiz] {
    color: #495057;
    background: #f8f9fa;
    border-color: #e9ecef;
}

.ee-pill-suffix[b-9x6xr6cjiz] {
    color: #6c757d;
    font-weight: 400;
    margin-left: 0.125rem;
}

.ee-card-side[b-9x6xr6cjiz] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.625rem;
    flex-shrink: 0;
    min-width: 180px;
}

.ee-price-block[b-9x6xr6cjiz] {
    text-align: right;
}

.ee-price-label[b-9x6xr6cjiz] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6c757d;
    font-weight: 500;
    margin-bottom: 0.125rem;
}

.ee-price-value[b-9x6xr6cjiz] {
    font-size: 1.5rem;
    font-weight: 600;
    color: #212529;
    line-height: 1.1;
}

.ee-price-sub[b-9x6xr6cjiz] {
    font-size: 0.75rem;
    color: #6c757d;
    margin-top: 0.125rem;
}

.ee-card-actions[b-9x6xr6cjiz] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
}

.ee-manage-btn[b-9x6xr6cjiz] {
    white-space: nowrap;
}

.ee-toggle-btn[b-9x6xr6cjiz] {
    color: #6c757d;
    text-decoration: none;
    font-size: 0.8125rem;
    padding: 0.25rem 0.5rem;
}

.ee-toggle-btn:hover[b-9x6xr6cjiz] {
    color: #212529;
    text-decoration: none;
}

.ee-scenarios[b-9x6xr6cjiz] {
    border-top: 1px solid #e9ecef;
    background: #f8f9fa;
    padding: 0.75rem 1.25rem 0.75rem 1.5rem;
}

.ee-scenarios-header[b-9x6xr6cjiz],
.ee-scenario-row[b-9x6xr6cjiz] {
    display: grid;
    grid-template-columns: minmax(0, 2fr) 130px 130px 100px minmax(160px, 1fr);
    gap: 1rem;
    align-items: center;
}

.ee-scenarios-header[b-9x6xr6cjiz] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #868e96;
    font-weight: 500;
    padding: 0.375rem 0.5rem;
    border-bottom: 1px solid #e9ecef;
}

.ee-scenarios-header .ee-scn-col-num[b-9x6xr6cjiz] {
    text-align: right;
}

.ee-scenario-row[b-9x6xr6cjiz] {
    padding: 0.5rem;
    border-radius: 0.375rem;
    font-size: 0.875rem;
    transition: background 0.1s;
}

.ee-scenario-row:hover[b-9x6xr6cjiz] {
    background: #fff;
}

.ee-scenario-row.is-linked[b-9x6xr6cjiz] {
    background: rgba(112, 72, 232, 0.04);
}

.ee-scenario-row.is-linked:hover[b-9x6xr6cjiz] {
    background: rgba(112, 72, 232, 0.08);
}

.ee-scn-title[b-9x6xr6cjiz] {
    color: #212529;
    font-weight: 500;
}

.ee-scn-type[b-9x6xr6cjiz] {
    color: #868e96;
    font-size: 0.75rem;
    margin-top: 0.0625rem;
}

.ee-scn-col-num[b-9x6xr6cjiz] {
    text-align: right;
    color: #495057;
}

.ee-mono[b-9x6xr6cjiz] {
    font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
    font-size: 0.8125rem;
}

.ee-scn-link[b-9x6xr6cjiz] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    color: #1971c2;
    text-decoration: none;
    font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
    font-size: 0.8125rem;
}

.ee-scn-link:hover[b-9x6xr6cjiz] {
    text-decoration: underline;
}

.ee-scn-unlinked[b-9x6xr6cjiz] {
    color: #adb5bd;
    font-size: 0.8125rem;
    font-style: italic;
}
/* /Components/Pages/Estimating/Calendar/EstimatingCalendar.razor.rz.scp.css */
/* Page Header */
.calendar-page-header[b-c3pmh63f0x] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--space-3) 0;
    margin-bottom: var(--space-4);
    border-bottom: 2px solid var(--color-accent);
}

.calendar-page-header h4[b-c3pmh63f0x] {
    color: var(--color-accent);
    font-weight: 600;
    margin: 0;
}

.calendar-page-header p[b-c3pmh63f0x] {
    color: var(--color-text-secondary);
    font-size: 0.85rem;
    margin: 0;
}

.header-actions[b-c3pmh63f0x] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

/* Link Banner */
.link-banner[b-c3pmh63f0x] {
    display: flex;
    align-items: center;
    padding: var(--space-3) var(--space-4);
    margin-bottom: var(--space-3);
    background: var(--color-info-bg);
    border: 1px solid var(--color-info);
    border-radius: var(--radius-md);
    color: var(--color-text-primary);
}

.link-banner i[b-c3pmh63f0x] {
    font-size: 1.25rem;
    color: var(--color-info);
    margin-right: var(--space-3);
}

.linked-badge[b-c3pmh63f0x] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    padding: var(--space-1) var(--space-2);
    background: var(--color-success-bg);
    color: var(--color-success);
    border-radius: var(--radius-full);
    font-size: 0.8rem;
    font-weight: 500;
}

/* Sidebar */
.calendar-sidebar[b-c3pmh63f0x] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.filter-card[b-c3pmh63f0x] {
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-light);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}

.filter-card-header[b-c3pmh63f0x] {
    padding: var(--space-2) var(--space-3);
    background: var(--color-bg-header);
    border-bottom: 1px solid var(--color-border-light);
    font-weight: 600;
    font-size: 0.75rem;
    color: var(--color-accent);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.filter-card-body[b-c3pmh63f0x] {
    padding: var(--space-2) var(--space-3);
}

.filter-item[b-c3pmh63f0x] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-1) 0;
    cursor: pointer;
    font-size: 0.875rem;
    color: var(--color-text-primary);
}

.user-color-dot[b-c3pmh63f0x] {
    width: 10px;
    height: 10px;
    border-radius: var(--radius-full);
    flex-shrink: 0;
}

/* Calendar Container */
.calendar-wrapper[b-c3pmh63f0x] {
    position: relative;
    background: var(--color-bg-surface);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-sm);
    padding: var(--space-2);
    border: 1px solid var(--color-border-light);
}

.calendar-loading[b-c3pmh63f0x] {
    position: absolute;
    top: var(--space-2);
    right: var(--space-2);
    z-index: 10;
}

/* Event Detail Modals */
.event-detail-section[b-c3pmh63f0x] {
    display: flex;
    align-items: flex-start;
    gap: var(--space-2);
    padding: var(--space-2) 0;
    border-bottom: 1px solid var(--color-border-light);
}

.event-detail-section:last-child[b-c3pmh63f0x] {
    border-bottom: none;
}

.event-detail-icon[b-c3pmh63f0x] {
    color: var(--color-primary);
    font-size: 1rem;
    margin-top: 2px;
    flex-shrink: 0;
    width: 20px;
    text-align: center;
}

.event-detail-label[b-c3pmh63f0x] {
    font-size: 0.7rem;
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 2px;
}

.event-detail-value[b-c3pmh63f0x] {
    color: var(--color-text-primary);
    font-size: 0.9rem;
}

.event-body-content[b-c3pmh63f0x] {
    background: var(--color-bg-muted);
    border-radius: var(--radius-sm);
    padding: var(--space-3);
    font-size: 0.85rem;
    color: var(--color-text-secondary);
    max-height: 200px;
    overflow-y: auto;
    word-break: break-word;
}

.event-body-content p[b-c3pmh63f0x] {
    margin-bottom: 0.5em;
}

.event-body-content p:last-child[b-c3pmh63f0x] {
    margin-bottom: 0;
}

.event-body-content a[b-c3pmh63f0x] {
    color: var(--color-text-link);
    text-decoration: underline;
}

.event-body-content ul[b-c3pmh63f0x],
.event-body-content ol[b-c3pmh63f0x] {
    padding-left: 1.25em;
    margin-bottom: 0.5em;
}

.entity-link-badge[b-c3pmh63f0x] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    padding: var(--space-1) var(--space-2);
    background: var(--color-bg-muted);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: 0.8rem;
    color: var(--color-text-secondary);
}

.event-actions[b-c3pmh63f0x] {
    display: flex;
    gap: var(--space-2);
    padding-top: var(--space-3);
    border-top: 1px solid var(--color-border-light);
    margin-top: var(--space-2);
}

.visibility-badge[b-c3pmh63f0x] {
    display: inline-flex;
    align-items: center;
    padding: var(--space-1) var(--space-2);
    background: var(--color-bg-muted);
    border-radius: var(--radius-sm);
    font-size: 0.75rem;
    color: var(--color-text-muted);
}
/* /Components/Pages/Estimating/Steel/EstimatingShapeExplorer.razor.rz.scp.css */
.shape-explorer-detail[b-kgp90lhtzu],
.shape-explorer-rail[b-kgp90lhtzu] {
    position: sticky;
    top: 1rem;
}

/* A flex column, so the selector's list absorbs the leftover height and the drawing options
   under it stay on screen. Scrolling the rail itself would carry them out of view instead. */
.shape-explorer-rail[b-kgp90lhtzu] {
    max-height: calc(100vh - 2rem);
    display: flex;
    flex-direction: column;
    min-height: 0;
}

/* ::deep — the selector's root is rendered by a child component, so the scope attribute the
   compiler adds lands on this rule's ancestor rather than on the target itself. */
.shape-explorer-rail[b-kgp90lhtzu]  .steel-selector {
    flex: 1 1 auto;
    min-height: 0;
}

.shape-explorer-options[b-kgp90lhtzu] {
    flex: 0 0 auto;
}

@media (max-width: 1199.98px) {
    .shape-explorer-detail[b-kgp90lhtzu],
    .shape-explorer-rail[b-kgp90lhtzu] {
        position: static;
        max-height: none;
    }
}
/* /Components/Pages/FieldManagement/ProjectTracker/Dialogs/CombineBudgetItemDialog.razor.rz.scp.css */
/* The name is the only identifier once the item code is gone, so it gets the width to
   stay legible and is the only column allowed to wrap. */
.combine-preview .name-col[b-3mkepjz4eq] {
    width: 45%;
}

/* Bootstrap's .table-light is a fixed light value; drive the header from theme tokens
   so it holds up in dark mode. */
.combine-preview thead th[b-3mkepjz4eq] {
    background-color: var(--color-bg-header);
    color: var(--color-text-secondary);
    border-bottom: 1px solid var(--color-border);
}

.combine-preview tfoot td[b-3mkepjz4eq] {
    border-top: 2px solid var(--color-border);
    background-color: var(--color-bg-muted);
}

.combine-preview .result-label[b-3mkepjz4eq] {
    font-size: 0.7rem;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--color-text-muted);
}
/* /Components/Pages/FieldManagement/ProjectTracker/ProductionTracker.razor.rz.scp.css */
/* The date grid runs to hundreds of columns, so the whole table scrolls sideways inside this
   box while the identifying columns and the header row stay put. */
.production-scroll[b-5cjqchyh5y] {
    overflow-x: auto;
    overflow-y: auto;
    max-height: calc(100vh - 260px);
}

.production-table[b-5cjqchyh5y] {
    width: max-content;
    min-width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.8125rem;
}

.production-table thead th[b-5cjqchyh5y] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--bs-body-bg);
    border-bottom: 2px solid var(--bs-border-color);
    white-space: nowrap;
    vertical-align: bottom;
}

/* Group is the only frozen column; it stays in view while the rest of the row scrolls. */
.production-table .sticky-col[b-5cjqchyh5y] {
    position: sticky;
    left: 0;
    background: var(--bs-body-bg);
    z-index: 1;
    box-shadow: 1px 0 0 var(--bs-border-color);
}

.production-table thead .sticky-col[b-5cjqchyh5y] {
    z-index: 3;
    white-space: normal;
}

.production-table thead th.sortable[b-5cjqchyh5y] {
    cursor: pointer;
    user-select: none;
}

.col-group[b-5cjqchyh5y] {
    width: 190px;
    min-width: 190px;
    max-width: 190px;
    white-space: normal;
    overflow-wrap: anywhere;
}

.col-work-area[b-5cjqchyh5y] {
    width: 190px;
    min-width: 190px;
    max-width: 190px;
    white-space: normal;
    overflow-wrap: anywhere;
}

/* Rows size to their own content rather than a shared fixed height, so a wrapped work-area
   name grows only its own row. */
.production-table tbody tr[b-5cjqchyh5y] {
    height: auto;
}

.production-table tbody td[b-5cjqchyh5y] {
    vertical-align: top;
}

.col-material[b-5cjqchyh5y] {
    min-width: 150px;
}

.col-unit[b-5cjqchyh5y] {
    min-width: 80px;
}

.date-edit-cell[b-5cjqchyh5y] {
    min-width: 104px;
    padding-top: 0.15rem;
    padding-bottom: 0.15rem;
    text-align: center;
}

/* 60% of the input's original 130px, plus 20px. */
.date-edit-cell[b-5cjqchyh5y]  .date-text-input {
    --date-input-width: 98px;
}

.date-col[b-5cjqchyh5y] {
    min-width: 54px;
    max-width: 54px;
    padding-left: 2px;
    padding-right: 2px;
}

.date-dow[b-5cjqchyh5y] {
    font-size: 0.6875rem;
    color: var(--bs-secondary-color);
    font-weight: 400;
}

.date-md[b-5cjqchyh5y] {
    font-size: 0.75rem;
}

/* Days crews are not scheduled read as inactive without hiding anything reported on them. */
.non-working[b-5cjqchyh5y] {
    background-color: var(--bs-tertiary-bg);
}

.group-row[b-5cjqchyh5y] {
    cursor: pointer;
    user-select: none;
}

.group-row td[b-5cjqchyh5y] {
    border-top: 1px solid var(--bs-border-color);
    background: var(--bs-tertiary-bg);
    font-weight: 600;
}

.cell-planned[b-5cjqchyh5y] {
    color: var(--bs-body-color);
}

.cell-actual[b-5cjqchyh5y] {
    color: var(--bs-success);
    font-weight: 600;
}

.unit-total td[b-5cjqchyh5y] {
    border-top: 2px solid var(--bs-border-color);
    background: var(--bs-tertiary-bg);
}

/* A sticky cell paints its own background over the row's, so these rows restate theirs. */
.production-table .group-row .sticky-col[b-5cjqchyh5y],
.production-table .unit-total .sticky-col[b-5cjqchyh5y] {
    background: var(--bs-tertiary-bg);
}

.legend-key[b-5cjqchyh5y] {
    font-size: 0.8125rem;
    color: var(--bs-secondary-color);
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.legend-swatch[b-5cjqchyh5y] {
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 2px;
    display: inline-block;
}

.legend-planned[b-5cjqchyh5y] {
    background: var(--bs-secondary);
}

.legend-actual[b-5cjqchyh5y] {
    background: var(--bs-success);
}
/* /Components/Pages/Field/DailyReportWizard/Parts/HoursAllocatorSlider.razor.rz.scp.css */
/* Hours drag control. Extends Bootstrap's .form-range (vendored at
   wwwroot/lib/bootstrap/dist/css/bootstrap.css:2505) rather than restating it: the base rules
   already zero the appearance, size the track and handle the disabled state. What is added here is
   the per-row colour, the filled portion, and a thumb big enough to drag on a jobsite.

   Track geometry follows Bootstrap's: a 0.5rem track with the thumb pulled up by half the
   difference between thumb and track height, so it stays centred. The vendor pseudo-elements must
   be separate rules — browsers drop an entire selector list when one selector is unrecognised.

   The fill is a gradient stopping at --dr-fill, which the component sets inline: sizing stays in
   C#, colour stays here, the same split HoursBudgetBar uses. Colours come from the shared
   --dr-seg-* tokens in theme.css so the row swatch, the bar segment and this slider agree. */

.dr-hours-range[b-i1rff0nl0r] {
    margin-top: 0.5rem;
}

/* ---- Track: unfilled base, filled up to --dr-fill ---- */
.dr-hours-range[b-i1rff0nl0r]::-webkit-slider-runnable-track {
    height: 0.5rem;
    cursor: pointer;
    border-radius: 1rem;
    background-image: linear-gradient(
        to right,
        var(--dr-range-color) var(--dr-fill, 0%),
        transparent var(--dr-fill, 0%)
    );
}

.dr-hours-range[b-i1rff0nl0r]::-moz-range-track {
    height: 0.5rem;
    cursor: pointer;
    border-radius: 1rem;
    background-image: linear-gradient(
        to right,
        var(--dr-range-color) var(--dr-fill, 0%),
        transparent var(--dr-fill, 0%)
    );
}

/* ---- Thumb ----
   1.5rem rather than Bootstrap's 1rem: this is dragged with a glove on. margin-top centres it on
   the track — half the thumb height minus half the track height, negated. */
.dr-hours-range[b-i1rff0nl0r]::-webkit-slider-thumb {
    width: 1.5rem;
    height: 1.5rem;
    margin-top: -0.5rem;
    background-color: var(--bs-body-bg);
    border: 3px solid var(--dr-range-color);
    border-radius: 50%;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
    cursor: grab;
}

.dr-hours-range[b-i1rff0nl0r]::-moz-range-thumb {
    width: 1.5rem;
    height: 1.5rem;
    background-color: var(--bs-body-bg);
    border: 3px solid var(--dr-range-color);
    border-radius: 50%;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
    cursor: grab;
}

/* Bootstrap's :active rule repaints the thumb solid blue — override with the row's colour. */
.dr-hours-range[b-i1rff0nl0r]::-webkit-slider-thumb:active {
    background-color: var(--bs-body-bg);
    cursor: grabbing;
}

.dr-hours-range[b-i1rff0nl0r]::-moz-range-thumb:active {
    background-color: var(--bs-body-bg);
    cursor: grabbing;
}

/* Bootstrap's focus ring is hardcoded blue; match the row instead. */
.dr-hours-range:focus[b-i1rff0nl0r]::-webkit-slider-thumb {
    box-shadow: 0 0 0 0.25rem var(--bs-focus-ring-color, rgba(13, 110, 253, 0.25));
}

.dr-hours-range:focus[b-i1rff0nl0r]::-moz-range-thumb {
    box-shadow: 0 0 0 0.25rem var(--bs-focus-ring-color, rgba(13, 110, 253, 0.25));
}

/* Disabled thumbs go grey in Bootstrap; keep that, but drop the coloured border with it. */
.dr-hours-range:disabled[b-i1rff0nl0r]::-webkit-slider-thumb {
    border-color: var(--bs-secondary-color);
}

.dr-hours-range:disabled[b-i1rff0nl0r]::-moz-range-thumb {
    border-color: var(--bs-secondary-color);
}

/* ---- Per-row colour ----
   One variable feeds both the fill and the thumb border, so a row needs a single class. */
.dr-hours-range.dr-seg-1[b-i1rff0nl0r] { --dr-range-color: var(--dr-seg-1); }
.dr-hours-range.dr-seg-2[b-i1rff0nl0r] { --dr-range-color: var(--dr-seg-2); }
.dr-hours-range.dr-seg-3[b-i1rff0nl0r] { --dr-range-color: var(--dr-seg-3); }
.dr-hours-range.dr-seg-4[b-i1rff0nl0r] { --dr-range-color: var(--dr-seg-4); }
.dr-hours-range.dr-seg-5[b-i1rff0nl0r] { --dr-range-color: var(--dr-seg-5); }
.dr-hours-range.dr-seg-6[b-i1rff0nl0r] { --dr-range-color: var(--dr-seg-6); }
/* /Components/Pages/Field/DailyReportWizard/Parts/HoursBudgetBar.razor.rz.scp.css */
/* One horizontal bar: allocated scopes then unassigned. Segments are sized by inline width, so
   this file only carries colour, shape and the phone-sized height. */

.dr-budget-bar[b-bbxgpu1b42] {
    display: flex;
    height: 1.25rem;
    width: 100%;
    overflow: hidden;
    border-radius: var(--bs-border-radius-sm, 0.25rem);
    background-color: var(--bs-secondary-bg);
}

.dr-budget-seg[b-bbxgpu1b42] {
    height: 100%;
    min-width: 2px; /* a tiny allocation still reads as present */
    transition: width 120ms ease-out;
}

/* Colours come from the shared --dr-seg-* tokens in theme.css, since scoped CSS cannot cross
   component boundaries and the bar, the row swatch and the hours slider must name one palette.
   Cycled by index in DailyReportPalette. */
.dr-seg-1[b-bbxgpu1b42] { background-color: var(--dr-seg-1); }
.dr-seg-2[b-bbxgpu1b42] { background-color: var(--dr-seg-2); }
.dr-seg-3[b-bbxgpu1b42] { background-color: var(--dr-seg-3); }
.dr-seg-4[b-bbxgpu1b42] { background-color: var(--dr-seg-4); }
.dr-seg-5[b-bbxgpu1b42] { background-color: var(--dr-seg-5); }
.dr-seg-6[b-bbxgpu1b42] { background-color: var(--dr-seg-6); }

.dr-budget-unassigned[b-bbxgpu1b42] {
    background-color: var(--bs-tertiary-bg);
    /* Hatched so "unassigned" reads as absence rather than as another scope. */
    background-image: repeating-linear-gradient(
        45deg,
        transparent,
        transparent 4px,
        var(--bs-secondary-bg) 4px,
        var(--bs-secondary-bg) 8px
    );
}

.dr-budget-empty[b-bbxgpu1b42] {
    width: 100%;
    background-color: var(--bs-secondary-bg);
}
/* /Components/Pages/Field/DailyReportWizard/Steps/StepWhoAndWhen.razor.rz.scp.css */
/* Flex sibling of the "Search more employees" switch; without a basis it collapses
   to the width of its placeholder text. Shrinks on narrow screens. */
.add-crew-select[b-wtpi4x3fst] {
    flex: 0 1 21rem;
    min-width: 0;
}

/* Draws the eye to AM/PM when the entered times read as a shift running past midnight. */
.shift-time.is-pulsing[b-wtpi4x3fst] {
    animation: shift-overnight-pulse-b-wtpi4x3fst .6s ease-in-out 3;
}

@keyframes shift-overnight-pulse-b-wtpi4x3fst {
    0%, 100% {
        box-shadow: 0 0 0 0 rgba(var(--bs-warning-rgb), 0);
        border-color: var(--bs-border-color);
    }
    50% {
        box-shadow: 0 0 0 .25rem rgba(var(--bs-warning-rgb), .35);
        border-color: var(--bs-warning);
    }
}

@media (prefers-reduced-motion: reduce) {
    .shift-time.is-pulsing[b-wtpi4x3fst] {
        animation: none;
        border-color: var(--bs-warning);
    }
}
/* /Components/Pages/ProjectManagement/ChangeOrderSummary.razor.rz.scp.css */
/* Sticky column headers for the Change Order Summary table.
   position:sticky pins to the nearest ancestor with a clipping/scroll context.
   Bootstrap's .card (overflow:hidden) and .table-responsive (overflow-x:auto) both
   trap the header to a box that scrolls away with the page. Force both to
   overflow:visible so the page scrolls at the document level and sticky pins to the
   viewport — the same approach the per-project change order log uses. */
.co-summary-card[b-jm0q0zco89] {
    overflow: visible !important;
}
.co-summary-wrapper.table-responsive[b-jm0q0zco89] {
    overflow: visible !important;
}

/* Pin the header row below the fixed app navbar (~56px) so it isn't hidden under it.
   ::deep because the thead/th are child markup within the isolated-CSS scope.
   Each sticky th keeps a solid background (sticky cells lift out of the row paint);
   the plain headers use the dark thead color, and the colored PCO/COR headers carry
   their own inline background which is preserved. */
.co-summary-table[b-jm0q0zco89]  thead th {
    position: sticky;
    top: 56px;
    z-index: 6;
}
.co-summary-table[b-jm0q0zco89]  thead.table-dark th {
    background-color: #212529;
}

/* Three levels of the same table: branch, then project manager, then the projects. One type size
   throughout, so the indent alone carries the hierarchy. */
.co-summary-table[b-jm0q0zco89]  tr.co-division-band > td,
.co-summary-table[b-jm0q0zco89]  tr.co-division-child > td,
.co-summary-table[b-jm0q0zco89]  tr.co-division-grandchild > td {
    font-size: 0.875rem;
}

/* The branch band wears the same green as the summary cards above it. The color goes through
   Bootstrap's table variables, which is what table-hover reads when it shades a row. */
.co-summary-table[b-jm0q0zco89]  tr.co-division-band {
    --bs-table-bg: #8FD5BA;
    --bs-table-color: #000;
    --bs-table-hover-bg: #7fc9ac;
    --bs-table-hover-color: #000;
}

.co-summary-table[b-jm0q0zco89]  tr.co-division-band > td:first-child {
    padding-left: 0.75rem;
}

.co-summary-table[b-jm0q0zco89]  tr.co-division-child > td:first-child {
    padding-left: 2.5rem;
}

/* A fixed column for the row number keeps every project name on the same left edge, whether the
   number is one digit or three. */
.co-summary-table[b-jm0q0zco89]  .co-row-number {
    display: inline-block;
    width: 2.25rem;
    text-align: right;
    margin-right: 0.5rem;
}

/* The project name is a link for its address and its middle-click, so it takes the row's text color
   and shows the underline only under the pointer. */
.co-summary-table[b-jm0q0zco89]  .co-project-link {
    color: inherit;
    text-decoration: none;
}

.co-summary-table[b-jm0q0zco89]  .co-project-link:hover {
    text-decoration: underline;
}

.co-summary-table[b-jm0q0zco89]  tr.co-division-grandchild > td:first-child {
    padding-left: 4.5rem;
}

/* Each money column carries a rule on its left edge, keeping every figure in its own lane.
   The first money column's rule is heavier, marking the boundary with the text columns. */
.co-summary-table[b-jm0q0zco89]  .co-money {
    border-left: 1px solid #ced4da;
}

.co-summary-table[b-jm0q0zco89]  .co-money-first {
    border-left: 2px solid #868e96;
}

.co-summary-table[b-jm0q0zco89]  .co-money-sub {
    font-size: 0.7rem;
    opacity: 0.75;
}

/* /Components/Pages/ProjectManagement/ProjectDatabase/Options.razor.rz.scp.css */
.accordion-header:has(.accordion-button:not(.collapsed))[b-xq4twx2o71] {
    position: sticky;
    top: 56px;
    z-index: 10;
}
/* /Components/Pages/ProjectManagement/Tm/TmSummary.razor.rz.scp.css */
/* Theme tokens rather than literal colors so the cards follow light/dark mode. */

.tm-stat-card[b-h1s2gaaw7e] {
    border-left: 6px solid var(--color-border);
}

/* Unpriced is the number that needs attention. */
.tm-stat-attention[b-h1s2gaaw7e] {
    border-left-color: var(--color-warning);
}

.tm-stat-primary[b-h1s2gaaw7e] {
    border-left-color: var(--color-primary);
}

.tm-group-header[b-h1s2gaaw7e] {
    cursor: pointer;
    user-select: none;
}
/* /Components/Pages/ProjectManagement/Tm/TmTicketSheet.razor.rz.scp.css */
/* Theme tokens rather than literal colors so the sheet follows light/dark mode.
   Inline style= attributes can't respond to [data-theme="dark"], which is why these live here. */

.tm-grand-total[b-yfospfhobk] {
    color: var(--color-primary);
}

/* The totals follow the grid down only while they sit beside it. Stacked under the grid on a
   narrow screen they are already where the reader ends up, and sticking would cover the rows. */
@media (min-width: 992px) {
    .tm-totals-panel[b-yfospfhobk] {
        position: sticky;
        top: 1rem;
    }
}

/* The section the stepper is currently on. */
.tm-section-active[b-yfospfhobk] {
    background-color: var(--color-primary-light);
    font-weight: 600;
}

.tm-section-caret[b-yfospfhobk] {
    color: var(--color-primary);
}

/* The billed hours are the figure a user checks first, so they carry the accent. */
.tm-labor-grid .tm-labor-billed[b-yfospfhobk] {
    color: var(--color-primary);
}


/* The role heading carries the name and its rates, so it is shaded off from the entry rows. */
.tm-labor-grid .tm-labor-rates > td[b-yfospfhobk] {
    background-color: var(--color-surface-alt, #f1f3f5);
    padding-top: .25rem;
    padding-bottom: .25rem;
    vertical-align: middle;
}

/* The billed hours and dollars read as a footnote on the entry row above, so the pair sits tight
   under it with no border between the two. A crew with nothing entered has no figures to show and
   takes no height, so an untouched grid stays compact. */
.tm-labor-grid .tm-labor-result > td[b-yfospfhobk] {
    border-top: 0;
    padding: 0 .5rem .15rem;
    line-height: 1.1;
}

.tm-labor-grid .tm-labor-result .small[b-yfospfhobk] {
    font-size: .7rem;
}

/* The entry row's boxes carry their own height, so the cell adds nothing beyond a hairline. */
.tm-labor-grid .tm-labor-line > td[b-yfospfhobk] {
    border-bottom: 0;
    padding-top: .15rem;
    padding-bottom: 0;
}

/* The entry boxes set the row's height, so they carry the grid's rhythm. */
.tm-labor-grid .tm-labor-line input[b-yfospfhobk] {
    height: 1.75rem;
}

/* A visible rule closing each role, so Foreman, Sprayer, Tender and Laborer each read as their
   own group of crews. */
.tm-labor-grid .tm-labor-role-end > td[b-yfospfhobk] {
    border-top: 2px solid var(--color-border, #dee2e6);
    padding: 0;
    height: 0;
}

/* A role's name prints once, on its heading row; the crews below it read as its block. */
.tm-labor-grid tr:not(.tm-crew-extra) > td.tm-labor-role[b-yfospfhobk] {
    padding-left: .5rem;
}

/* Square and set beside the role name, so it reads as adding a crew to that role. */
.tm-labor-grid .tm-add-crew[b-yfospfhobk] {
    width: 1.5rem;
    height: 1.5rem;
    padding: 0;
    font-size: 1rem;
    font-weight: 600;
    line-height: 1;
    flex: 0 0 auto;
}

/* An extra crew's first cell indents further than a normal role's, so its rows read as belonging
   to the role above. */
.tm-labor-grid tr.tm-crew-extra > td.tm-labor-role[b-yfospfhobk] {
    padding-left: 1.75rem;
}
/* /Components/Pages/ProjectManagement/UnderOver/UnderOverReport.razor.rz.scp.css */
/* Toned figures are shaded cells with black text, which keeps a dense table readable. */
.margin-green[b-n0oc1cw8tu] {
    background-color: #d4edda;
    color: #000;
}

.margin-red[b-n0oc1cw8tu] {
    background-color: #f8d7da;
    color: #000;
}

/* The margin columns are narrow, so their headers wrap and centre over the figures. */
.numeric-head[b-n0oc1cw8tu] {
    text-align: center;
    vertical-align: middle;
    white-space: normal;
    line-height: 1.15;
    font-size: 0.78rem;
}

.numeric-cell[b-n0oc1cw8tu] {
    text-align: center;
    font-variant-numeric: tabular-nums;
}

.grade-cell[b-n0oc1cw8tu] {
    white-space: nowrap;
}

/* An excluded row fades without losing its figures. */
.row-excluded[b-n0oc1cw8tu] {
    opacity: 0.55;
}

.row-excluded .margin-green[b-n0oc1cw8tu],
.row-excluded .margin-red[b-n0oc1cw8tu] {
    background-color: transparent;
}

.notes-input[b-n0oc1cw8tu] {
    min-height: 32px;
    font-size: 0.8rem;
    resize: vertical;
}

.division-row[b-n0oc1cw8tu] {
    background-color: #eef1f4;
    font-weight: 600;
}

.division-row:hover[b-n0oc1cw8tu] {
    background-color: #e2e7ee;
}

.person-row td:first-child[b-n0oc1cw8tu] {
    padding-left: 2rem;
}

.job-number[b-n0oc1cw8tu] {
    font-family: var(--bs-font-monospace);
    font-size: 0.8rem;
    white-space: nowrap;
}

/* The window scrolls the whole page, so the table runs its full length instead of being boxed
   into whatever height the cards leave over. The wrapper sets no overflow of its own: a scroll
   container here would pin the headers to the top of the box rather than the top of the window. */

/* The column headers stop under the fixed app bar and hold there while the rows pass beneath.
   A sticky cell paints outside the table's own border collapsing, so its rules are drawn as
   insets on the cell itself; a plain border would vanish as the header lifts off the rows. */
.table-scroll thead th[b-n0oc1cw8tu] {
    position: sticky;
    top: 56px;
    z-index: 2;
    background-color: #f8f9fa;
    box-shadow: inset 0 -1px 0 #dee2e6, inset 0 1px 0 #dee2e6;
    border-bottom: 0;
    border-top: 0;
}

/* The job name gives its width to the notes, which are read and written in place. */
.job-name-cell[b-n0oc1cw8tu] {
    max-width: 220px;
}

/* A reload with figures already on screen dims them in place rather than replacing them with a
   spinner, so the eye keeps its place while the numbers settle. */
.report-refreshing[b-n0oc1cw8tu] {
    opacity: 0.65;
    transition: opacity 120ms ease-in-out;
    pointer-events: none;
}

/* The search box keeps a usable width without stretching across the toolbar. */
.search-box[b-n0oc1cw8tu] {
    width: 22rem;
    max-width: 100%;
}

/* A closed job is greyed in the status column, so the live work reads first. */
.status-closed[b-n0oc1cw8tu] {
    background-color: #e9ecef;
    color: #495057;
}

/* The cell takes a right-click of its own, so the cursor says there is something behind it. */
.adjustment-cell[b-n0oc1cw8tu] {
    cursor: context-menu;
}

/* The unlocked field sits in the cell the figure was reading from, at the same width. */
.adjustment-editor[b-n0oc1cw8tu] {
    min-width: 0;
}

.adjustment-editor .input-group-text[b-n0oc1cw8tu] {
    font-size: 0.75rem;
}

.adjustment-input[b-n0oc1cw8tu] {
    width: 100%;
    min-width: 0;
    text-align: right;
    font-size: 0.8rem;
    padding: 0.1rem 0.25rem;
    font-variant-numeric: tabular-nums;
}

/* A figure someone typed reads differently from one the log computed. */
.adjustment-by-hand[b-n0oc1cw8tu] {
    font-style: italic;
    border-bottom: 1px dotted #6c757d;
}

/* The mark checkbox sits to the right of the grade dropdown. The dropdown holds the spot it
   had when the checkbox led the cell, so the left padding stands in for the checkbox's width
   plus the flex gap it used to contribute. */
.mark-cell[b-n0oc1cw8tu] {
    padding-left: 2rem;
}

/* The section panel recedes so the tiles inside it carry the eye. */
.metric-card[b-n0oc1cw8tu] {
    background-color: #eef1f5;
    border-color: #ccd4de;
}

.metric-card .card-header[b-n0oc1cw8tu] {
    background-color: #e2e7ee;
    border-bottom-color: #ccd4de;
    letter-spacing: 0.04em;
}

/* Each figure sits on its own white tile, lifted off the panel behind it. */
.metric-tile[b-n0oc1cw8tu] {
    background-color: #fff;
    border: 1px solid #ccd4de;
    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.06);
}

/* The grade dropdown sits beside its mark checkbox, so the pair stays on one line. */
.grade-select[b-n0oc1cw8tu] {
    min-width: 76px;
}

.detail-row > td[b-n0oc1cw8tu] {
    background-color: #f7f9fc;
}

.detail-heading[b-n0oc1cw8tu] {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    font-weight: 700;
    color: #6c757d;
    margin-bottom: 0.25rem;
}

/* table-hover repaints every row on hover, and a banner is not row data. */
.group-banner:hover td[b-n0oc1cw8tu] {
    --bs-table-bg-state: transparent;
}

.group-banner td[b-n0oc1cw8tu] {
    background-color: #dfe4ea;
    border-top: 2px solid #8b95a1;
    font-size: 0.85rem;
    padding-top: 0.45rem;
    padding-bottom: 0.45rem;
}

/* A band's own figures sit on its banner and are read across bands, one manager against the
   next, so they are set heavier than the row figures below them. */
.group-figure[b-n0oc1cw8tu] {
    font-size: 0.95rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.01em;
}

/* The shaded figures keep their meaning against the banner's darker background. */
.group-banner .margin-green[b-n0oc1cw8tu] {
    background-color: #b7e4c0;
}

.group-banner .margin-red[b-n0oc1cw8tu] {
    background-color: #f2b8bd;
}

.group-banner:hover td[b-n0oc1cw8tu] {
    background-color: #d3d9e0;
}


/* /Components/Pages/Roadmap/RoadmapDashboard.razor.rz.scp.css */
/* Availability is the organizing idea: the rail beside each band is solid where
   the work can be used today and dashed where it cannot, so the distinction
   reads before any text does. */

.roadmap[b-qjccu2c2n4] {
    max-width: 60rem;
    margin-inline: auto;
    padding: clamp(1.5rem, 4vw, 3.5rem) clamp(1rem, 4vw, 2rem) 5rem;
}

/* ---- hero ---- */

.roadmap-hero[b-qjccu2c2n4] {
    padding-block: clamp(1rem, 4vw, 3rem) clamp(2rem, 5vw, 3.5rem);
    border-bottom: 1px solid var(--color-border, #dbe4e4);
    margin-bottom: clamp(2rem, 5vw, 3.5rem);
}

.roadmap-eyebrow[b-qjccu2c2n4] {
    font-size: .75rem;
    font-weight: 600;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--color-primary, #00857c);
    margin: 0 0 .75rem;
}

.roadmap-title[b-qjccu2c2n4] {
    font-size: clamp(2.25rem, 7vw, 4rem);
    font-weight: 700;
    letter-spacing: -.03em;
    line-height: 1.02;
    color: var(--color-text-primary, #1a2e2d);
    margin: 0 0 .75rem;
}

.roadmap-lede[b-qjccu2c2n4] {
    font-size: clamp(1rem, 2.2vw, 1.2rem);
    color: var(--color-text-secondary, #4a6463);
    max-width: 34rem;
    margin: 0;
}

.roadmap-state[b-qjccu2c2n4] {
    padding: 3rem 0;
    color: var(--color-text-secondary, #4a6463);
}

/* ---- bands ---- */

.roadmap-band[b-qjccu2c2n4] {
    position: relative;
    padding-left: clamp(1rem, 3vw, 1.75rem);
    margin-bottom: clamp(2.5rem, 6vw, 4rem);
}

/* The rail. Solid = usable today; dashed = not yet. */
.roadmap-band[b-qjccu2c2n4]::before {
    content: "";
    position: absolute;
    inset-block: .35rem 0;
    left: 0;
    width: 2px;
    border-radius: 2px;
}

.band-live[b-qjccu2c2n4]::before {
    background: var(--color-primary, #00857c);
}

.roadmap-band:not(.band-live)[b-qjccu2c2n4]::before {
    background: repeating-linear-gradient(
        to bottom,
        var(--color-border, #cbd8d7) 0 6px,
        transparent 6px 12px
    );
}

.roadmap-band-head[b-qjccu2c2n4] {
    margin-bottom: 1.25rem;
}

.roadmap-band-title[b-qjccu2c2n4] {
    font-size: .8125rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    margin: 0 0 .2rem;
    color: var(--color-text-secondary, #4a6463);
}

.band-live .roadmap-band-title[b-qjccu2c2n4] {
    color: var(--color-primary, #00857c);
}

.roadmap-band-sub[b-qjccu2c2n4] {
    font-size: .875rem;
    color: var(--color-text-muted, #6b8382);
    margin: 0;
}

/* ---- effort group ---- */

.roadmap-effort[b-qjccu2c2n4] {
    margin-bottom: clamp(1.5rem, 4vw, 2.25rem);
}

.roadmap-effort:last-child[b-qjccu2c2n4] {
    margin-bottom: 0;
}

.roadmap-effort-head[b-qjccu2c2n4] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .35rem .75rem;
    margin-bottom: .35rem;
}

.roadmap-effort-title[b-qjccu2c2n4] {
    font-size: 1.375rem;
    font-weight: 700;
    letter-spacing: -.02em;
    color: var(--color-text-primary, #1a2e2d);
    margin: 0;
}

/* In the header the kind sits beside the title, not trailing other meta, so it
   drops the leading separator dot. */
.roadmap-effort-head .roadmap-kind[b-qjccu2c2n4]::before {
    content: none;
}

.roadmap-effort-desc[b-qjccu2c2n4] {
    font-size: .9375rem;
    line-height: 1.5;
    color: var(--color-text-secondary, #4a6463);
    margin: 0 0 .875rem;
    max-width: 48ch;
}

/* ---- cards ---- */

.roadmap-cards[b-qjccu2c2n4] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: .75rem;
}

.roadmap-card[b-qjccu2c2n4] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.5rem;
    align-items: flex-end;
    justify-content: space-between;
    padding: 1.25rem 1.375rem;
    border: 1px solid var(--color-border, #dbe4e4);
    border-radius: .625rem;
    background: var(--color-bg-surface, #fff);
}

.roadmap-card.is-available[b-qjccu2c2n4] {
    border-color: color-mix(in srgb, var(--color-primary, #00857c) 35%, transparent);
    background: var(--color-primary-light, #e6f4f3);
}

.roadmap-card-main[b-qjccu2c2n4] {
    flex: 1 1 20rem;
    min-width: 0;
}

.roadmap-card-title[b-qjccu2c2n4] {
    font-size: 1.125rem;
    font-weight: 650;
    letter-spacing: -.011em;
    color: var(--color-text-primary, #1a2e2d);
    margin: 0 0 .3rem;
}

.roadmap-card-benefit[b-qjccu2c2n4] {
    font-size: .9375rem;
    line-height: 1.5;
    color: var(--color-text-secondary, #4a6463);
    margin: 0 0 .75rem;
    max-width: 44ch;
}

.roadmap-card-meta[b-qjccu2c2n4] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem .75rem;
}

/* ---- availability pill ----
   Every unavailable card says so in words. A progress bar alone — especially at
   100% — reads as "ready to use". */

.roadmap-pill[b-qjccu2c2n4] {
    font-size: .6875rem;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
    padding: .3rem .55rem;
    border-radius: .3rem;
    background: var(--color-bg-muted, #f1f5f5);
    color: var(--color-text-muted, #6b8382);
    border: 1px solid var(--color-border, #dbe4e4);
    white-space: nowrap;
}

.roadmap-pill-live[b-qjccu2c2n4] {
    background: var(--color-primary, #00857c);
    color: #fff;
    border-color: var(--color-primary, #00857c);
}

.roadmap-status[b-qjccu2c2n4],
.roadmap-kind[b-qjccu2c2n4] {
    font-size: .8125rem;
    color: var(--color-text-muted, #6b8382);
}

.roadmap-kind[b-qjccu2c2n4]::before {
    content: "·";
    margin-right: .5rem;
}

.roadmap-open[b-qjccu2c2n4] {
    font-size: .875rem;
    font-weight: 600;
    color: var(--color-primary, #00857c);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}

.roadmap-open:hover[b-qjccu2c2n4],
.roadmap-open:focus-visible[b-qjccu2c2n4] {
    text-decoration: underline;
}

.roadmap-open span[b-qjccu2c2n4] {
    transition: transform .15s ease;
}

.roadmap-open:hover span[b-qjccu2c2n4] {
    transform: translateX(2px);
}

/* ---- progress ---- */

.roadmap-progress[b-qjccu2c2n4] {
    display: flex;
    align-items: center;
    gap: .625rem;
    flex: 0 1 12rem;
    min-width: 8rem;
}

.roadmap-progress-track[b-qjccu2c2n4] {
    flex: 1;
    height: 5px;
    border-radius: 5px;
    background: var(--color-bg-muted, #eef2f2);
    overflow: hidden;
}

.roadmap-progress-fill[b-qjccu2c2n4] {
    height: 100%;
    border-radius: 5px;
    background: var(--color-text-muted, #6b8382);
}

.band-building .roadmap-progress-fill[b-qjccu2c2n4],
.band-soon .roadmap-progress-fill[b-qjccu2c2n4] {
    background: var(--color-primary, #00857c);
}

.roadmap-progress-value[b-qjccu2c2n4] {
    font-size: .75rem;
    font-variant-numeric: tabular-nums;
    color: var(--color-text-muted, #6b8382);
    min-width: 2.5rem;
    text-align: right;
}

@media (max-width: 30rem) {
    .roadmap-card[b-qjccu2c2n4] {
        align-items: flex-start;
    }

    .roadmap-progress[b-qjccu2c2n4] {
        flex-basis: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .roadmap-open span[b-qjccu2c2n4] {
        transition: none;
    }
}
/* /Components/Pages/Updates/UpdatesFeed.razor.rz.scp.css */
/* A dated list rather than cards: these are things that already happened, so
   the release date is the spine of the page. */

.updates[b-3a2l7gtitq] {
    max-width: 48rem;
    margin-inline: auto;
    padding: clamp(1.5rem, 4vw, 3.5rem) clamp(1rem, 4vw, 2rem) 5rem;
}

.updates-hero[b-3a2l7gtitq] {
    padding-bottom: clamp(1.5rem, 4vw, 2.5rem);
    border-bottom: 1px solid var(--color-border, #dbe4e4);
    margin-bottom: clamp(1.5rem, 4vw, 2.5rem);
}

.updates-title[b-3a2l7gtitq] {
    font-size: clamp(1.875rem, 5vw, 2.75rem);
    font-weight: 700;
    letter-spacing: -.025em;
    color: var(--color-text-primary, #1a2e2d);
    margin: 0 0 .5rem;
}

.updates-lede[b-3a2l7gtitq] {
    font-size: 1rem;
    color: var(--color-text-secondary, #4a6463);
    margin: 0;
}

.updates-state[b-3a2l7gtitq] {
    padding: 3rem 0;
    color: var(--color-text-secondary, #4a6463);
}

.updates-effort[b-3a2l7gtitq] {
    margin-bottom: clamp(1.75rem, 5vw, 3rem);
}

.updates-effort:last-child[b-3a2l7gtitq] {
    margin-bottom: 0;
}

.updates-effort-head[b-3a2l7gtitq] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .35rem .75rem;
    margin-bottom: .35rem;
}

.updates-effort-title[b-3a2l7gtitq] {
    font-size: clamp(1.25rem, 3vw, 1.5rem);
    font-weight: 700;
    letter-spacing: -.02em;
    color: var(--color-text-primary, #1a2e2d);
    margin: 0;
}

.updates-effort-desc[b-3a2l7gtitq] {
    font-size: .9375rem;
    line-height: 1.5;
    color: var(--color-text-secondary, #4a6463);
    margin: 0 0 .5rem;
    max-width: 50ch;
}

.updates-list[b-3a2l7gtitq] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.updates-entry[b-3a2l7gtitq] {
    display: grid;
    grid-template-columns: 7rem 1fr;
    gap: 1.5rem;
    padding-block: 1.5rem;
    border-bottom: 1px solid var(--color-border, #eef2f2);
}

.updates-entry:last-child[b-3a2l7gtitq] {
    border-bottom: 0;
}

.updates-date[b-3a2l7gtitq] {
    font-size: .8125rem;
    font-variant-numeric: tabular-nums;
    color: var(--color-text-muted, #6b8382);
    padding-top: .15rem;
}

.updates-entry-title[b-3a2l7gtitq] {
    font-size: 1.0625rem;
    font-weight: 650;
    color: var(--color-text-primary, #1a2e2d);
    margin: 0 0 .3rem;
}

.updates-benefit[b-3a2l7gtitq] {
    font-size: .9375rem;
    line-height: 1.55;
    color: var(--color-text-secondary, #4a6463);
    margin: 0 0 .6rem;
    max-width: 46ch;
}

.updates-meta[b-3a2l7gtitq] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem .75rem;
}

.updates-open[b-3a2l7gtitq] {
    font-size: .875rem;
    font-weight: 600;
    color: var(--color-primary, #00857c);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}

.updates-open:hover[b-3a2l7gtitq],
.updates-open:focus-visible[b-3a2l7gtitq] {
    text-decoration: underline;
}

.updates-open span[b-3a2l7gtitq] {
    transition: transform .15s ease;
}

.updates-open:hover span[b-3a2l7gtitq] {
    transform: translateX(2px);
}

.updates-kind[b-3a2l7gtitq] {
    font-size: .8125rem;
    color: var(--color-text-muted, #6b8382);
}

@media (max-width: 34rem) {
    .updates-entry[b-3a2l7gtitq] {
        grid-template-columns: 1fr;
        gap: .35rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .updates-open span[b-3a2l7gtitq] {
        transition: none;
    }
}
/* /Components/Shared/Assignments/AssignmentDatePickerDialog.razor.rz.scp.css */
/* Multi-calendar layout */
.multi-calendar-container[b-0rtqa8wju0] {
    display: flex;
    gap: 1.5rem;
    flex-wrap: wrap;
    justify-content: center;
}

.calendar-month[b-0rtqa8wju0] {
    min-width: 280px;
    flex: 1;
    max-width: 320px;
}

/* Calendar grid */
.calendar-grid[b-0rtqa8wju0] {
    border: 1px solid var(--color-border);
    border-radius: 0.375rem;
    overflow: hidden;
}

.calendar-weekdays[b-0rtqa8wju0] {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    background-color: var(--color-bg-header);
    border-bottom: 1px solid var(--color-border);
}

.weekday[b-0rtqa8wju0] {
    padding: 0.5rem 0.25rem;
    text-align: center;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--color-text-muted);
}

.weekday.weekend[b-0rtqa8wju0] {
    color: var(--color-text-muted);
}

.calendar-days[b-0rtqa8wju0] {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 1px;
    background-color: var(--color-border);
}

/* Calendar day button */
.calendar-day[b-0rtqa8wju0] {
    aspect-ratio: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--color-bg-surface);
    border: none;
    font-size: 0.875rem;
    color: var(--color-text-primary);
    cursor: pointer;
    transition: background-color 0.15s ease-in-out;
    padding: 0;
    min-height: 36px;
}

/* Default hover - used as fallback */
.calendar-day:hover:not(.disabled)[b-0rtqa8wju0] {
    background-color: var(--color-bg-hover);
}

/* Individual mode - will select (green glow) */
.mode-individual.action-add .calendar-day:not(.selected):not(.disabled):hover[b-0rtqa8wju0] {
    box-shadow: inset 0 0 0 2px var(--color-success);
    background-color: rgba(25, 135, 84, 0.1);
}

/* Individual mode - will deselect (red glow) */
.mode-individual.action-add .calendar-day.selected:not(.disabled):hover[b-0rtqa8wju0] {
    box-shadow: inset 0 0 0 2px var(--color-error);
    background-color: var(--color-accent);
}

/* Range mode - Add action: preview will-select */
.mode-range.action-add .calendar-day:not(.disabled):hover[b-0rtqa8wju0],
.mode-range.action-add .calendar-day.range-preview:not(.disabled)[b-0rtqa8wju0] {
    box-shadow: inset 0 0 0 2px var(--color-success);
    background-color: rgba(25, 135, 84, 0.15);
}

.mode-range.action-add .calendar-day.selected.range-preview:not(.disabled)[b-0rtqa8wju0] {
    box-shadow: inset 0 0 0 2px var(--color-success);
    background-color: var(--color-accent);
}

/* Range mode - Remove action: preview will-deselect */
.mode-range.action-remove .calendar-day:not(.disabled):hover[b-0rtqa8wju0],
.mode-range.action-remove .calendar-day.range-preview:not(.disabled)[b-0rtqa8wju0] {
    box-shadow: inset 0 0 0 2px var(--color-error);
    background-color: rgba(220, 53, 69, 0.15);
}

.mode-range.action-remove .calendar-day.selected.range-preview:not(.disabled)[b-0rtqa8wju0] {
    box-shadow: inset 0 0 0 2px var(--color-error);
    background-color: rgba(220, 53, 69, 0.3);
}

/* Weekend styling */
.calendar-day.weekend[b-0rtqa8wju0] {
    background-color: var(--color-bg-muted);
}

/* Disabled weekend */
.calendar-day.disabled[b-0rtqa8wju0] {
    color: var(--color-text-muted);
    cursor: not-allowed;
    background-color: var(--color-bg-hover);
}

.calendar-day.disabled:hover[b-0rtqa8wju0] {
    background-color: var(--color-bg-hover);
}

/* Other month days */
.calendar-day.other-month[b-0rtqa8wju0] {
    color: var(--color-text-muted);
    cursor: pointer;
}

/* Selected date */
.calendar-day.selected[b-0rtqa8wju0] {
    background-color: var(--color-accent);
    color: var(--color-accent-text);
}

.calendar-day.selected.weekend[b-0rtqa8wju0] {
    background-color: var(--color-accent);
}

/* Partial selection — the date is on some, but not all, of the assignments
   in scope (bulk edit). Renders with a lighter fill than fully-selected to
   communicate "this date is only partially shared." Once the user touches
   the date in this picker session, the partial styling clears. */
.calendar-day.selected.partial[b-0rtqa8wju0] {
    background-color: color-mix(in srgb, var(--color-accent) 45%, var(--color-bg-surface) 55%);
}

/* Selected dates shown in other month overflow areas */
.calendar-day.selected.other-month[b-0rtqa8wju0] {
    background-color: #6673a8;
    color: rgba(255, 255, 255, 0.7);
    cursor: pointer;
}

/* Range start indicator */
.calendar-day.range-start[b-0rtqa8wju0] {
    box-shadow: inset 0 0 0 2px var(--color-success);
}

.calendar-day.range-start.selected[b-0rtqa8wju0] {
    box-shadow: inset 0 0 0 2px var(--color-accent-text);
}

/* Today indicator */
.calendar-day.today[b-0rtqa8wju0] {
    font-weight: 700;
    border: 2px solid var(--color-accent);
}

.calendar-day.today.selected[b-0rtqa8wju0] {
    border-color: var(--color-accent-text);
}

/* Selection summary */
.selection-summary[b-0rtqa8wju0] {
    background-color: var(--color-bg-selected);
    border-radius: 0.375rem;
    padding: 0.5rem 1rem;
    font-size: 0.875rem;
    color: var(--color-accent);
}

/* Header controls */
.calendar-header[b-0rtqa8wju0] {
    padding: 0.25rem 0;
}

/* Responsive adjustments */
@media (max-width: 768px) {
    .multi-calendar-container[b-0rtqa8wju0] {
        flex-direction: column;
        align-items: center;
    }

    .calendar-month[b-0rtqa8wju0] {
        width: 100%;
        max-width: 100%;
    }

    .calendar-day[b-0rtqa8wju0] {
        min-height: 40px;
        font-size: 0.9375rem;
    }
}

/* Tablet touch targets */
@media (pointer: coarse) {
    .calendar-day[b-0rtqa8wju0] {
        min-height: 44px;
    }
}
/* /Components/Shared/Dashboard/ConflictResolutionDialog.razor.rz.scp.css */
/* Conflict row layout — flex row with fixed-width slots for date, kind, action area. */
.conflict-row[b-mppkdh9x7e] {
    border-top: 1px solid var(--bs-border-color, #dee2e6);
}

.conflict-row:first-child[b-mppkdh9x7e] {
    border-top: none;
}

/* Locked bar shown on time-off rows in place of the strategy buttons. */
.conflict-locked-bar[b-mppkdh9x7e] {
    background-color: #e9ecef;
    color: #495057;
    border-radius: 0.375rem;
    padding: 0.4rem 0.75rem;
    text-align: center;
    font-size: 0.85rem;
    border: 1px solid #adb5bd;
}

/* Strategy chip buttons — three-up layout, equal width within the action slot. */
.strategy-chip[b-mppkdh9x7e] {
    min-width: 0; /* allow flex shrink */
    white-space: nowrap;
}

/* Card header tints — yellow while unresolved, green when fully reviewed.
   Use Bootstrap's *-subtle utility colors so they match the rest of the app. */
.card-header.bg-warning-subtle[b-mppkdh9x7e] {
    background-color: #fff3cd !important;
}

.card-header.bg-success-subtle[b-mppkdh9x7e] {
    background-color: #d1e7dd !important;
}

/* Filter chip toolbar separator. */
.chip-toolbar .vr[b-mppkdh9x7e] {
    height: 24px;
    color: #dee2e6;
    opacity: 1;
}
/* /Components/Shared/Development/Organizer/AffectedPagesPanel.razor.rz.scp.css */
.pages-title[b-jgnzzporkr] {
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--color-text-muted, #6b8382);
    margin: 0 0 .35rem;
}

.pages-empty[b-jgnzzporkr] {
    font-size: .8125rem;
    color: var(--color-text-muted, #6b8382);
    margin: 0 0 .5rem;
}

.pages-list[b-jgnzzporkr] {
    list-style: none;
    margin: 0 0 .5rem;
    padding: 0;
}

.pages-row[b-jgnzzporkr] {
    display: flex;
    align-items: center;
    gap: .625rem;
    padding-block: .3rem;
}

.pages-name[b-jgnzzporkr] {
    flex: 1 1 auto;
    min-width: 0;
    font-size: .8125rem;
    font-family: var(--bs-font-monospace, monospace);
    color: var(--color-text-secondary, #4a6463);
    overflow-wrap: anywhere;
}

/* Unconfirmed rows read as provisional — they gate nothing yet. */
.pages-row:not(.is-confirmed) .pages-name[b-jgnzzporkr] {
    opacity: .65;
    font-style: italic;
}

.pages-tag[b-jgnzzporkr] {
    font-size: .6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--color-primary, #00857c);
}

.pages-btn[b-jgnzzporkr],
.pages-remove[b-jgnzzporkr] {
    flex: 0 0 auto;
    font-size: .75rem;
    padding: .125rem .5rem;
}

.pages-remove[b-jgnzzporkr] {
    color: var(--color-text-muted, #6b8382);
    text-decoration: none;
}

.pages-remove:hover[b-jgnzzporkr] {
    color: var(--bs-danger, #dc3545);
}
/* /Components/Shared/Development/Organizer/RecentlyDeletedPanel.razor.rz.scp.css */
.org-deleted[b-gpbsrv1f7g] {
    margin-top: .5rem;
}

.org-deleted-toggle[b-gpbsrv1f7g] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .25rem 0;
    border: 0;
    background: none;
    font-size: .8125rem;
    color: var(--color-text-muted, #6b8382);
    cursor: pointer;
}

.org-deleted-toggle i[b-gpbsrv1f7g] {
    transition: transform .15s ease;
    font-size: .7rem;
}

.org-deleted-toggle.is-open i[b-gpbsrv1f7g] {
    transform: rotate(90deg);
}

.org-deleted-list[b-gpbsrv1f7g] {
    list-style: none;
    margin: .25rem 0 0;
    padding: 0;
}

.org-deleted-row[b-gpbsrv1f7g] {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .25rem .5rem;
    font-size: .8125rem;
    color: var(--color-text-muted, #6b8382);
    border-radius: .25rem;
}

.org-deleted-row:hover[b-gpbsrv1f7g] {
    background: var(--bs-tertiary-bg, #f1f4f4);
}

.org-deleted-label[b-gpbsrv1f7g] {
    flex: 1 1 auto;
    text-decoration: line-through;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.org-deleted-when[b-gpbsrv1f7g] {
    flex: 0 0 auto;
    font-size: .75rem;
}

.org-deleted-undo[b-gpbsrv1f7g] {
    flex: 0 0 auto;
    border: 0;
    background: none;
    padding: 0 .25rem;
    font-size: .8125rem;
    color: var(--bs-primary, #17a2b8);
    cursor: pointer;
}

.org-deleted-undo:hover[b-gpbsrv1f7g] {
    text-decoration: underline;
}

@media (prefers-reduced-motion: reduce) {
    .org-deleted-toggle i[b-gpbsrv1f7g] {
        transition: none;
    }
}
/* /Components/Shared/Development/Organizer/SavedIndicator.razor.rz.scp.css */
.saved-indicator[b-ux6xztod6i] {
    display: inline-flex;
    align-items: center;
    font-size: .8125rem;
    color: var(--color-text-muted, #6b8382);
    opacity: 0;
    transition: opacity .25s ease;
    min-height: 1.25rem;
}

.saved-indicator.is-visible[b-ux6xztod6i] {
    opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
    .saved-indicator[b-ux6xztod6i] {
        transition: none;
    }
}
/* /Components/Shared/Development/Organizer/SignOffModePicker.razor.rz.scp.css */
/* Colour is decorative — the option text always states the mode, so nothing is
   carried by contrast alone. */

.signoff-mode[b-01a5o1updt] {
    width: auto;
    font-size: .75rem;
    padding-block: .15rem;
}

.signoff-mode.mode-follow[b-01a5o1updt] {
    color: var(--color-text-muted, #6b8382);
}

.signoff-mode.mode-always-on[b-01a5o1updt] {
    color: var(--color-primary, #00857c);
    font-weight: 600;
}

.signoff-mode.mode-always-off[b-01a5o1updt] {
    color: var(--color-text-muted, #9db0af);
    font-style: italic;
}

.signoff-mode:disabled[b-01a5o1updt] {
    color: var(--color-text-muted, #9db0af);
    font-style: normal;
}
/* /Components/Shared/Estimating/Steel/SteelShapeSelector.razor.rz.scp.css */
/* A flex column so the list takes whatever height is left over. Sizing it in vh instead would
   let a long family push the drawing options out of the rail. */
.steel-selector[b-d2sa6h7mqz] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: 100%;
}

.steel-selector-search[b-d2sa6h7mqz] {
    flex: 0 0 auto;
    margin-bottom: 0.75rem;
}

.steel-selector-crumbs[b-d2sa6h7mqz] {
    flex: 0 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem;
    margin-bottom: 0.5rem;
}

.steel-selector-crumb[b-d2sa6h7mqz] {
    padding: 0.15rem 0.5rem;
    font-size: 0.8125rem;
    line-height: 1.4;
}

/* min-height is load-bearing: without it a flex child refuses to shrink below its content
   and pushes everything after it out of the rail. */
.steel-selector-list[b-d2sa6h7mqz] {
    flex: 1 1 auto;
    min-height: 8rem;
    overflow-y: auto;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

/* A fixed thumbnail track and a minmax(0, 1fr) text track. The minmax(0, …) is what lets the
   text column shrink without the drawing claiming the width the designation needs. */
.steel-selector-size[b-d2sa6h7mqz],
.steel-selector-level[b-d2sa6h7mqz] {
    display: grid;
    grid-template-columns: 1.75rem minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.2rem 0.5rem;
    border: 0;
    border-bottom: 1px solid var(--bs-border-color);
    background: transparent;
    color: inherit;
    text-align: left;
    font-variant-numeric: tabular-nums;
}

/* The level rows carry no drawing, so their label starts in the first track. */
.steel-selector-level[b-d2sa6h7mqz] {
    grid-template-columns: minmax(0, 1fr) auto auto;
}

.steel-selector-size:last-child[b-d2sa6h7mqz],
.steel-selector-level:last-child[b-d2sa6h7mqz] {
    border-bottom: 0;
}

.steel-selector-size:hover[b-d2sa6h7mqz],
.steel-selector-level:hover[b-d2sa6h7mqz] {
    background-color: var(--bs-tertiary-bg);
}

.steel-selector-size.active[b-d2sa6h7mqz] {
    background-color: var(--bs-primary);
    color: var(--bs-white);
}

.steel-selector-preview[b-d2sa6h7mqz] {
    width: 1.75rem;
}

.steel-selector-designation[b-d2sa6h7mqz],
.steel-selector-name[b-d2sa6h7mqz] {
    min-width: 0;
    white-space: nowrap;
}

.steel-selector-chevron[b-d2sa6h7mqz] {
    color: var(--bs-secondary-color);
    line-height: 1;
}

/* Sticky so the family a run of results belongs to stays readable while scrolling. */
.steel-selector-group[b-d2sa6h7mqz] {
    position: sticky;
    top: 0;
    z-index: 1;
    padding: 0.2rem 0.5rem;
    background-color: var(--bs-secondary-bg);
    border-bottom: 1px solid var(--bs-border-color);
    color: var(--bs-secondary-color);
    font-size: 0.75rem;
    text-transform: uppercase;
}
/* /Components/Shared/Field/DailyReportContent.razor.rz.scp.css */
/* The rail's sticky height, published on the wizard root so both the rail itself and the material
   tab's section nav — which pins directly underneath it — read one number. A chip is 1.4
   line-height at 0.875rem plus padding and border, inside 0.5rem block padding; stable because the
   row never wraps. */
[b-q4jqw46s7k] .dr-wizard {
    --dr-rail-h: 3rem;
}

/* Step rail. Phone-first: one scrollable row that never wraps and never widens the page.
   The chips are the primary navigation, so they stay put while the step body scrolls. */
[b-q4jqw46s7k] .dr-chips {
    overflow-x: auto;
    flex-wrap: nowrap;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    position: sticky;
    top: 0;
    z-index: 2;
    background-color: var(--bs-body-bg);
    padding-block: 0.5rem;
    height: var(--dr-rail-h);
}

[b-q4jqw46s7k] .dr-chips::-webkit-scrollbar {
    display: none;
}

/* Pill with a leading number chip: idle / active / done, the same three-state rail the wage
   sheets and T&M builder use. */
[b-q4jqw46s7k] .dr-chip {
    flex: 0 0 auto;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--bs-border-color);
    background: var(--bs-body-bg);
    color: var(--bs-secondary-color);
    border-radius: 999px;
    padding: 0.25rem 0.75rem 0.25rem 0.3rem;
    font-size: 0.875rem;
    line-height: 1.4;
}

[b-q4jqw46s7k] .dr-chip-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 50%;
    background: var(--bs-tertiary-bg);
    font-size: 0.7rem;
    margin-right: 0.35rem;
    flex: 0 0 auto;
}

[b-q4jqw46s7k] .dr-chip-active {
    border-color: var(--bs-primary);
    color: var(--bs-primary);
    font-weight: 600;
}

[b-q4jqw46s7k] .dr-chip-active .dr-chip-num {
    background: var(--bs-primary);
    color: #fff;
}

[b-q4jqw46s7k] .dr-chip-done {
    border-color: var(--bs-success);
    color: var(--bs-success);
}

[b-q4jqw46s7k] .dr-chip-done .dr-chip-num {
    background: var(--bs-success);
    color: #fff;
}

[b-q4jqw46s7k] .dr-chip-partial {
    border-color: var(--bs-warning);
    color: var(--bs-warning-text-emphasis, var(--bs-warning));
}

[b-q4jqw46s7k] .dr-chip-partial .dr-chip-num {
    background: var(--bs-warning);
    color: #000;
}

[b-q4jqw46s7k] .dr-chip-sep {
    flex: 0 0 auto;
}

@media (min-width: 768px) {
    [b-q4jqw46s7k] .dr-chips {
        flex-wrap: wrap;
        overflow-x: visible;
    }
}

/* Back / position / Next, pinned so there is always a way forward without reaching for the rail.
   Sits above the iOS home indicator rather than under it. */
[b-q4jqw46s7k] .dr-wizard-footer {
    position: sticky;
    bottom: 0;
    z-index: 2;
    background-color: var(--bs-body-bg);
    border-top: 1px solid var(--bs-border-color);
    padding-top: 0.75rem;
    padding-bottom: calc(0.75rem + env(safe-area-inset-bottom, 0px));
    margin-top: 1rem;
}

[b-q4jqw46s7k] .dr-save-status {
    white-space: nowrap;
}

/* Allocator swatch: ties a scope row to its segment in the budget bar. Colours come from the
   shared --dr-seg-* tokens in theme.css, since scoped CSS cannot cross component boundaries and
   the bar, the swatch and the slider must all name the same palette. */
[b-q4jqw46s7k] .dr-swatch {
    display: inline-block;
    width: 0.6rem;
    height: 0.6rem;
    border-radius: 2px;
    margin-right: 0.35rem;
    vertical-align: baseline;
    flex: 0 0 auto;
}

[b-q4jqw46s7k] .dr-swatch.dr-seg-1 { background-color: var(--dr-seg-1); }
[b-q4jqw46s7k] .dr-swatch.dr-seg-2 { background-color: var(--dr-seg-2); }
[b-q4jqw46s7k] .dr-swatch.dr-seg-3 { background-color: var(--dr-seg-3); }
[b-q4jqw46s7k] .dr-swatch.dr-seg-4 { background-color: var(--dr-seg-4); }
[b-q4jqw46s7k] .dr-swatch.dr-seg-5 { background-color: var(--dr-seg-5); }
[b-q4jqw46s7k] .dr-swatch.dr-seg-6 { background-color: var(--dr-seg-6); }

/* Lets the scope name truncate instead of pushing the trash button off a narrow screen. */
[b-q4jqw46s7k] .min-width-0 {
    min-width: 0;
}

/* ---- Material tab ----
   Section jump bar, pinned directly under the step rail. The rail is the sticky element above it,
   so this one's offset is the rail's own height rather than a number that has to be kept in step
   with it by hand. */
[b-q4jqw46s7k] .dr-mat-nav {
    position: sticky;
    top: var(--dr-rail-h, 3rem);
    z-index: 1;
    background-color: var(--bs-body-bg);
    padding-block: 0.5rem;
    overflow-x: auto;
    flex-wrap: nowrap;
    scrollbar-width: none;
}

[b-q4jqw46s7k] .dr-mat-nav::-webkit-scrollbar {
    display: none;
}

[b-q4jqw46s7k] .dr-mat-nav-chip {
    cursor: pointer;
}

[b-q4jqw46s7k] .dr-chip-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.1rem;
    height: 1.1rem;
    padding: 0 0.25rem;
    border-radius: 999px;
    background: var(--bs-tertiary-bg);
    font-size: 0.7rem;
}

/* The whole card is the tap target for its own fields; the chevron and the trash button are the
   only two things that act, and they are kept apart so a mis-tap cannot delete a row. */
[b-q4jqw46s7k] .dr-mat-detail {
    min-width: 2.75rem;
}

/* Marks a row whose required lot numbers are still empty. */
[b-q4jqw46s7k] .dr-mat-dot {
    position: absolute;
    top: -0.15rem;
    right: -0.15rem;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background-color: var(--bs-warning);
    border: 1px solid var(--bs-body-bg);
}

/* Phone-first sizing: the -sm controls the wizard uses everywhere give ~31px tap targets, which
   is too small for a form filled in on a jobsite. Below the sm breakpoint they render at base
   size; desktop keeps the denser -sm scale. Done here rather than in nine step files. */
@media (max-width: 575.98px) {
    [b-q4jqw46s7k] .form-control-sm,
    [b-q4jqw46s7k] .form-select-sm {
        min-height: 2.75rem;
        padding: 0.5rem 0.75rem;
        font-size: 1rem;
        border-radius: var(--bs-border-radius);
    }

    [b-q4jqw46s7k] .btn-sm {
        --bs-btn-padding-y: 0.5rem;
        --bs-btn-padding-x: 0.75rem;
        --bs-btn-font-size: 1rem;
        --bs-btn-border-radius: var(--bs-border-radius);
    }

    /* The rail's chips are navigation, not form controls — keep them compact so all seven stay
       scannable on a phone. */
    [b-q4jqw46s7k] .dr-chip {
        font-size: 0.875rem;
        padding: 0.25rem 0.75rem 0.25rem 0.3rem;
    }
}
/* /Components/Shared/Help/HelpHint.razor.rz.scp.css */
.help-hint-icon[b-ch6pmt2z41] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    border: 1px solid var(--bs-border-color, #dee2e6);
    background: var(--bs-body-bg, #fff);
    color: var(--bs-secondary-color, #6c757d);
    cursor: pointer;
    font-size: 0.75rem;
    padding: 0;
    transition: color 0.15s ease, border-color 0.15s ease;
}

.help-hint-icon:hover[b-ch6pmt2z41] {
    color: var(--bs-primary, #0d6efd);
    border-color: var(--bs-primary, #0d6efd);
}

.help-hint-text[b-ch6pmt2z41] {
    display: inline-flex;
    align-items: center;
    background: none;
    border: none;
    padding: 0;
    color: var(--bs-secondary-color, #6c757d);
    font-size: 0.85rem;
    cursor: pointer;
    transition: color 0.15s ease;
}

.help-hint-text:hover[b-ch6pmt2z41] {
    color: var(--bs-primary, #0d6efd);
    text-decoration: underline;
}
/* /Components/Shared/Modals/LinkEstimatingEdgeScenariosModal.razor.rz.scp.css */
.sticky-header-table thead th[b-7c3hyi6wwe] {
    position: sticky;
    top: 0;
    z-index: 1;
    background-color: var(--bs-body-bg);
}
/* /Components/Shared/ProjectManagement/TmMarkupDefaultsCard.razor.rz.scp.css */
/* Each group is a panel with a coloured left edge: the four section markups, then the three tiers
   that compound on the whole ticket. The colour and the border are what separate the two kinds. */
.tm-markup-group[b-mu1vczr9kv] {
    border: 1px solid var(--color-border, #dee2e6);
    border-left-width: 4px;
    border-radius: 0.375rem;
    padding: 0.75rem;
}

.tm-markup-group-section[b-mu1vczr9kv] {
    border-left-color: #0d7d6b;
}

.tm-markup-group-ticket[b-mu1vczr9kv] {
    border-left-color: #b8860b;
}

.tm-markup-group-head[b-mu1vczr9kv] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    margin-bottom: 0.6rem;
}

.tm-markup-group-head .text-muted[b-mu1vczr9kv] {
    text-transform: none;
    letter-spacing: normal;
}

/* The fields sit at their own width and stay together at the left, so a wide card does not
   stretch a 90px percentage box across a quarter of the screen. */
.tm-markup-fields[b-mu1vczr9kv] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 1.25rem;
}

.tm-markup-field[b-mu1vczr9kv] {
    width: 9.5rem;
}

/* A fixed height for the hint line keeps every input on the same baseline whether or not its
   field carries one. */
.tm-markup-hint[b-mu1vczr9kv] {
    font-size: 0.7rem;
    line-height: 1rem;
    min-height: 1rem;
    margin-bottom: 0.25rem;
    color: var(--color-text-muted, #6c757d);
}
/* /Components/Shared/SteelFinishing/SteelShapeChooserDialog.razor.rz.scp.css */
/* The selector fills the dialog and scrolls its own list, so the dialog keeps one scrollbar
   however tall the browser makes it. */
.steel-shape-chooser[b-n0a6hs3y86] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: 100%;
}

.steel-shape-chooser[b-n0a6hs3y86]  .steel-selector {
    min-height: 22rem;
}
/* /Components/Shared/UI/ComboBox.razor.rz.scp.css */
.combo-box-container[b-qbsofcateg] {
    position: relative;
}

.combo-box-dropdown[b-qbsofcateg] {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--color-bg-elevated, #fff);
    border: 1px solid var(--color-border, #dee2e6);
    border-radius: 0.375rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
    z-index: 1060;
    margin-top: 2px;
    max-height: 200px;
    overflow-y: auto;
}

.combo-box-option[b-qbsofcateg] {
    padding: 0.375rem 0.75rem;
    cursor: pointer;
    font-size: 0.875rem;
    transition: background-color 0.1s;
}

.combo-box-option:hover[b-qbsofcateg],
.combo-box-option.highlighted[b-qbsofcateg] {
    background-color: var(--color-bg-hover, #e9ecef);
}
/* /Components/Shared/UI/DatePicker.razor.rz.scp.css */
.date-picker-container[b-128sx1szac] {
    position: relative;
}

.date-picker-dropdown[b-128sx1szac] {
    position: absolute;
    top: 100%;
    left: 0;
    background: var(--color-bg-elevated);
    border: 1px solid var(--color-border);
    border-radius: 0.375rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
    z-index: 1060;
    margin-top: 2px;
    padding: 0.5rem;
    min-width: 280px;
}

.calendar-header[b-128sx1szac] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.25rem 0;
    margin-bottom: 0.5rem;
}

.calendar-title[b-128sx1szac] {
    font-weight: 600;
    color: var(--color-accent);
}

.calendar-grid[b-128sx1szac] {
    width: 100%;
}

.calendar-weekdays[b-128sx1szac] {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
    margin-bottom: 0.25rem;
}

.weekday[b-128sx1szac] {
    text-align: center;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--color-text-muted);
    padding: 0.25rem;
}

.calendar-days[b-128sx1szac] {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}

.calendar-day[b-128sx1szac] {
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: none;
    background: transparent;
    border-radius: 50%;
    cursor: pointer;
    font-size: 0.875rem;
    color: var(--color-text-primary);
    transition: background-color 0.15s, color 0.15s;
}

.calendar-day:hover[b-128sx1szac] {
    background-color: var(--color-bg-hover);
}

.calendar-day.other-month[b-128sx1szac] {
    color: var(--color-text-muted);
}

.calendar-day.today[b-128sx1szac] {
    border: 2px solid var(--color-accent);
}

.calendar-day.selected[b-128sx1szac] {
    background-color: var(--color-accent);
    color: var(--color-accent-text);
}

.calendar-day.selected:hover[b-128sx1szac] {
    background-color: var(--color-accent-hover);
}

.calendar-footer[b-128sx1szac] {
    display: flex;
    justify-content: center;
    padding-top: 0.5rem;
    border-top: 1px solid var(--color-border);
    margin-top: 0.5rem;
}

.date-picker-backdrop[b-128sx1szac] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1055;
}

.form-control.focus[b-128sx1szac] {
    border-color: var(--color-border-focus);
    box-shadow: 0 0 0 0.25rem var(--color-focus-ring);
}
/* /Components/Shared/UI/DateTextInput.razor.rz.scp.css */
.date-text-input[b-fk89bjirmb] {
    position: relative;
    display: inline-block;
    width: 100%;
    max-width: var(--date-input-width, none);
}

.date-text[b-fk89bjirmb] {
    width: 100%;
    padding-right: 1.15rem;
}

/* The native control sits under the calendar glyph at full opacity zero: clicking the icon opens
   the browser's own picker, while every keystroke still lands in the text box above. */
.date-native[b-fk89bjirmb] {
    position: absolute;
    top: 0;
    right: 0;
    width: 1.15rem;
    height: 100%;
    opacity: 0;
    border: 0;
    padding: 0;
    margin: 0;
    cursor: pointer;
}

.date-native[b-fk89bjirmb]::-webkit-calendar-picker-indicator {
    width: 100%;
    height: 100%;
    cursor: pointer;
}

.date-icon[b-fk89bjirmb] {
    position: absolute;
    top: 50%;
    right: 0.25rem;
    transform: translateY(-50%);
    pointer-events: none;
    color: var(--bs-secondary-color);
    font-size: 0.8em;
}

.date-saved[b-fk89bjirmb] {
    position: absolute;
    top: 50%;
    right: 0.25rem;
    transform: translateY(-50%);
    pointer-events: none;
    color: var(--bs-success);
    font-size: 0.9em;
    font-weight: 700;
    animation: date-saved-flash-b-fk89bjirmb 2s ease-out forwards;
}

@keyframes date-saved-flash-b-fk89bjirmb {
    0% { opacity: 0; transform: translateY(-50%) scale(0.6); }
    15% { opacity: 1; transform: translateY(-50%) scale(1.15); }
    30% { transform: translateY(-50%) scale(1); }
    75% { opacity: 1; }
    100% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
    .date-saved[b-fk89bjirmb] {
        animation: none;
        opacity: 1;
    }
}

.date-text.is-invalid[b-fk89bjirmb] {
    border-color: var(--bs-danger);
    background-image: none; /* Bootstrap's validation glyph would collide with the calendar icon. */
    padding-right: 1.15rem;
}

.date-text-input.is-invalid-wrap .date-icon[b-fk89bjirmb] {
    color: var(--bs-danger);
}
/* /Components/Shared/UI/Dropdown.razor.rz.scp.css */
.dropdown[b-2b8014zx6f] {
    position: relative;
    display: inline-block;
}

.dropdown-menu[b-2b8014zx6f] {
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 200px;
    padding: 0.5rem 0;
    margin-top: 2px;
    background: var(--color-bg-elevated);
    border: 1px solid var(--color-border);
    border-radius: 0.375rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
    z-index: 1060;
}

.dropdown-menu-end[b-2b8014zx6f] {
    left: auto;
    right: 0;
}

.dropdown-backdrop[b-2b8014zx6f] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1055;
}

[b-2b8014zx6f] .dropdown-item {
    display: flex;
    align-items: center;
    padding: 0.5rem 1rem;
    color: var(--color-text-primary);
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.15s;
}

[b-2b8014zx6f] .dropdown-item:hover {
    background-color: var(--color-bg-hover);
}

[b-2b8014zx6f] .dropdown-item.active {
    background-color: var(--color-bg-selected);
    color: var(--color-primary);
}

[b-2b8014zx6f] .dropdown-divider {
    height: 0;
    margin: 0.5rem 0;
    overflow: hidden;
    border-top: 1px solid var(--color-border);
}

[b-2b8014zx6f] .dropdown-header {
    display: block;
    padding: 0.5rem 1rem;
    font-size: 0.75rem;
    color: var(--color-text-muted);
    white-space: nowrap;
    font-weight: 600;
    text-transform: uppercase;
}
/* /Components/Shared/UI/FeetInchesInput.razor.rz.scp.css */
/* The spinners sit right where the value goes and are too small to aim at anyway — the boxes are
   narrow, so the arrows crowd out the digits. */
.feet-inches-input input[type="number"][b-dutpkowf9f] {
    -moz-appearance: textfield;
    appearance: textfield;
}

.feet-inches-input input[type="number"][b-dutpkowf9f]::-webkit-outer-spin-button,
.feet-inches-input input[type="number"][b-dutpkowf9f]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

/* nowrap is load-bearing: an input group wraps by default, so a fixed-width box and its unit drop
   onto separate lines the moment they outgrow the field around them. */
.feet-inches-input[b-dutpkowf9f] {
    flex-wrap: nowrap;
}

.feet-inches-input .input-group[b-dutpkowf9f] {
    width: auto;
    flex-wrap: nowrap;
}

/* Room for two digits plus the unit. */
.feet-inches-input .input-group > .form-control[b-dutpkowf9f] {
    width: 3.5rem;
    flex: 0 0 auto;
}

/* The unit sits tight to its box so the pair reads as one field. */
.feet-inches-input .input-group-text[b-dutpkowf9f] {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
}

.feet-inches-input .form-select[b-dutpkowf9f] {
    flex: 0 0 auto;
}
/* /Components/Shared/UI/FlyoutSelect.razor.rz.scp.css */
.flyout-select[b-d2u9b1zijx] {
    position: relative;
    display: inline-block;
    width: 100%;
}

.flyout-select-trigger[b-d2u9b1zijx] {
    width: 100%;
    background: var(--color-bg-surface);
    cursor: pointer;
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
}

.flyout-select-menu[b-d2u9b1zijx] {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 1050;
    min-width: 200px;
    background: var(--color-bg-elevated);
    border: 1px solid var(--color-border);
    border-radius: 6px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    padding: 4px 0;
    margin-top: 2px;
}

.flyout-select-group[b-d2u9b1zijx] {
    position: relative;
}

.flyout-select-item[b-d2u9b1zijx] {
    display: flex;
    align-items: center;
    width: 100%;
    padding: 8px 12px;
    border: none;
    background: none;
    text-align: left;
    cursor: pointer;
    font-size: 0.875rem;
    color: var(--color-text-primary);
    white-space: nowrap;
}

    .flyout-select-item:hover[b-d2u9b1zijx],
    .flyout-select-item.active[b-d2u9b1zijx] {
        background-color: var(--color-bg-hover);
    }

    .flyout-select-item.selected[b-d2u9b1zijx] {
        background-color: var(--color-bg-selected);
        font-weight: 500;
    }

.flyout-clear-item[b-d2u9b1zijx] {
    color: var(--color-text-muted);
    font-style: italic;
}

    .flyout-clear-item:hover[b-d2u9b1zijx] {
        color: var(--color-error);
        background-color: var(--color-error-bg);
    }

.flyout-group-trigger[b-d2u9b1zijx] {
    font-weight: 600;
    color: var(--color-text-secondary);
}

.flyout-divider[b-d2u9b1zijx] {
    height: 1px;
    margin: 4px 0;
    background-color: var(--color-border);
}

.flyout-submenu[b-d2u9b1zijx] {
    position: absolute;
    left: 100%;
    top: 0;
    min-width: 200px;
    background: var(--color-bg-elevated);
    border: 1px solid var(--color-border);
    border-radius: 6px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    padding: 4px 0;
    margin-left: 2px;
}

.flyout-sub-submenu[b-d2u9b1zijx] {
    position: absolute;
    left: 100%;
    top: 0;
    min-width: 180px;
    background: var(--color-bg-elevated);
    border: 1px solid var(--color-border);
    border-radius: 6px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    padding: 4px 0;
    margin-left: 2px;
}

.flyout-backdrop[b-d2u9b1zijx] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1049;
}
/* /Components/Shared/UI/LandingNavList.razor.rz.scp.css */
.landing-nav-table[b-70z8m7ld06] {
    margin-bottom: 0;
}

.landing-nav-group-row td.landing-nav-group-heading[b-70z8m7ld06] {
    background-color: transparent;
    border-bottom: 2px solid var(--bs-border-color, #dee2e6);
    color: var(--bs-secondary-color, #6c757d);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    padding: 1rem 0.75rem 0.5rem;
    text-transform: uppercase;
}

.landing-nav-row[b-70z8m7ld06] {
    cursor: pointer;
}

.landing-nav-row td[b-70z8m7ld06] {
    padding-bottom: 0.85rem;
    padding-top: 0.85rem;
    vertical-align: middle;
}

.landing-nav-title-cell[b-70z8m7ld06] {
    width: 280px;
    min-width: 280px;
}

.landing-nav-title[b-70z8m7ld06] {
    font-weight: 500;
}

.landing-nav-description[b-70z8m7ld06] {
    font-size: 0.95rem;
}

.landing-nav-action[b-70z8m7ld06] {
    width: 100px;
    text-align: right;
}

.landing-nav-card[b-70z8m7ld06] {
    transition: box-shadow 0.15s ease-in-out, transform 0.15s ease-in-out;
}

.landing-nav-card:hover[b-70z8m7ld06] {
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.12);
    transform: translateY(-2px);
}

.landing-nav-list-loading[b-70z8m7ld06] {
    height: 200px;
}
/* /Components/Shared/UI/Modal.razor.rz.scp.css */
.modal-backdrop[b-6mjldkera3] {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 1080;
}

.modal[b-6mjldkera3] {
    z-index: 1090;
}

.modal-content[b-6mjldkera3] {
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

.modal-header[b-6mjldkera3] {
    border-bottom: 1px solid var(--color-border);
    background-color: var(--color-bg-header);
}

.modal-title[b-6mjldkera3] {
    color: var(--color-accent);
    font-weight: 600;
}

.modal-footer[b-6mjldkera3] {
    border-top: 1px solid var(--color-border);
    background-color: var(--color-bg-header);
}

/* Draggable header */
.modal-header.modal-draggable[b-6mjldkera3] {
    cursor: move;
    user-select: none;
}

/* During active drag/resize, disable transitions */
[b-6mjldkera3] .modal-dialog.interacting {
    transition: none !important;
}

/* Resize handles — invisible but interactive */
[b-6mjldkera3] .resize-handle {
    position: absolute;
    z-index: 1;
    background: transparent;
}

[b-6mjldkera3] .resize-handle-n,
[b-6mjldkera3] .resize-handle-s {
    left: 12px;
    right: 12px;
    height: 8px;
    cursor: ns-resize;
}

[b-6mjldkera3] .resize-handle-n { top: -4px; }
[b-6mjldkera3] .resize-handle-s { bottom: -4px; }

[b-6mjldkera3] .resize-handle-e,
[b-6mjldkera3] .resize-handle-w {
    top: 12px;
    bottom: 12px;
    width: 8px;
    cursor: ew-resize;
}

[b-6mjldkera3] .resize-handle-e { right: -4px; }
[b-6mjldkera3] .resize-handle-w { left: -4px; }

[b-6mjldkera3] .resize-handle-nw,
[b-6mjldkera3] .resize-handle-ne,
[b-6mjldkera3] .resize-handle-sw,
[b-6mjldkera3] .resize-handle-se {
    width: 12px;
    height: 12px;
}

[b-6mjldkera3] .resize-handle-nw { top: -4px; left: -4px; cursor: nwse-resize; }
[b-6mjldkera3] .resize-handle-ne { top: -4px; right: -4px; cursor: nesw-resize; }
[b-6mjldkera3] .resize-handle-sw { bottom: -4px; left: -4px; cursor: nesw-resize; }
[b-6mjldkera3] .resize-handle-se { bottom: -4px; right: -4px; cursor: nwse-resize; }

/* FillBody: let the body's single child fill the available vertical space after a
   taller resize instead of leaving a gap below fixed/intrinsic-height content.
   ::deep is required because the child is supplied by the consumer and does not
   carry this component's scoped-CSS attribute (mirrors the ::deep .resize-handle rules
   above, which style JS-created descendants). min-height:0 lets internal scroll
   containers shrink and own their own scrollbar instead of overflowing. */
.modal-body-fill[b-6mjldkera3] {
    display: flex;
    flex-direction: column;
    min-height: 0;
}

[b-6mjldkera3] .modal-body-fill > * {
    flex: 1 1 auto;
    min-height: 0;
}

/* Takeover size: ~95vw × 95vh with a small inset so the backdrop and any parent
   modal underneath are still visible at the edges. Used for screens that need
   maximum real estate without going fully chromeless. */
[b-6mjldkera3] .modal-dialog.modal-takeover {
    max-width: 95vw;
    width: 95vw;
    max-height: 95vh;
    height: 95vh;
    margin: 2.5vh auto;
}

[b-6mjldkera3] .modal-dialog.modal-takeover .modal-content {
    max-height: 95vh;
    height: 95vh;
}
/* /Components/Shared/UI/SearchableSelect.razor.rz.scp.css */
.searchable-select-container[b-v8t6g0paya] {
    position: relative;
}

.searchable-select-container.disabled[b-v8t6g0paya] {
    opacity: 0.6;
    pointer-events: none;
}

.searchable-select-input[b-v8t6g0paya] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 38px;
    cursor: pointer;
    padding: 0.375rem 0.75rem;
}

.searchable-select-input.focus[b-v8t6g0paya] {
    border-color: var(--color-border-focus);
    box-shadow: 0 0 0 0.25rem var(--color-focus-ring);
}

.selected-value[b-v8t6g0paya] {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.searchable-select-actions[b-v8t6g0paya] {
    display: flex;
    align-items: center;
    margin-left: 0.5rem;
}

/* Popover wrapper — promoted to the browser top layer when shown via showPopover().
   Neutralize user-agent popover defaults (centered position, borders, padding) so
   the inline top/left/width set by the JS interop owns positioning. */
.searchable-select-popover[b-v8t6g0paya] {
    position: fixed;
    margin: 0;
    padding: 0;
    border: none;
    background: transparent;
    overflow: visible;
    max-width: none;
    max-height: none;
}

.searchable-select-popover:popover-open[b-v8t6g0paya] {
    display: block;
}

.searchable-select-dropdown[b-v8t6g0paya] {
    background: var(--color-bg-elevated);
    border: 1px solid var(--color-border);
    border-radius: 0.375rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
    max-height: 300px;
    display: flex;
    flex-direction: column;
}

.searchable-select-options[b-v8t6g0paya] {
    overflow-y: auto;
    max-height: 250px;
}

.searchable-select-option[b-v8t6g0paya] {
    display: flex;
    align-items: center;
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    transition: background-color 0.15s;
}

.searchable-select-option:hover[b-v8t6g0paya] {
    background-color: var(--color-bg-hover);
}

.searchable-select-option.selected[b-v8t6g0paya] {
    background-color: var(--color-bg-selected);
}

.searchable-select-option.disabled[b-v8t6g0paya] {
    cursor: not-allowed;
    opacity: 0.5;
}

.searchable-select-option.disabled:hover[b-v8t6g0paya] {
    background-color: transparent;
}

.searchable-select-option-content[b-v8t6g0paya] {
    flex: 1;
    min-width: 0;
}

/* Commit row for a typed value that is not in the list — reads as an action, not an option. */
.searchable-select-custom-option[b-v8t6g0paya] {
    font-style: italic;
    color: var(--color-text-muted);
    border-top: 1px solid var(--color-border);
}

.searchable-select-secondary[b-v8t6g0paya] {
    font-size: 0.8em;
    line-height: 1.2;
}
