/* /Components/Layout/AppLayout.razor.rz.scp.css */
/* Matches the walkthrough's .app shell: 1340px, 34px above the page head, 24px at the sides. The
   bottom is ours: with none, whatever a page ends on sits flush against the edge of the document —
   measured at 0px below the claim actions, and the same on every other page. */
.app-main[b-yrv49weqj6] {
    flex: 1;
    padding: 34px 24px 2rem;
    max-width: 1340px;
    margin: 0 auto;
    width: 100%;
}

#blazor-error-ui[b-yrv49weqj6] {
    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-yrv49weqj6] {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-y23k2heb7g] {
    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-y23k2heb7g] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-woqg2s57k9],
.components-reconnect-repeated-attempt-visible[b-woqg2s57k9],
.components-reconnect-failed-visible[b-woqg2s57k9],
.components-pause-visible[b-woqg2s57k9],
.components-resume-failed-visible[b-woqg2s57k9],
.components-rejoining-animation[b-woqg2s57k9] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-woqg2s57k9],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-woqg2s57k9],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-woqg2s57k9],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-woqg2s57k9],
#components-reconnect-modal.components-reconnect-retrying[b-woqg2s57k9],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-woqg2s57k9],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-woqg2s57k9],
#components-reconnect-modal.components-reconnect-failed[b-woqg2s57k9],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-woqg2s57k9] {
    display: block;
}

#components-reconnect-modal[b-woqg2s57k9] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-woqg2s57k9 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-woqg2s57k9 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-woqg2s57k9 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-woqg2s57k9]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-woqg2s57k9 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-woqg2s57k9 {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-woqg2s57k9 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-woqg2s57k9 {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-woqg2s57k9] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-woqg2s57k9] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-woqg2s57k9] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-woqg2s57k9] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-woqg2s57k9] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-woqg2s57k9] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-woqg2s57k9] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-woqg2s57k9 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-woqg2s57k9] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-woqg2s57k9 {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/Dashboard.razor.rz.scp.css */
/* Universal dashboard page shell. The two tables (My Projects / My Claims) are shared components with
   their own scoped CSS; this file only styles the page-level chrome (headers, states). */

/* The AppLayout <main class="app-main"> already provides the 2rem padding + centred max-width. */
.dashboard-container[b-zfzcmnv9fn] {
    width: 100%;
}

/* Loading / error states */
.error-state h2[b-zfzcmnv9fn] {
    color: #dc2626;
    margin-bottom: 0.5rem;
}

.error-state p[b-zfzcmnv9fn] {
    color: #6b7280;
    margin-bottom: 1.5rem;
}

/* Calm empty state for a signed-in user who holds no roles (e.g. removed from their last project).
   Deliberately neutral — NOT the red error treatment. */
.no-access-state[b-zfzcmnv9fn] {
    text-align: center;
    padding: 4rem 2rem;
}

.no-access-icon[b-zfzcmnv9fn] {
    font-size: 3rem;
    margin-bottom: 0.5rem;
}

.no-access-state h2[b-zfzcmnv9fn] {
    color: #1e293b;
    margin-bottom: 0.5rem;
}

.no-access-state p[b-zfzcmnv9fn] {
    color: #6b7280;
    margin-bottom: 1.5rem;
    line-height: 1.6;
    max-width: 500px;
    margin-left: auto;
    margin-right: auto;
}

@media (max-width: 768px) {
    .page-header-content[b-zfzcmnv9fn] {
        flex-direction: column;
        gap: 1rem;
    }
}
/* /Components/Pages/Documents.razor.rz.scp.css */
/* Cross-project Documents page (019). Mirrors the mockup: header, toolbar (upload + search), and a
   documents table. Scoped CSS — table rules repeated here (Blazor scoped CSS does not cross components). */

.documents-container[b-7mqm993xyg] {
    width: 100%;
}

/* Transient per-row download failure (does not tear down the list). */
.download-error[b-7mqm993xyg] {
    background: #fef2f2;
    border: 1px solid #fecaca;
    color: #b91c1c;
    padding: 0.75rem 1rem;
    border-radius: 8px;
    margin-bottom: 1rem;
    font-size: 0.9375rem;
}

/* Toolbar: search box (right). The upload button that sat on the left was removed — see Documents.razor. */
.documents-toolbar[b-7mqm993xyg] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 1rem;
    margin-bottom: 1.5rem;
    flex-wrap: wrap;
}

.search-box[b-7mqm993xyg] {
    position: relative;
    display: flex;
    align-items: center;
    min-width: 260px;
}

.search-icon[b-7mqm993xyg] {
    position: absolute;
    left: 0.75rem;
    font-size: 0.875rem;
    opacity: 0.5;
    pointer-events: none;
}

.search-input[b-7mqm993xyg] {
    width: 100%;
    padding: 0.6rem 0.75rem 0.6rem 2.25rem;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    font-size: 0.9375rem;
    box-sizing: border-box;
}

.search-input:focus[b-7mqm993xyg] {
    outline: none;
    border-color: #6b8afd;
    box-shadow: 0 0 0 3px rgba(107, 138, 253, 0.15);
}

/* Table */

.cell-name[b-7mqm993xyg] {
    font-weight: 500;
    color: #2563eb;
}

.doc-icon[b-7mqm993xyg] {
    margin-right: 0.4rem;
    opacity: 0.7;
}

.action-col[b-7mqm993xyg] {
    text-align: right;
    white-space: nowrap;
}

/* Enabled download reads as a link; disabled is greyed and non-interactive. */
.download-link[b-7mqm993xyg] {
    background: none;
    border: none;
    padding: 0;
    color: #2563eb;
    font-weight: 600;
    font-size: 0.9375rem;
    cursor: pointer;
}

.download-link:hover[b-7mqm993xyg] {
    text-decoration: underline;
}

.download-disabled[b-7mqm993xyg] {
    color: #cbd5e1;
    font-weight: 600;
    cursor: not-allowed;
}

/* Empty states */

.empty-search[b-7mqm993xyg] {
    box-shadow: none;
    padding: 2rem;
}

.empty-state h2[b-7mqm993xyg] {
    font-size: 1.25rem;
    font-weight: 600;
    color: #1e293b;
    margin: 0 0 0.5rem 0;
}

.empty-state p[b-7mqm993xyg] {
    color: #64748b;
    margin: 0;
}

@media (max-width: 768px) {
    .documents-table th[b-7mqm993xyg],
    .documents-table td[b-7mqm993xyg] {
        padding: 0.75rem 0.875rem;
    }
}
/* /Components/Pages/JoinOrganisation.razor.rz.scp.css */
/* Invitation accept / create-account page. Self-contained styling (.form-input/.btn are global in
   app.css, but .card / .page-title / .form-actions are scoped to other components and don't reach here). */

.join-container[b-rdjlwf0sr2] {
    max-width: 460px;
    margin: 4rem auto;
    padding: 0 1rem;
}

/* Card frame around the invitation */
.card[b-rdjlwf0sr2] {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    padding: 2rem 2rem 1.75rem;
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06);
}

.invitation-summary[b-rdjlwf0sr2] {
    color: #64748b;
    line-height: 1.55;
    margin: 0 0 1.5rem;
    font-size: 0.9375rem;
}

.invitation-summary strong[b-rdjlwf0sr2] {
    color: #334155;
    font-weight: 600;
}

/* Form */
.setup-form[b-rdjlwf0sr2] {
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
}

.form-group[b-rdjlwf0sr2] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    margin: 0;
}

.form-group label[b-rdjlwf0sr2] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: #475569;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

/* Read-only invited email: clearly non-editable */
.form-input:disabled[b-rdjlwf0sr2] {
    background: #f1f5f9;
    color: #64748b;
    cursor: not-allowed;
}

.error-message[b-rdjlwf0sr2] {
    color: #b91c1c;
    background: #fee2e2;
    border-radius: 6px;
    padding: 0.6rem 0.8rem;
    margin: 0;
    font-size: 0.875rem;
}

/* Validation text under a field */
.setup-form[b-rdjlwf0sr2]  .validation-message {
    color: #b91c1c;
    font-size: 0.8125rem;
}

/* Button row: right-aligned, primary action last */
.form-actions[b-rdjlwf0sr2] {
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    margin-top: 0.5rem;
}

.form-actions .btn[b-rdjlwf0sr2] {
    min-width: 120px;
}
/* /Components/Pages/JoinProject.razor.rz.scp.css */
/* Invitation accept / create-account page. Self-contained styling (.form-input/.btn are global in
   app.css, but .card / .page-title / .form-actions are scoped to other components and don't reach here). */

.join-container[b-wxiddr9uvb] {
    max-width: 460px;
    margin: 4rem auto;
    padding: 0 1rem;
}

/* Card frame around the invitation */
.card[b-wxiddr9uvb] {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    padding: 2rem 2rem 1.75rem;
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06);
}

.invitation-summary[b-wxiddr9uvb] {
    color: #64748b;
    line-height: 1.55;
    margin: 0 0 1.5rem;
    font-size: 0.9375rem;
}

.invitation-summary strong[b-wxiddr9uvb] {
    color: #334155;
    font-weight: 600;
}

/* Form */
.setup-form[b-wxiddr9uvb] {
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
}

.form-group[b-wxiddr9uvb] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    margin: 0;
}

.form-group label[b-wxiddr9uvb] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: #475569;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

/* Read-only invited email: clearly non-editable */
.form-input:disabled[b-wxiddr9uvb] {
    background: #f1f5f9;
    color: #64748b;
    cursor: not-allowed;
}

.error-message[b-wxiddr9uvb] {
    color: #b91c1c;
    background: #fee2e2;
    border-radius: 6px;
    padding: 0.6rem 0.8rem;
    margin: 0;
    font-size: 0.875rem;
}

/* Validation text under a field */
.setup-form[b-wxiddr9uvb]  .validation-message {
    color: #b91c1c;
    font-size: 0.8125rem;
}

/* Button row: right-aligned, primary action last */
.form-actions[b-wxiddr9uvb] {
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    margin-top: 0.5rem;
}

.form-actions .btn[b-wxiddr9uvb] {
    min-width: 120px;
}
/* /Components/Pages/MyClaims.razor.rz.scp.css */
/* Page shell for /claims. The table itself is the shared MyClaimsTable component (own scoped CSS);
   this only styles the header + loading/error states. AppLayout provides the outer padding. */

.list-page-container[b-kbld1ijelf] {
    width: 100%;
}

.error-state h2[b-kbld1ijelf] {
    color: #dc2626;
    margin-bottom: 0.5rem;
}

.error-state p[b-kbld1ijelf] {
    color: #6b7280;
}

@media (max-width: 768px) {
    .page-header-content[b-kbld1ijelf] {
        flex-direction: column;
        gap: 1rem;
    }
}
/* /Components/Pages/MyProfile.razor.rz.scp.css */
/* Profile-only Settings page (/settings). Styles mirror the org Settings page's My Profile card;
   scoped here because that page's .razor.css does not cross into this component. .form-input is global
   (app.css) and .card comes from the Card component, so those are not repeated. */

.settings-container[b-vjxoxgdglv] {
    width: 100%;
}

.settings-header[b-vjxoxgdglv] {
    margin-bottom: 2rem;
}

.settings-content[b-vjxoxgdglv] {
    display: grid;
    gap: 1.5rem;
    max-width: 720px;
}

/* Form layout */
.form-group[b-vjxoxgdglv] {
    margin-bottom: 1rem;
}

.form-group:last-child[b-vjxoxgdglv] {
    margin-bottom: 0;
}

.form-row[b-vjxoxgdglv] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.form-label[b-vjxoxgdglv] {
    display: block;
    font-size: 0.6875rem;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.375rem;
}

.form-actions[b-vjxoxgdglv] {
    margin-top: 1.5rem;
    display: flex;
    justify-content: flex-end;
}

/* Save feedback */

.status-error[b-vjxoxgdglv] {
    color: #b91c1c;
    background: #fee2e2;
}

.status-success[b-vjxoxgdglv] {
    color: #166534;
    background: #dcfce7;
}

/* User profile header */
.user-profile-header[b-vjxoxgdglv] {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.5rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid #e2e8f0;
}

.user-avatar-large[b-vjxoxgdglv] {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background-color: #5b9bd5;
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: 1.25rem;
}

.user-profile-info[b-vjxoxgdglv] {
    flex: 1;
}

.user-profile-name[b-vjxoxgdglv] {
    font-size: 1.125rem;
    font-weight: 600;
    color: #1e293b;
}

@media (max-width: 600px) {
    .form-row[b-vjxoxgdglv] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/MyProjects.razor.rz.scp.css */
/* Page shell for /projects. The table itself is the shared MyProjectsTable component (own scoped CSS);
   this only styles the header + loading/error states. AppLayout provides the outer padding. */

.list-page-container[b-33mldb8k5k] {
    width: 100%;
}

.error-state h2[b-33mldb8k5k] {
    color: #dc2626;
    margin-bottom: 0.5rem;
}

.error-state p[b-33mldb8k5k] {
    color: #6b7280;
}

@media (max-width: 768px) {
    .page-header-content[b-33mldb8k5k] {
        flex-direction: column;
        gap: 1rem;
    }
}
/* /Components/Pages/Org/Claims/Claims.razor.rz.scp.css */
.claims-container[b-qrysegb2l8] {
    width: 100%;
}

/* Page header */

/* Claims table */

.cell-claim-no[b-qrysegb2l8] {
    white-space: nowrap;
    font-weight: 600;
    color: #1e293b;
}

/* Whole-row click affordance: the row is the single target, so hover lights up the
   entire row (no per-cell link colouring). */

/* Status label colours in the table (Draft grey, Submitted blue, Revision amber, Certified green) */
.claims-table .status-text[b-qrysegb2l8] {
    font-weight: 600;
    white-space: nowrap;
}

.status-text.status-draft[b-qrysegb2l8] { color: #64748b; }
.status-text.status-submitted[b-qrysegb2l8] { color: #2563eb; }
.status-text.status-revision[b-qrysegb2l8] { color: #d97706; }
.status-text.status-certified[b-qrysegb2l8] { color: #16a34a; }

/* Empty + loading/error states */

.empty-state .empty-icon[b-qrysegb2l8] {
    font-size: 2.5rem;
    margin-bottom: 0.5rem;
}

.empty-state h2[b-qrysegb2l8] {
    font-size: 1.25rem;
    color: #334155;
    margin: 0 0 0.25rem;
}

.loading-state[b-qrysegb2l8],
/* /Components/Pages/Org/Claims/ClaimView.razor.rz.scp.css */
.claim-view-container[b-bexpetca0w] {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

/* Breadcrumb */
.breadcrumb[b-bexpetca0w] {
    font-size: 0.875rem;
    color: #94a3b8;
}

.breadcrumb a[b-bexpetca0w] {
    color: #64748b;
    text-decoration: none;
}

.breadcrumb a:hover[b-bexpetca0w] { text-decoration: underline; }
.breadcrumb .sep[b-bexpetca0w] { margin: 0 0.4rem; color: #cbd5e1; }
.breadcrumb .current[b-bexpetca0w] { color: #334155; font-weight: 600; }

/* Header */
.claim-header[b-bexpetca0w] { display: flex; flex-direction: column; gap: 0.25rem; }

.claim-project-title[b-bexpetca0w] {
    font-size: 2rem;
    font-weight: 700;
    color: #79B7FE;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    margin: 0;
}

.claim-subtitle[b-bexpetca0w] { color: #64748b; font-size: 1rem; margin: 0; }
.claim-subtitle.subtitle-warning[b-bexpetca0w] { color: #b45309; font-weight: 600; }

/* Project + Claim detail card */
.claim-detail-card[b-bexpetca0w] {
    background: #ffffff;
    border: 1px solid var(--line);
    border-radius: 9px;
    padding: 24px;
    box-shadow: none;
}

.detail-section-title[b-bexpetca0w] {
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: #334155;
    margin-bottom: 1rem;
}

.detail-section-divider[b-bexpetca0w] {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid #e2e8f0;
}

.detail-grid[b-bexpetca0w] {
    display: grid;
    gap: 1rem 1.5rem;
}

.detail-grid-3[b-bexpetca0w] { grid-template-columns: repeat(3, 1fr); }
.detail-grid-5[b-bexpetca0w] { grid-template-columns: repeat(5, 1fr); }
.detail-grid-row2[b-bexpetca0w] { margin-top: 1rem; }

.detail-k[b-bexpetca0w] {
    font-size: 0.75rem;
    color: #94a3b8;
    margin-bottom: 0.2rem;
}

.detail-v[b-bexpetca0w] {
    font-size: 0.95rem;
    font-weight: 600;
    color: #1e293b;
    font-variant-numeric: tabular-nums;
}

.detail-v.strong[b-bexpetca0w] { font-size: 1.05rem; }

.detail-action[b-bexpetca0w] {
    display: flex;
    align-items: flex-end;
    justify-content: flex-end;
}

/* Section headings (Claim Overview, Variations Schedule) */
.section-heading[b-bexpetca0w] {
    font-size: 1.375rem;
    font-weight: 700;
    color: #1a1a1a;
    margin: 0.5rem 0 0;
}

/* Overview / variations tables */

/* 020: offsite column — checkbox centred; disabled state reads as read-only. */
.overview-table .col-offsite[b-bexpetca0w] { width: 5rem; text-align: center; }
.overview-table th.col-offsite[b-bexpetca0w] { text-align: center; }
.offsite-check[b-bexpetca0w] { width: 1.1rem; height: 1.1rem; cursor: pointer; accent-color: #6b8afd; }
/* Read-only offsite state for everyone but the Contractor on a Draft claim (the checkbox isn't
   rendered for them). Tick = offsite; em-dash = not, muted so it reads as "no" not "missing". */
.offsite-flag[b-bexpetca0w] { font-size: 0.9375rem; line-height: 1; color: #475569; }
.offsite-docs-link[b-bexpetca0w] {
    display: block;
    margin-top: 0.25rem;
    background: none;
    border: none;
    padding: 0;
    color: #2563eb;
    font-size: 0.8125rem;
    font-weight: 600;
    cursor: pointer;
}
.offsite-docs-link:hover[b-bexpetca0w] { text-decoration: underline; }

.overview-table .col-num[b-bexpetca0w] { width: 4rem; color: #64748b; font-weight: 600; }
.overview-table .col-pct[b-bexpetca0w] { width: 7.5rem; text-align: right; }
.overview-table .col-money[b-bexpetca0w] { width: 9rem; text-align: right; font-variant-numeric: tabular-nums; }
.overview-table th.col-pct[b-bexpetca0w], .overview-table th.col-money[b-bexpetca0w] { text-align: right; }

.pct-input[b-bexpetca0w] {
    width: 5.5rem;
    padding: 0.3rem 0.45rem;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font-size: 0.9rem;
    text-align: right;
}

/* Approved % colouring (green when fully approved, amber when reviewer reduced it) */
.pct-approved[b-bexpetca0w] { color: #16a34a; font-weight: 600; }
.pct-reduced[b-bexpetca0w] { color: #d97706; font-weight: 600; }

/* Claim status pill colours */
.status-text[b-bexpetca0w] { font-weight: 600; }
.claim-status-draft[b-bexpetca0w] { color: #d97706; }
.claim-status-submitted[b-bexpetca0w] { color: #2563eb; }
.claim-status-approved[b-bexpetca0w] { color: #16a34a; }

/* 021: reviewer's Reject link under a Proposed variation's Approved % input. */
.variation-reject-link[b-bexpetca0w] {
    display: block;
    margin-top: 0.35rem;
    margin-left: auto;
    background: none;
    border: none;
    padding: 0;
    color: #dc2626;
    font-size: 0.8125rem;
    font-weight: 600;
    cursor: pointer;
}
.variation-reject-link:hover:not(:disabled)[b-bexpetca0w] { text-decoration: underline; }
.variation-reject-link:disabled[b-bexpetca0w] { color: #cbd5e1; cursor: default; }
.claim-status-certified[b-bexpetca0w] { color: #16a34a; }
.claim-status-revision[b-bexpetca0w] { color: #9333ea; }

.add-variation-link[b-bexpetca0w] {
    margin-top: 0.25rem;
}

/* Buttons used by the request-changes flow */
.btn-sm[b-bexpetca0w] { padding: 0.35rem 0.7rem; font-size: 0.8125rem; }
.btn-danger[b-bexpetca0w] { background-color: #dc2626; color: #fff; }
.btn-danger:hover:not(:disabled)[b-bexpetca0w] { background-color: #b91c1c; }

.detail-action[b-bexpetca0w] { gap: 0.5rem; }

/* Rejection feedback shown to the contractor */
.reject-feedback[b-bexpetca0w] {
    border: 1px solid #f5c2c0;
    border-left: 4px solid #dc2626;
    background: #fef2f2;
    border-radius: 10px;
    padding: 1rem 1.25rem;
}

.reject-feedback h3[b-bexpetca0w] {
    margin: 0 0 0.4rem;
    font-size: 1.0625rem;
    font-weight: 700;
    color: #b91c1c;
}

.reject-intro[b-bexpetca0w] {
    margin: 0 0 0.75rem;
    color: #7f1d1d;
    font-size: 0.9375rem;
}

.reject-block[b-bexpetca0w] { margin-bottom: 0.5rem; }

.reject-label[b-bexpetca0w] {
    display: block;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    color: #991b1b;
    margin-bottom: 0.15rem;
}

.reject-feedback ul[b-bexpetca0w] { margin: 0; padding-left: 1.2rem; color: #7f1d1d; }
.reject-deadline[b-bexpetca0w] { margin: 0.5rem 0 0; color: #7f1d1d; font-size: 0.9rem; }

/* Request-changes form (reviewer) */
.reject-form[b-bexpetca0w] {
    border: 1px solid #e9ecef;
    border-radius: 10px;
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.reject-form .section-heading[b-bexpetca0w] { margin: 0; }
.reject-hint[b-bexpetca0w] { color: #64748b; font-size: 0.9rem; margin: 0 0 0.5rem; }

.reject-field-label[b-bexpetca0w] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: #334155;
    margin-top: 0.5rem;
}

.reject-field-label .req[b-bexpetca0w] { color: #dc2626; }

.reject-row[b-bexpetca0w] { display: flex; align-items: center; gap: 0.5rem; }
.reject-row .form-input[b-bexpetca0w] { flex: 1; }

.reject-remove[b-bexpetca0w] {
    background: none;
    border: none;
    color: #94a3b8;
    font-size: 1.25rem;
    cursor: pointer;
    line-height: 1;
}
.reject-remove:hover[b-bexpetca0w] { color: #dc2626; }

.reject-add[b-bexpetca0w] {
    align-self: flex-start;
    background: none;
    border: none;
    color: #2563eb;
    font-size: 0.875rem;
    cursor: pointer;
    padding: 0.15rem 0;
}

.reject-deadline-input[b-bexpetca0w] { max-width: 220px; }

.reject-actions[b-bexpetca0w] {
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    margin-top: 0.75rem;
}

.form-input[b-bexpetca0w] {
    padding: 0.5rem 0.7rem;
    border: 1px solid #d1d9e0;
    border-radius: 8px;
    font-size: 0.9rem;
    color: #1e293b;
    box-sizing: border-box;
}

/* Footer */
.claim-footer[b-bexpetca0w] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 0.5rem;
}

.claim-footer .btn[b-bexpetca0w] { display: flex; }

.status-error[b-bexpetca0w] { background: #fce8e6; color: #c5221f; }

.loading-state[b-bexpetca0w],

@media (max-width: 880px)[b-bexpetca0w] {
    .detail-grid-3 { grid-template-columns: repeat(2, 1fr); }
    .detail-grid-5[b-bexpetca0w] { grid-template-columns: repeat(2, 1fr); }
}
/* /Components/Pages/Org/ContactSales.razor.rz.scp.css */
.contact-page[b-phgkzu6jjw] {
    padding: 3rem 1rem;
    display: flex;
    justify-content: center;
}

.contact-card[b-phgkzu6jjw] {
    width: 100%;
    max-width: 560px;
    background: white;
    border-radius: 16px;
    padding: 2.5rem;
    text-align: center;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}

.contact-title[b-phgkzu6jjw] {
    color: #1e293b;
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0 0 1rem 0;
}

.contact-lede[b-phgkzu6jjw] {
    color: #475569;
    margin: 0 0 2rem 0;
    line-height: 1.6;
}

.contact-actions[b-phgkzu6jjw] {
    margin-bottom: 1rem;
}

.contact-meta[b-phgkzu6jjw] {
    color: #64748b;
    font-size: 0.875rem;
    margin: 0 0 2rem 0;
}
/* /Components/Pages/Org/Contracts/ContractSetup.razor.rz.scp.css */
.contract-setup-container[b-r34c02wp9l] {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 1.75rem;
}

.back-link[b-r34c02wp9l] {
    color: #64748b;
    text-decoration: none;
    font-size: 0.875rem;
    align-self: flex-start;
}

.back-link:hover[b-r34c02wp9l] {
    color: #1e293b;
}

.page-header-top[b-r34c02wp9l] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.project-status[b-r34c02wp9l] {
    display: inline-flex;
    align-items: center;
    padding: 0.25rem 0.625rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.status-draft[b-r34c02wp9l] { background-color: #f1f5f9; color: #64748b; }
.status-active[b-r34c02wp9l] { background-color: #dcfce7; color: #166534; }
.status-completed[b-r34c02wp9l] { background-color: #e0e7ff; color: #3730a3; }

.form-grid[b-r34c02wp9l] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.field[b-r34c02wp9l] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.detail-label[b-r34c02wp9l] {
    font-size: 0.6875rem;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.text-input[b-r34c02wp9l] {
    padding: 0.5rem 0.625rem;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font-size: 0.9375rem;
    color: #1e293b;
    max-width: 420px;
}

.text-input:disabled[b-r34c02wp9l] {
    background: #f8fafc;
    color: #94a3b8;
}

.advisory[b-r34c02wp9l] {
    color: #475569;
    font-size: 0.875rem;
    line-height: 1.5;
    background: #f8fafc;
    border-left: 3px solid #5b9bd5;
    padding: 0.625rem 0.75rem;
    border-radius: 0 6px 6px 0;
    margin: 0;
}

.detail-text[b-r34c02wp9l] {
    color: #334155;
    line-height: 1.5;
    margin: 0;
}

.readiness-list[b-r34c02wp9l] {
    margin: 0 0 1rem;
    padding-left: 1.25rem;
    color: #c5221f;
    font-size: 0.9rem;
    line-height: 1.6;
}

.status-actions[b-r34c02wp9l] {
    display: flex;
    justify-content: flex-end;
    margin-top: 1rem;   /* separate the action button from the fields above it */
}

/* 022: the Mark Final Completion block, set off from the completion summary above it. */
.completion-action[b-r34c02wp9l] {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid #e2e8f0;
}

.status-error[b-r34c02wp9l] {
    background: #fce8e6;
    color: #c5221f;
}

.loading-state[b-r34c02wp9l],

.documents-section[b-r34c02wp9l] {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
}

.upload-control[b-r34c02wp9l] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.document-list[b-r34c02wp9l] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
}

.document-row[b-r34c02wp9l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.5rem 0;
    border-bottom: 1px solid #f1f5f9;
}

.document-row:last-child[b-r34c02wp9l] {
    border-bottom: none;
}

.doc-name[b-r34c02wp9l] {
    color: #1e293b;
    font-weight: 600;
}

.doc-meta[b-r34c02wp9l] {
    color: #64748b;
    font-size: 0.85rem;
}

.status-warning[b-r34c02wp9l] { background-color: #fef3c7; color: #92400e; }
.status-error[b-r34c02wp9l] { background-color: #fce8e6; color: #c5221f; }

.claim-list[b-r34c02wp9l] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
}

.claim-row[b-r34c02wp9l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.5rem 0;
    border-bottom: 1px solid #f1f5f9;
}

.claim-row:last-child[b-r34c02wp9l] { border-bottom: none; }

.claim-link[b-r34c02wp9l] {
    color: #1e293b;
    font-weight: 600;
    text-decoration: none;
}

.claim-link:hover[b-r34c02wp9l] { color: #5b9bd5; text-decoration: underline; }

/* ---------- Read-only view (non-Reviewer project members) ---------- */
.info-grid[b-r34c02wp9l] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem 2rem;
}

.info-field[b-r34c02wp9l] {
    display: flex;
    flex-direction: column;
}

.info-label[b-r34c02wp9l] {
    font-size: 0.6875rem;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.375rem;
}

.info-value[b-r34c02wp9l] {
    font-size: 0.9375rem;
    font-weight: 500;
    color: #1e293b;
    word-break: break-word;
}

.ro-schedule-wrapper[b-r34c02wp9l] {
    border: 1px solid #e9ecef;
    border-radius: 10px;
    overflow-x: auto;
}

.ro-schedule[b-r34c02wp9l] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9375rem;
}

.ro-schedule thead[b-r34c02wp9l] { background-color: var(--th); }

.ro-schedule th[b-r34c02wp9l] {
    text-align: left;
    padding: 0.75rem 1rem;
    font-weight: 600;
    color: #334155;
    white-space: nowrap;
}

.ro-schedule td[b-r34c02wp9l] {
    padding: 0.75rem 1rem;
    border-top: 1px solid #eef1f4;
    color: #334155;
    vertical-align: top;
}

.ro-schedule .col-num[b-r34c02wp9l] { width: 3rem; color: #64748b; }
.ro-schedule .col-unit[b-r34c02wp9l] { width: 4rem; }
.ro-schedule .col-money[b-r34c02wp9l] { width: 10rem; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ro-schedule th.col-money[b-r34c02wp9l] { text-align: right; }

.ro-schedule tfoot td[b-r34c02wp9l] {
    border-top: 2px solid #e2e8f0;
    font-weight: 700;
    color: #1e293b;
}

.ro-total-label[b-r34c02wp9l] { text-align: right; }

@media (max-width: 640px) {
    .info-grid[b-r34c02wp9l] { grid-template-columns: 1fr; }
}
/* /Components/Pages/Org/Contracts/_TenderScheduleEditor.razor.rz.scp.css */
.tender-editor[b-k0lzzfp3jh] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.schedule-table[b-k0lzzfp3jh] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.schedule-table th[b-k0lzzfp3jh] {
    text-align: left;
    font-size: 0.6875rem;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.5rem 0.5rem;
    border-bottom: 1px solid #e2e8f0;
}

.schedule-table td[b-k0lzzfp3jh] {
    padding: 0.5rem 0.5rem;
    border-bottom: 1px solid #f1f5f9;
    color: #334155;
    vertical-align: middle;
}

.col-num[b-k0lzzfp3jh] { width: 3rem; color: #64748b; }
.col-unit[b-k0lzzfp3jh] { width: 5rem; }
.col-total[b-k0lzzfp3jh] { width: 9rem; text-align: right; }
.col-actions[b-k0lzzfp3jh] { width: 5rem; text-align: right; }

.text-input[b-k0lzzfp3jh] {
    padding: 0.4rem 0.55rem;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font-size: 0.9rem;
    color: #1e293b;
}

.text-input.inline[b-k0lzzfp3jh] {
    width: 100%;
    padding: 0.3rem 0.45rem;
}

.text-input.right[b-k0lzzfp3jh] {
    text-align: right;
}

.schedule-summary[b-k0lzzfp3jh] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.75rem 0.5rem;
    border-top: 2px solid #e2e8f0;
    font-size: 0.95rem;
}

.summary-figure[b-k0lzzfp3jh] {
    font-weight: 700;
    color: #1e293b;
}

.summary-diff[b-k0lzzfp3jh] {
    font-weight: 600;
}

.summary-diff.match[b-k0lzzfp3jh] {
    color: #166534;
}

.summary-diff.mismatch[b-k0lzzfp3jh] {
    color: #c5221f;
}

.add-controls[b-k0lzzfp3jh] {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    padding-top: 0.5rem;
}

.add-row[b-k0lzzfp3jh] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.add-row .text-input:first-child[b-k0lzzfp3jh] {
    flex: 1;
}

.add-row .text-input.right[b-k0lzzfp3jh] {
    width: 8rem;
}

.btn-link-danger[b-k0lzzfp3jh] {
    background: none;
    border: none;
    color: #c5221f;
    font-size: 0.85rem;
    cursor: pointer;
    padding: 0;
}

.btn-link-danger:hover[b-k0lzzfp3jh] {
    text-decoration: underline;
}

.status-error[b-k0lzzfp3jh] {
    background: #fce8e6;
    color: #c5221f;
}
/* /Components/Pages/Org/InviteUsers.razor.rz.scp.css */
.invite-row[b-jzmyck64qk] {
    display: flex;
    align-items: flex-end;
    gap: 1rem;
}

.invite-email-field[b-jzmyck64qk] {
    flex: 1;
    margin-bottom: 0;
}

.invite-send-btn[b-jzmyck64qk] {
    flex-shrink: 0;
}

.subsection-title[b-jzmyck64qk] {
    margin-top: 1.5rem;
    margin-bottom: 0.75rem;
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #666;
}

.invitation-list[b-jzmyck64qk] {
    list-style: none;
    padding: 0;
    margin: 0;
}

.invitation-row[b-jzmyck64qk] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 0;
    border-bottom: 1px solid #eee;
}

.invitation-row:last-child[b-jzmyck64qk] {
    border-bottom: none;
}

.invitation-email[b-jzmyck64qk] {
    font-weight: 500;
}

.invitation-meta[b-jzmyck64qk] {
    font-size: 0.85rem;
    color: #888;
}

.invitation-expired[b-jzmyck64qk] {
    color: #b91c1c;
    font-weight: 600;
}

/* Resend + withdraw buttons, kept together on the right of the row. */
.invitation-actions[b-jzmyck64qk] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.invitation-actions .btn-sm[b-jzmyck64qk] {
    padding: 0.35rem 0.75rem;
    font-size: 0.8125rem;
}

.invitation-cancel[b-jzmyck64qk] {
    width: 28px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    border-radius: 50%;
    color: #94a3b8;
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
    padding: 0;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.invitation-cancel:hover[b-jzmyck64qk] {
    background-color: #fee2e2;
    color: #c5221f;
}

.invitation-cancel:focus-visible[b-jzmyck64qk] {
    outline: 2px solid #c5221f;
    outline-offset: 2px;
}

.status-success[b-jzmyck64qk] {
    background: #e6f4ea;
    color: #1e7c3e;
}

.status-error[b-jzmyck64qk] {
    background: #fce8e6;
    color: #c5221f;
}

/* Members roster (accepted org members), reusing the invitation-row layout. */
.member-roster[b-jzmyck64qk] {
    margin-bottom: 1.25rem;
}

.member-you[b-jzmyck64qk] {
    display: inline-block;
    margin-left: 0.4rem;
    padding: 0.05rem 0.45rem;
    font-size: 0.6875rem;
    font-weight: 600;
    color: #475569;
    background-color: #e2e8f0;
    border-radius: 999px;
    vertical-align: middle;
}
/* /Components/Pages/Org/Members/_MembersPanel.razor.rz.scp.css */
.member-list[b-bs5bje70um] {
    list-style: none;
    padding: 0;
    margin: 0;
}

.member-row[b-bs5bje70um] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.75rem 0;
    border-bottom: 1px solid #eee;
}

.member-row:last-child[b-bs5bje70um] {
    border-bottom: none;
}

.member-name[b-bs5bje70um] {
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.member-meta[b-bs5bje70um] {
    font-size: 0.85rem;
    color: #888;
}

.member-badge[b-bs5bje70um] {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #1d4ed8;
    background: #e0e7ff;
    padding: 0.1rem 0.4rem;
    border-radius: 4px;
}

.member-actions[b-bs5bje70um] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

.member-role-select[b-bs5bje70um] {
    min-width: 9rem;
}

/* Same column width as the dropdown beside it, so the rows still line up. */
.member-role-fixed[b-bs5bje70um] {
    display: inline-block;
    min-width: 9rem;
    padding: 0.5rem 0;
    color: #475569;
    font-size: 0.9rem;
}

.member-remove[b-bs5bje70um] {
    width: 28px;
    height: 28px;
    border: none;
    background: transparent;
    color: #b91c1c;
    font-size: 1.2rem;
    line-height: 1;
    cursor: pointer;
    border-radius: 4px;
}

.member-remove:hover:not(:disabled)[b-bs5bje70um] {
    background: #fee2e2;
}

.member-remove:disabled[b-bs5bje70um] {
    color: #ccc;
    cursor: not-allowed;
}

.subsection-title[b-bs5bje70um] {
    margin-top: 1.5rem;
    margin-bottom: 0.75rem;
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #666;
}

.invite-row[b-bs5bje70um] {
    display: flex;
    align-items: flex-end;
    gap: 1rem;
    flex-wrap: wrap;
}

.invite-email-field[b-bs5bje70um] {
    flex: 1;
    min-width: 14rem;
}

.invite-hint[b-bs5bje70um] {
    margin: 0 0 0.75rem;
    font-size: 0.85rem;
    color: #888;
}

.pending-invites[b-bs5bje70um] {
    margin-top: 1rem;
}

.form-group[b-bs5bje70um] {
    margin-bottom: 0;
}

.form-label[b-bs5bje70um] {
    display: block;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    color: #666;
    margin-bottom: 0.35rem;
}

.form-input[b-bs5bje70um] {
    padding: 0.5rem 0.65rem;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    font-size: 0.9rem;
    background: #fff;
}

.btn-sm[b-bs5bje70um] {
    padding: 0.35rem 0.7rem;
    font-size: 0.8rem;
}

.status-error[b-bs5bje70um] {
    color: #b91c1c;
    background: #fee2e2;
}

.status-success[b-bs5bje70um] {
    color: #166534;
    background: #dcfce7;
}
/* /Components/Pages/Org/ProjectDetail.razor.rz.scp.css */
.project-detail-container[b-uq9wiuxq6d] {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 1.75rem;
}

.back-link[b-uq9wiuxq6d] {
    color: #64748b;
    text-decoration: none;
    font-size: 0.875rem;
    align-self: flex-start;
}

.back-link:hover[b-uq9wiuxq6d] {
    color: #1e293b;
}

.page-header-top[b-uq9wiuxq6d] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.project-id-code[b-uq9wiuxq6d] {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 0.875rem;
    color: #64748b;
    background: #f1f5f9;
    padding: 0.25rem 0.5rem;
    border-radius: 4px;
}

.project-tier[b-uq9wiuxq6d] {
    color: #475569;
    font-size: 0.9375rem;
    margin: 0;
}

.project-status[b-uq9wiuxq6d] {
    display: inline-flex;
    align-items: center;
    padding: 0.25rem 0.625rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.status-draft[b-uq9wiuxq6d] {
    background-color: #f1f5f9;
    color: #64748b;
}

.status-active[b-uq9wiuxq6d] {
    background-color: #dcfce7;
    color: #166534;
}

.status-completed[b-uq9wiuxq6d] {
    background-color: #e0e7ff;
    color: #3730a3;
}

.status-warning[b-uq9wiuxq6d] {
    background-color: #fef3c7;
    color: #92400e;
}

.detail-block[b-uq9wiuxq6d] {
    margin-bottom: 0.5rem;
}

.detail-label[b-uq9wiuxq6d] {
    font-size: 0.6875rem;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.375rem;
}

.detail-text[b-uq9wiuxq6d] {
    color: #334155;
    line-height: 1.5;
    margin: 0;
}

.status-actions[b-uq9wiuxq6d] {
    margin-top: 1rem;
    display: flex;
    justify-content: flex-end;
}

.status-error[b-uq9wiuxq6d] {
    background: #fce8e6;
    color: #c5221f;
}

.loading-state[b-uq9wiuxq6d],

.contract-list[b-uq9wiuxq6d] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
}

.contract-row[b-uq9wiuxq6d] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.75rem 0;
    border-bottom: 1px solid #f1f5f9;
}

.contract-row:last-child[b-uq9wiuxq6d] {
    border-bottom: none;
}

/* Match the link affordance used elsewhere (project/claim names): blue by default so it reads
   as clickable without needing a hover, underline on hover. */
.contract-link[b-uq9wiuxq6d] {
    color: #2563eb;
    font-weight: 600;
    text-decoration: none;
}

.contract-link:hover[b-uq9wiuxq6d] {
    text-decoration: underline;
}

.new-contract-form[b-uq9wiuxq6d] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 1rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid #f1f5f9;
}

.new-contract-form .text-input[b-uq9wiuxq6d] {
    flex: 1;
    padding: 0.5rem 0.625rem;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    font-size: 0.9375rem;
    color: #1e293b;
}

/* The contract name takes the remaining width; status + delete actions sit together on the right. */
.contract-row .contract-link[b-uq9wiuxq6d] {
    flex: 1;
}

/* Small button variant for the inline contract delete affordance. */
.btn-sm[b-uq9wiuxq6d] {
    padding: 0.3rem 0.65rem;
    font-size: 0.8125rem;
}

.btn-danger[b-uq9wiuxq6d] {
    background-color: #dc2626;
    color: #ffffff;
}

.btn-danger:hover:not(:disabled)[b-uq9wiuxq6d] {
    background-color: #b91c1c;
}

.contract-delete-confirm[b-uq9wiuxq6d] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}

.contract-delete-confirm .confirm-text[b-uq9wiuxq6d] {
    font-size: 0.8125rem;
    color: #64748b;
}

/* Project Information + party cards (Client / Contractor / QS-PM): a two-column label-above-value
   grid, matching the Project Settings design. Read-only; shown to every project member. */
.info-grid[b-uq9wiuxq6d] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem 2rem;
}

.info-field[b-uq9wiuxq6d] {
    display: flex;
    flex-direction: column;
}

/* A field that spans the full grid width (e.g. the project description). */
.info-field-full[b-uq9wiuxq6d] {
    grid-column: 1 / -1;
}

.info-label[b-uq9wiuxq6d] {
    font-size: 0.6875rem;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.375rem;
}

.info-value[b-uq9wiuxq6d] {
    font-size: 0.9375rem;
    font-weight: 500;
    color: #1e293b;
    word-break: break-word;
}

.info-value-id[b-uq9wiuxq6d] {
    color: #2563eb;
    font-weight: 600;
}

/* Each party (there's normally one per role, but support more) is its own 2-col name/email row. */
.party-list[b-uq9wiuxq6d] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.party-row[b-uq9wiuxq6d] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem 2rem;
}

.party-email[b-uq9wiuxq6d] {
    color: #2563eb;
    text-decoration: none;
    font-weight: 500;
}

.party-email:hover[b-uq9wiuxq6d] {
    text-decoration: underline;
}

/* "Certifier" tag next to the QS/PM who approves claims. */
.party-badge[b-uq9wiuxq6d] {
    display: inline-block;
    margin-left: 0.5rem;
    padding: 0.1rem 0.5rem;
    font-size: 0.6875rem;
    font-weight: 600;
    color: #1d4ed8;
    background-color: #eff6ff;
    border-radius: 999px;
    vertical-align: middle;
}

@media (max-width: 640px) {
    .info-grid[b-uq9wiuxq6d],
    .party-row[b-uq9wiuxq6d] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Org/Projects.razor.rz.scp.css */
/* Projects Container */
.projects-container[b-p7p4873oql] {
    width: 100%;
}

/* Page Header */

/* Loading, Error, Empty States */
.loading-state[b-p7p4873oql],

.empty-state h2[b-p7p4873oql] {
    font-size: 1.25rem;
    font-weight: 600;
    color: #1e293b;
    margin: 0 0 0.5rem 0;
}

.empty-state p[b-p7p4873oql] {
    color: #64748b;
    margin: 0 0 1.5rem 0;
}

/* Projects Table */

/* Whole-row click affordance: the row is the single target, so hover lights up the
   entire row (no per-cell link colouring). */

.cell-name[b-p7p4873oql] {
    font-weight: 600;
    color: #1e293b;
}

/* Status colour-coded text */
.status-text[b-p7p4873oql] {
    font-weight: 600;
    font-size: 0.875rem;
}

.status-text.status-active[b-p7p4873oql] {
    color: #16a34a;
}

.status-text.status-completed[b-p7p4873oql] {
    color: #2563eb;
}

.status-text.status-draft[b-p7p4873oql] {
    color: #64748b;
}

/* Buttons */

.btn:disabled[b-p7p4873oql] {
    opacity: 0.6;
    cursor: not-allowed;
}

.btn-primary:hover:not(:disabled)[b-p7p4873oql] {
    background-color: #4a8bc4;
}

.btn-secondary:hover:not(:disabled)[b-p7p4873oql] {
    background-color: #cbd5e1;
}

/* Responsive */
@media (max-width: 768px) {
    .page-header-content[b-p7p4873oql] {
        flex-direction: column;
        gap: 1rem;
    }

    .projects-table th[b-p7p4873oql],
}
/* /Components/Pages/Org/Settings.razor.rz.scp.css */
/* Settings Container */
.settings-container[b-z45sn1wuci] {
    width: 100%;
}

/* Page Header */

/* Loading and Error States */
.loading-state[b-z45sn1wuci],

/* Settings Grid - single column for now */
.settings-grid[b-z45sn1wuci] {
    display: flex;
    flex-direction: column;
    gap: 1.75rem;
}

/* Form Styles */
.form-group[b-z45sn1wuci] {
    margin-bottom: 1rem;
}

.form-group:last-child[b-z45sn1wuci] {
    margin-bottom: 0;
}

.form-row[b-z45sn1wuci] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.form-label[b-z45sn1wuci] {
    display: block;
    font-size: 0.6875rem;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.375rem;
}

.form-input[b-z45sn1wuci] {
    width: 100%;
    height: 44px;
    padding: 0 0.875rem;
    font-size: 0.9375rem;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    background-color: #ffffff;
    color: #334155;
    box-sizing: border-box;
}

.form-input[b-z45sn1wuci]::placeholder {
    color: #9ca3af;
}

.form-input:focus[b-z45sn1wuci] {
    outline: none;
    border-color: #79B7FE;
    box-shadow: 0 0 0 3px rgba(121, 183, 254, 0.15);
}

.form-input[readonly][b-z45sn1wuci] {
    cursor: default;
    background-color: #f9fafb;
    color: #6b7280;
}

.form-actions[b-z45sn1wuci] {
    margin-top: 1.5rem;
    display: flex;
    justify-content: flex-end;
}

/* User Profile Header */
.user-profile-header[b-z45sn1wuci] {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.5rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid #e2e8f0;
}

.user-avatar-large[b-z45sn1wuci] {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background-color: #5b9bd5;
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.125rem;
    font-weight: 600;
    flex-shrink: 0;
}

.user-profile-info[b-z45sn1wuci] {
    flex: 1;
}

.user-profile-name[b-z45sn1wuci] {
    font-size: 1.125rem;
    font-weight: 600;
    color: #1e293b;
}

.user-profile-role[b-z45sn1wuci] {
    font-size: 0.875rem;
    color: #64748b;
}

/* Responsive */
@media (max-width: 600px) {
    .form-row[b-z45sn1wuci] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Org/TierSelection.razor.rz.scp.css */
.tier-page[b-n7if083t17] {
    padding: 2rem 1rem;
    display: flex;
    justify-content: center;
}

.tier-card-shell[b-n7if083t17] {
    width: 100%;
    max-width: 960px;
    background: white;
    border-radius: 16px;
    padding: 2.5rem 3rem 2rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}

.tier-header[b-n7if083t17] {
    text-align: center;
    margin-bottom: 2rem;
}

.tier-title[b-n7if083t17] {
    color: #6BA4FF;
    font-size: 1.875rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    margin: 0 0 0.5rem 0;
}

.tier-subtitle[b-n7if083t17] {
    color: #475569;
    font-size: 1rem;
    margin: 0;
}

.tier-form[b-n7if083t17] {
    max-width: 720px;
    margin: 0 auto 2rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.tier-grid[b-n7if083t17] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem;
    margin-bottom: 1.5rem;
}

@media (max-width: 640px) {
    .tier-grid[b-n7if083t17] {
        grid-template-columns: 1fr;
    }

    .tier-card-shell[b-n7if083t17] {
        padding: 1.5rem 1rem;
    }
}

[b-n7if083t17] .tier-card {
    background: white;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    padding: 1.5rem 1.25rem;
    text-align: center;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

[b-n7if083t17] .tier-card-title {
    font-size: 1.125rem;
    font-weight: 600;
    color: #1e293b;
    margin: 0;
}

[b-n7if083t17] .tier-card-subtitle {
    font-size: 0.875rem;
    color: #64748b;
    margin: 0 0 1rem 0;
}

[b-n7if083t17] .tier-card-button {
    width: 100%;
}

.tier-footer[b-n7if083t17] {
    border-top: 1px solid #e5e7eb;
    padding-top: 1.25rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

.tier-sales[b-n7if083t17] {
    background: #f8fafc;
    border-radius: 8px;
    padding: 0.875rem 1.25rem;
    margin: 0;
    width: 100%;
    text-align: center;
    color: #475569;
    font-size: 0.875rem;
}

.tier-sales a[b-n7if083t17] {
    color: #6BA4FF;
    text-decoration: none;
}

.tier-sales a:hover[b-n7if083t17] {
    text-decoration: underline;
}

.tier-loading[b-n7if083t17],
.tier-error[b-n7if083t17] {
    text-align: center;
    padding: 3rem 1rem;
    color: #64748b;
}

.status-error[b-n7if083t17] {
    color: #b91c1c;
    text-align: center;
    margin: 0 0 1rem 0;
}
/* /Components/Pages/Org/Variations/AddVariation.razor.rz.scp.css */
.add-variation-container[b-eernivwi59] {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

/* Breadcrumb */
.breadcrumb[b-eernivwi59] { font-size: 0.875rem; color: #94a3b8; }
.breadcrumb a[b-eernivwi59] { color: #64748b; text-decoration: none; }
.breadcrumb a:hover[b-eernivwi59] { text-decoration: underline; }
.breadcrumb .sep[b-eernivwi59] { margin: 0 0.4rem; color: #cbd5e1; }

/* Header: left-aligned, blue project title — matches the claim page this is launched from
   (and the left-aligned breadcrumb above it). */
.add-variation-header[b-eernivwi59] { text-align: left; }

.av-project-title[b-eernivwi59] {
    font-size: 2rem;
    font-weight: 700;
    color: #79B7FE;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    margin: 0 0 0.25rem;
}

.av-subtitle[b-eernivwi59] { color: #64748b; font-size: 1.05rem; margin: 0; }

/* Form */
.av-form[b-eernivwi59] { display: flex; flex-direction: column; gap: 1.25rem; }

.av-section-title[b-eernivwi59] {
    font-size: 1.125rem;
    font-weight: 600;
    color: #1e293b;
    margin: 0.5rem 0 0;
}

.av-field[b-eernivwi59] { display: flex; flex-direction: column; gap: 0.4rem; }

.av-field label[b-eernivwi59] {
    font-size: 0.875rem;
    color: #334155;
    font-weight: 500;
}

.av-field .req[b-eernivwi59] { color: #dc2626; }

.form-input[b-eernivwi59] {
    width: 100%;
    padding: 0.7rem 0.9rem;
    border: 1px solid #d1d9e0;
    border-radius: 8px;
    font-family: inherit;   /* textareas default to monospace otherwise */
    font-size: 0.95rem;
    color: #1e293b;
    background: #fff;
    box-sizing: border-box;
}

.form-input:focus[b-eernivwi59] {
    outline: none;
    border-color: #79B7FE;
    box-shadow: 0 0 0 3px rgba(121, 183, 254, 0.15);
}

textarea.form-input[b-eernivwi59] { resize: vertical; min-height: 90px; }

/* File picker (full width, light blue) */
.av-upload[b-eernivwi59] {
    width: 100%;
    padding: 1rem;
    border: none;
    border-radius: 10px;
    background: #d6e9ff;
    color: #1e293b;
    font-weight: 600;
    font-size: 0.95rem;
    cursor: pointer;
}

.av-upload:disabled[b-eernivwi59] {
    cursor: not-allowed;
    opacity: 0.6;
}

.av-file-list[b-eernivwi59] {
    margin: 0.5rem 0 0;
    padding-left: 1.1rem;
    font-size: 0.8125rem;
    color: #475569;
}

.av-upload-note[b-eernivwi59] {
    font-size: 0.8125rem;
    color: #94a3b8;
    margin: 0.5rem 0 0;
}

/* Footer */
.av-footer[b-eernivwi59] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 0.75rem;
}

.back-link[b-eernivwi59] {
    color: #64748b;
    text-decoration: none;
    font-size: 0.9375rem;
}

.back-link:hover[b-eernivwi59] { color: #1e293b; }

.av-actions[b-eernivwi59] { display: flex; gap: 0.75rem; }

.status-error[b-eernivwi59] { background: #fce8e6; color: #c5221f; }

.validation-message[b-eernivwi59] { color: #dc2626; font-size: 0.8125rem; }

.loading-state[b-eernivwi59],
/* /Components/Pages/Subcontractors/Projects.razor.rz.scp.css */

/* The base treatment from the latest walkthrough: this table sits where every other list does. */
.cell-org[b-2bmhcvbkcn] { font-weight: 500; color: #475569; }
.cell-name[b-2bmhcvbkcn] { font-weight: 600; color: #1e293b; }
.status-text[b-2bmhcvbkcn] { font-weight: 600; font-size: 0.875rem; }
.status-text.status-active[b-2bmhcvbkcn] { color: #16a34a; }
.status-text.status-completed[b-2bmhcvbkcn] { color: #2563eb; }
.status-text.status-draft[b-2bmhcvbkcn] { color: #64748b; }

/* The list treatment from the latest walkthrough, matching every other list in the app. Blazor scoped
   CSS does not cross component boundaries, so these cell rules are repeated here. */
.cell-org[b-2bmhcvbkcn] { font-weight: 500; color: #475569; }
.cell-name[b-2bmhcvbkcn] { font-weight: 600; color: #1e293b; }
.status-text[b-2bmhcvbkcn] { font-weight: 600; font-size: 0.875rem; }
.status-text.status-active[b-2bmhcvbkcn] { color: #16a34a; }
.status-text.status-completed[b-2bmhcvbkcn] { color: #2563eb; }
.status-text.status-draft[b-2bmhcvbkcn] { color: #64748b; }
/* /Components/Pages/Subcontractors/Roster.razor.rz.scp.css */

.cell-org[b-ooq96fqxf9] { font-weight: 500; color: #475569; }
/* /Components/Shared/AppHeader.razor.rz.scp.css */
/* The bar spans the viewport; .header-inner centres its content — the walkthrough's .bar / .bar-in.
   White on the grey page, separated by a hairline rather than a shadow (specs/docs). */
.app-header[b-oonihfwgtf] {
    background-color: #ffffff;
    border-bottom: 1px solid var(--line);
    position: sticky;
    top: 0;
    z-index: 500;
}

.header-inner[b-oonihfwgtf] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    height: 68px;
    max-width: 1340px;
    margin: 0 auto;
    padding: 0 24px;
}

.header-brand[b-oonihfwgtf] {
    flex-shrink: 0;
}

.brand-link[b-oonihfwgtf] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    text-decoration: none;
}

.brand-bar[b-oonihfwgtf] {
    width: 4px;
    height: 24px;
    background-color: #3b82f6;
    border-radius: 2px;
}

.brand-text[b-oonihfwgtf] {
    font-size: 1.125rem;
    font-weight: 600;
    color: #1e293b;
    letter-spacing: 0.025em;
}

.header-nav[b-oonihfwgtf] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.nav-link[b-oonihfwgtf] {
    padding: 9px 14px;
    font-size: 14.5px;
    color: var(--muted);
    text-decoration: none;
    border-radius: 7px;
    white-space: nowrap;
    transition: all 0.15s ease;
}

.nav-link:hover[b-oonihfwgtf] {
    color: var(--ink);
}

/* Deliberately no font-weight here. The blue and the pill already say which tab you are on, and weight
   is the one property that would change the label's width — lighting a tab used to widen it and nudge
   every tab to its right along a couple of pixels, so the whole nav twitched on each click. Adding bold
   back brings that with it. */
.nav-link.active[b-oonihfwgtf] {
    color: var(--blue);
    background-color: var(--pill);
}

/* Primary call-to-action in the nav (New Project), set apart from the plain links. */
.nav-cta[b-oonihfwgtf] {
    padding: 0.5rem 1rem;
    font-size: 0.875rem;
    font-weight: 600;
    color: #ffffff;
    background-color: #79B7FE;
    text-decoration: none;
    border-radius: 6px;
    white-space: nowrap;
    transition: background-color 0.15s ease;
}

.nav-cta:hover[b-oonihfwgtf] {
    background-color: #5BA3F5;
}

.header-user[b-oonihfwgtf] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 1rem;
}

/* Identity zone: which hat you're wearing, and whose books you're in. Blue is the contractor-side
   default; a subcontractor flips the same zone to green (.role-sub below) so the two are never
   mistaken for each other. Colours from specs/docs (--blue/--pill and --sub/--sub-pill). */
.header-identity[b-oonihfwgtf] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.2;
}

.identity-role[b-oonihfwgtf] {
    display: inline-block;
    background-color: var(--pill);
    color: var(--blue);
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    padding: 3px 9px;
    border-radius: 4px;
}

.identity-org[b-oonihfwgtf] {
    color: var(--muted);
    font-size: 12.5px;
    margin-top: 3px;
    white-space: nowrap;
}

/* Subcontractor: only the identity zone changes — a green underline on the bar, a green badge and a
   green avatar. The rest of the interface stays exactly as it is. */
.app-header.role-sub[b-oonihfwgtf] {
    box-shadow: inset 0 -3px 0 var(--sub-soft);
}

.app-header.role-sub .identity-role[b-oonihfwgtf] {
    background-color: var(--sub-pill);
    color: var(--sub);
}

.app-header.role-sub .user-avatar[b-oonihfwgtf] {
    background-color: var(--sub-soft);
}

.app-header.role-sub .user-avatar:hover[b-oonihfwgtf] {
    box-shadow: 0 0 0 3px rgba(46, 158, 126, 0.25);
}

/* Avatar is a button that toggles the dropdown; .user-menu anchors the dropdown to it. */
.user-menu[b-oonihfwgtf] {
    position: relative;
    display: flex;
    align-items: center;
}

.user-avatar[b-oonihfwgtf] {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background-color: #3b82f6;
    color: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.75rem;
    font-weight: 600;
    text-decoration: none;
    border: none;
    padding: 0;
    cursor: pointer;
    transition: box-shadow 0.15s ease;
}

.user-avatar:hover[b-oonihfwgtf] {
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.25);
}

/* Transparent layer that captures an outside click to close the menu. */
.user-menu-backdrop[b-oonihfwgtf] {
    position: fixed;
    inset: 0;
    z-index: 600;
}

.user-menu-dropdown[b-oonihfwgtf] {
    position: absolute;
    top: calc(100% + 0.5rem);
    right: 0;
    z-index: 601;
    min-width: 200px;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.12);
    padding: 0.375rem;
    display: flex;
    flex-direction: column;
}

.user-menu-header[b-oonihfwgtf] {
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid #f1f5f9;
    margin-bottom: 0.25rem;
}

.user-menu-name[b-oonihfwgtf] {
    font-size: 0.875rem;
    font-weight: 600;
    color: #1e293b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.user-menu-item[b-oonihfwgtf] {
    display: block;
    padding: 0.5rem 0.75rem;
    font-size: 0.875rem;
    font-weight: 500;
    color: #334155;
    text-decoration: none;
    border-radius: 6px;
    white-space: nowrap;
}

.user-menu-item:hover[b-oonihfwgtf] {
    background-color: #f1f5f9;
}

.user-menu-item-danger[b-oonihfwgtf] {
    color: #dc2626;
}

.user-menu-item-danger:hover[b-oonihfwgtf] {
    background-color: #fef2f2;
}

.login-link[b-oonihfwgtf] {
    padding: 0.5rem 1rem;
    font-size: 0.875rem;
    font-weight: 500;
    color: #3b82f6;
    text-decoration: none;
}

.login-link:hover[b-oonihfwgtf] {
    text-decoration: underline;
}

/* Hamburger toggle and mobile-only nav items are hidden on desktop; the @media block below turns
   them on (and converts the inline nav into a dropdown drawer) at <=768px. */
.nav-toggle[b-oonihfwgtf] {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
    width: 40px;
    height: 40px;
    padding: 0;
    background: none;
    border: none;
    cursor: pointer;
}

.nav-toggle-bar[b-oonihfwgtf] {
    display: block;
    width: 22px;
    height: 2px;
    background-color: #475569;
    border-radius: 2px;
}

.nav-link-mobile-only[b-oonihfwgtf] {
    display: none;
}

/* The nav gained a sixth link (Subcontractors), so the org name under the badge is the first thing to
   go when width gets tight — the role badge itself stays. Mirrors the demo's 1180px breakpoint. */
@media (max-width: 1180px) {
    .identity-org[b-oonihfwgtf] {
        display: none;
    }
}

/* Narrow screens: the inline nav doesn't fit (5 links + avatar + logout), so collapse it behind a
   hamburger that opens a full-width dropdown drawer. */
@media (max-width: 768px) {
    /* .header-inner is the flex container now, so the mobile padding/ordering applies there. */
    .header-inner[b-oonihfwgtf] {
        padding: 0 1rem;
        gap: 0.5rem;
    }

    .brand-text[b-oonihfwgtf] {
        font-size: 1rem;
    }

    /* Layout: ☰ on the far left, then the brand, with the avatar pushed to the far right —
       matches the approved mockup. Flex children in flow on mobile are nav-toggle, brand and
       header-user (the nav drawer is position:absolute, so out of flow). */
    .nav-toggle[b-oonihfwgtf] {
        display: flex;
        order: 1;
    }
    .brand-link[b-oonihfwgtf] {
        order: 2;
        margin-right: auto;   /* eat the free space so the avatar/logout sit on the far right */
    }
    .header-user[b-oonihfwgtf] { order: 3; }

    /* Hide the inline nav by default; reveal it as a dropdown drawer when .open is set. */
    .header-nav[b-oonihfwgtf] {
        display: none;
        position: absolute;
        top: 64px;
        left: 0;
        right: 0;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: 0.5rem;
        background-color: #ffffff;
        border-bottom: 1px solid #e2e8f0;
        box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1);
    }

    .header-nav.open[b-oonihfwgtf] {
        display: flex;
    }

    .header-nav .nav-link[b-oonihfwgtf] {
        padding: 0.875rem 1rem;
        border-radius: 8px;
    }

    /* Inside the drawer there's room for the Logout link. */
    .nav-link-mobile-only[b-oonihfwgtf] {
        display: block;
        border-top: 1px solid #f1f5f9;
        margin-top: 0.25rem;
        color: #475569;
    }

    /* Full-width CTA inside the drawer, matching the stacked link rhythm. */
    .nav-cta[b-oonihfwgtf] {
        display: block;
        text-align: center;
        margin: 0.5rem 0.25rem 0.25rem;
        padding: 0.875rem 1rem;
        border-radius: 8px;
    }
}
/* /Components/Shared/Card.razor.rz.scp.css */
.card[b-v42ig4j83l] {
    background: #ffffff;
    border: 1px solid var(--line);
    border-radius: 9px;
    padding: 24px;
    box-shadow: none;
}

.card-header[b-v42ig4j83l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.card-title[b-v42ig4j83l] {
    font-size: 1.125rem;
    font-weight: 600;
    color: #1e293b;
    margin: 0;
}

.card-header-actions[b-v42ig4j83l] {
    display: flex;
    gap: 0.5rem;
    flex-shrink: 0;
}

.card-content[b-v42ig4j83l] {
    color: #475569;
}
/* /Components/Shared/Modal.razor.rz.scp.css */
/* Reusable modal: backdrop + centred panel. */
.modal-backdrop[b-sihu80g6qn] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem;
    z-index: 1000;
}

.modal-panel[b-sihu80g6qn] {
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
    width: 100%;
    max-width: 560px;
    max-height: calc(100vh - 3rem);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.modal-header[b-sihu80g6qn] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.5rem 1.5rem 0.75rem;
}

.modal-heading[b-sihu80g6qn] { min-width: 0; }

.modal-title[b-sihu80g6qn] {
    font-size: 1.5rem;
    font-weight: 700;
    color: #0f172a;
    margin: 0;
}

.modal-subtitle[b-sihu80g6qn] {
    margin: 0.35rem 0 0;
    color: #64748b;
    font-size: 0.9375rem;
}

.modal-close[b-sihu80g6qn] {
    background: none;
    border: none;
    font-size: 1.75rem;
    line-height: 1;
    color: #94a3b8;
    cursor: pointer;
    padding: 0 0.25rem;
}

.modal-close:hover[b-sihu80g6qn] { color: #475569; }

.modal-body[b-sihu80g6qn] {
    padding: 0.75rem 1.5rem 1rem;
    overflow-y: auto;
}

.modal-footer[b-sihu80g6qn] {
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    padding: 1rem 1.5rem 1.5rem;
    border-top: 1px solid #f1f5f9;
}

@media (max-width: 600px) {
    .modal-panel[b-sihu80g6qn] { max-width: 100%; }
}
/* /Components/Shared/MyClaimsTable.razor.rz.scp.css */
/* Styles for the shared My Claims table + status cards. Scoped to this component, so the empty-state,
   status-text, and row rules are repeated here as needed (Blazor scoped CSS does not cross components). */

/* Section empty state (no claims yet) */

.empty-state h2[b-n7amaxmwsc] {
    font-size: 1.25rem;
    font-weight: 600;
    color: #1e293b;
    margin: 0 0 0.5rem 0;
}

.empty-state p[b-n7amaxmwsc] {
    color: #64748b;
    margin: 0 0 1.5rem 0;
}

/* Claims table */

/* Whole-row click affordance: the row is the single target, so hover lights up the
   entire row (no per-cell link colouring). */

.cell-org[b-n7amaxmwsc] {
    font-weight: 500;
    color: #475569;
}

.cell-claim-no[b-n7amaxmwsc] {
    white-space: nowrap;
    font-weight: 600;
    color: #1e293b;
}

/* Claim status label colours in the table */
.claims-table .status-text[b-n7amaxmwsc] {
    font-weight: 600;
    white-space: nowrap;
}

.status-text.status-draft[b-n7amaxmwsc] { color: #64748b; }
.status-text.status-submitted[b-n7amaxmwsc] { color: #2563eb; }
.status-text.status-revision[b-n7amaxmwsc] { color: #d97706; }
.status-text.status-certified[b-n7amaxmwsc] { color: #16a34a; }

@media (max-width: 768px) {
    .claims-table th[b-n7amaxmwsc],
    .claims-table td[b-n7amaxmwsc] {
        padding: 0.75rem 0.875rem;
    }
}
/* /Components/Shared/MyProjectsTable.razor.rz.scp.css */
/* Styles for the shared My Projects table. Scoped to this component (Blazor scoped CSS does not cross
   component boundaries), so the empty-state + status-text + row rules are repeated here as needed. */

/* Section empty state (no projects yet) */

.empty-state h2[b-tvpnrsx2wu] {
    font-size: 1.25rem;
    font-weight: 600;
    color: #1e293b;
    margin: 0 0 0.5rem 0;
}

.empty-state p[b-tvpnrsx2wu] {
    color: #64748b;
    margin: 0 0 1.5rem 0;
}

/* Projects table */

/* Whole-row click affordance: the row is the single target, so hover lights up the
   entire row (no per-cell link colouring). */

.cell-org[b-tvpnrsx2wu] {
    font-weight: 500;
    color: #475569;
}

.cell-name[b-tvpnrsx2wu] {
    font-weight: 600;
    color: #1e293b;
}

/* Status colour-coded text */
.status-text[b-tvpnrsx2wu] {
    font-weight: 600;
    font-size: 0.875rem;
}

.status-text.status-active[b-tvpnrsx2wu] { color: #16a34a; }
.status-text.status-completed[b-tvpnrsx2wu] { color: #2563eb; }
.status-text.status-draft[b-tvpnrsx2wu] { color: #64748b; }

@media (max-width: 768px) {
    .projects-table th[b-tvpnrsx2wu],
    .projects-table td[b-tvpnrsx2wu] {
        padding: 0.75rem 0.875rem;
    }
}
/* /Components/Shared/MySubcontractClaimsTable.razor.rz.scp.css */
/* Matches MyClaimsTable, which this sits directly under on the dashboard and /claims. Blazor scoped
   CSS does not cross component boundaries, so the shared cell rules are repeated here. */

.cell-claim-no[b-rh8mq7gcgu] {
    white-space: nowrap;
    font-weight: 600;
    color: #1e293b;
}

.claims-table .status-text[b-rh8mq7gcgu] {
    font-weight: 600;
    white-space: nowrap;
}

.status-text.status-active[b-rh8mq7gcgu] { color: #16a34a; }
.status-text.status-completed[b-rh8mq7gcgu] { color: #2563eb; }
.status-text.status-draft[b-rh8mq7gcgu] { color: #64748b; }

@media (max-width: 768px) {
    .claims-table th[b-rh8mq7gcgu],
    .claims-table td[b-rh8mq7gcgu] {
        padding: 0.75rem 0.875rem;
    }
}
/* /Components/Shared/MySubcontractPackagesTable.razor.rz.scp.css */
/* Matches MyProjectsTable, which this sits directly under on the dashboard and /projects. Blazor
   scoped CSS does not cross component boundaries, so the shared cell rules are repeated here. */

.cell-org[b-wfwi7t3wrt] {
    font-weight: 500;
    color: #475569;
}

.cell-name[b-wfwi7t3wrt] {
    font-weight: 600;
    color: #1e293b;
}

.status-text[b-wfwi7t3wrt] {
    font-weight: 600;
    font-size: 0.875rem;
}

.status-text.status-active[b-wfwi7t3wrt] { color: #16a34a; }
.status-text.status-completed[b-wfwi7t3wrt] { color: #2563eb; }
.status-text.status-draft[b-wfwi7t3wrt] { color: #64748b; }

@media (max-width: 768px) {
    .projects-table th[b-wfwi7t3wrt],
    .projects-table td[b-wfwi7t3wrt] {
        padding: 0.75rem 0.875rem;
    }
}
/* /Components/Shared/RaiseVariationDialog.razor.rz.scp.css */
/* A refusal about the whole form, read before the fields it is about. The app's error treatment lives
   in two page stylesheets rather than app.css, and scoped CSS does not cross components, so it is
   stated here. */
.raise-error[b-ftsds2qaoi] {
    color: #b91c1c;
    background: #fee2e2;
    border-radius: 6px;
    padding: 0.6rem 0.8rem;
    margin: 0 0 1.25rem;
    font-size: 0.875rem;
}
/* /Components/Shared/VariationFields.razor.rz.scp.css */
/* The space between one field and the next travels with the fields. It used to come from the page's
   own .av-form, so rendering them anywhere else stacked the labels against the box above. */
.variation-fields[b-v934q2c1dd] { display: flex; flex-direction: column; gap: 1.25rem; }

/* The fields' own styles. They moved here with the markup: Blazor scoped CSS does not cross component
   boundaries, so leaving them on AddVariation would have rendered this component unstyled wherever
   else it is used. */

.av-field[b-v934q2c1dd] { display: flex; flex-direction: column; gap: 0.4rem; }

.av-field label[b-v934q2c1dd] {
    font-size: 0.875rem;
    color: #334155;
    font-weight: 500;
}

.av-field .req[b-v934q2c1dd] { color: #dc2626; }

.form-input[b-v934q2c1dd] {
    width: 100%;
    padding: 0.7rem 0.9rem;
    border: 1px solid #d1d9e0;
    border-radius: 8px;
    font-family: inherit;   /* textareas default to monospace otherwise */
    font-size: 0.95rem;
    color: #1e293b;
    background: #fff;
    box-sizing: border-box;
}

.form-input:focus[b-v934q2c1dd] {
    outline: none;
    border-color: #79B7FE;
    box-shadow: 0 0 0 3px rgba(121, 183, 254, 0.15);
}

textarea.form-input[b-v934q2c1dd] { resize: vertical; min-height: 90px; }

.av-upload[b-v934q2c1dd] {
    width: 100%;
    padding: 1rem;
    border: none;
    border-radius: 10px;
    background: #d6e9ff;
    color: #1e293b;
    font-weight: 600;
    font-size: 0.95rem;
    cursor: pointer;
}

.av-upload:disabled[b-v934q2c1dd] {
    cursor: not-allowed;
    opacity: 0.6;
}

.av-file-list[b-v934q2c1dd] {
    margin: 0.5rem 0 0;
    padding-left: 1.1rem;
    font-size: 0.8125rem;
    color: #475569;
}

.av-upload-note[b-v934q2c1dd] {
    font-size: 0.8125rem;
    color: #94a3b8;
    margin: 0.5rem 0 0;
}

/* .status-message is global; only the error colour is each component's own, as elsewhere. */
.status-error[b-v934q2c1dd] { color: #dc2626; }
