/* /Components/Layout/AuthLayout.razor.rz.scp.css */
.auth-page[b-ruksuaxati] {
    min-height: 100vh;
    background: #F2E8D8;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px 24px;
    font-family: var(--font-sans);
}

.auth-card[b-ruksuaxati] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    width: 100%;
    max-width: 880px;
    min-height: 520px;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 8px 40px rgba(80, 40, 10, 0.14), 0 2px 8px rgba(80, 40, 10, 0.08);
}

.auth-left[b-ruksuaxati] {
    background: #C06820;
    padding: 52px 48px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.auth-brand[b-ruksuaxati] {
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.6);
    font-weight: 500;
}

.auth-left-mid[b-ruksuaxati] {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 36px 0 28px;
}

.auth-tagline[b-ruksuaxati] {
    display: flex;
    flex-direction: column;
    margin-bottom: 20px;
    max-width: 230px;
}

.auth-tagline-main[b-ruksuaxati] {
    font-family: var(--font-serif);
    font-size: 36px;
    font-weight: 700;
    color: #FFFFFF;
    line-height: 1.1;
    letter-spacing: -0.01em;
}

.auth-tagline-accent[b-ruksuaxati] {
    font-family: var(--font-serif);
    font-size: 36px;
    font-weight: 400;
    font-style: italic;
    color: #FFE0BC;
    line-height: 1.1;
    letter-spacing: -0.01em;
}

.auth-subtitle[b-ruksuaxati] {
    font-size: 13px;
    font-weight: 300;
    color: rgba(255, 255, 255, 0.6);
    line-height: 1.65;
    max-width: 200px;
    margin: 0;
}

.auth-right[b-ruksuaxati] {
    background: #FFFFFF;
    padding: 52px 56px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.auth-form-container[b-ruksuaxati] {
    width: 100%;
    max-width: 300px;
}

@media (max-width: 720px) {
    .auth-card[b-ruksuaxati] {
        grid-template-columns: 1fr;
        min-height: auto;
    }

    .auth-left[b-ruksuaxati] {
        padding: 36px 32px;
        min-height: 220px;
    }

    .auth-tagline-main[b-ruksuaxati],
    .auth-tagline-accent[b-ruksuaxati] {
        font-size: 28px;
    }

    .auth-tagline[b-ruksuaxati] {
        max-width: none;
    }

    .auth-right[b-ruksuaxati] {
        padding: 40px 32px;
    }

    .auth-form-container[b-ruksuaxati] {
        max-width: none;
    }
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
/* Old accent color across the app was #C17F4E */

.evie-header[b-5ox7trjgpl] {
    position: sticky;
    top: 0;
    z-index: 30;
    height: 56px;
    background-color: #C06820;
}

.evie-header-inner[b-5ox7trjgpl] {
    /*max-width: 1536px;*/
    margin: 0 auto;
    padding: 0 1.5rem;
    height: 100%;
    display: flex;
    align-items: center;
    gap: 1.5rem;
}

.evie-brand[b-5ox7trjgpl] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    text-decoration: none;
}

.evie-brand-icon[b-5ox7trjgpl] {
    width: 28px;
    height: 28px;
    background-color: rgba(255, 255, 255, 0.2);
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: 0.875rem;
    color: #FFFFFF;
}

.evie-brand-text[b-5ox7trjgpl] {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 400;
    letter-spacing: 0.15em;
    color: #FFFFFF;
}

/* The nav's own styles moved to ModuleNav.razor.css with its markup — scoped CSS
   belongs to the file that writes the element, so leaving them here would silently
   stop matching. */

.evie-header-actions[b-5ox7trjgpl] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: 1rem;
}

.evie-header-icon[b-5ox7trjgpl] {
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: none;
    background: transparent;
    color: rgba(255, 255, 255, 0.85);
    border-radius: 50%;
    cursor: pointer;
    text-decoration: none;
    transition: background-color 150ms, color 150ms;
}

.evie-header-icon:hover[b-5ox7trjgpl] {
    background-color: rgba(255, 255, 255, 0.1);
    color: #FFFFFF;
}

.evie-main[b-5ox7trjgpl] {
    padding-top: 2rem;
    padding-bottom: 3.5rem;
    min-height: calc(100vh - 56px);
}

.evie-content[b-5ox7trjgpl] {
    min-width: fit-content;
    margin: 0 auto;
    padding: 0 2rem;
    /*justify-self: center;*/
}

@media (min-width: 1280px) {
    .evie-content[b-5ox7trjgpl] {
        padding: 0 3rem;
    }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-pxyvn3r6mx],
.components-reconnect-repeated-attempt-visible[b-pxyvn3r6mx],
.components-reconnect-failed-visible[b-pxyvn3r6mx],
.components-pause-visible[b-pxyvn3r6mx],
.components-resume-failed-visible[b-pxyvn3r6mx],
.components-rejoining-animation[b-pxyvn3r6mx] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-pxyvn3r6mx],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-pxyvn3r6mx],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-pxyvn3r6mx],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-pxyvn3r6mx],
#components-reconnect-modal.components-reconnect-retrying[b-pxyvn3r6mx],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-pxyvn3r6mx],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-pxyvn3r6mx],
#components-reconnect-modal.components-reconnect-failed[b-pxyvn3r6mx],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-pxyvn3r6mx] {
    display: block;
}

#components-reconnect-modal[b-pxyvn3r6mx] {
    background-color: var(--evie-surface);
    color: var(--evie-text);
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 1px solid var(--evie-border);
    border-radius: 0.75rem;
    box-shadow: 0 10px 15px -3px 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-pxyvn3r6mx 0.5s both;
}

#components-reconnect-modal[open][b-pxyvn3r6mx] {
    animation: components-reconnect-modal-slideUp-b-pxyvn3r6mx 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s,
               components-reconnect-modal-fadeInOpacity-b-pxyvn3r6mx 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

#components-reconnect-modal[b-pxyvn3r6mx]::backdrop {
    background-color: rgba(0, 0, 0, 0.5);
    animation: components-reconnect-modal-fadeInOpacity-b-pxyvn3r6mx 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-pxyvn3r6mx {
    0% { transform: translateY(30px) scale(0.95); }
    100% { transform: translateY(0); }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-pxyvn3r6mx {
    0% { opacity: 0; }
    100% { opacity: 1; }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-pxyvn3r6mx {
    0% { opacity: 1; }
    100% { opacity: 0; }
}

.components-reconnect-container[b-pxyvn3r6mx] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-pxyvn3r6mx] {
    margin: 0;
    text-align: center;
    font-size: 0.875rem;
    color: var(--evie-text-muted);
}

#components-reconnect-modal button[b-pxyvn3r6mx] {
    border: 0;
    background-color: var(--evie-primary);
    color: white;
    padding: 0.5rem 1.5rem;
    border-radius: 0.5rem;
    font-weight: 500;
    font-size: 0.875rem;
    cursor: pointer;
    transition: background-color 150ms;
}

#components-reconnect-modal button:hover[b-pxyvn3r6mx] {
    background-color: var(--evie-primary-hover);
}

.components-rejoining-animation[b-pxyvn3r6mx] {
    position: relative;
    width: 80px;
    height: 80px;
}

.components-rejoining-animation div[b-pxyvn3r6mx] {
    position: absolute;
    border: 3px solid var(--evie-primary);
    opacity: 1;
    border-radius: 50%;
    animation: components-rejoining-animation-b-pxyvn3r6mx 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
}

.components-rejoining-animation div:nth-child(2)[b-pxyvn3r6mx] {
    animation-delay: -0.5s;
}

@keyframes components-rejoining-animation-b-pxyvn3r6mx {
    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: 0; left: 0; width: 80px; height: 80px; opacity: 0; }
}
/* /Components/Pages/AccessDenied.razor.rz.scp.css */
.denied-content[b-4prx8uc9lu] {
    text-align: center;
}

.denied-title[b-4prx8uc9lu] {
    font-family: var(--font-serif);
    font-size: 1.5rem;
    font-weight: 500;
    color: #1A1A1A;
    margin-bottom: 0.75rem;
}

.denied-message[b-4prx8uc9lu] {
    font-size: 0.9375rem;
    color: #6B6B6B;
    margin-bottom: 1.5rem;
}
/* /Components/Pages/ApMatching/Admin/MlDashboard.razor.rz.scp.css */
.summary-grid[b-gp6qpqg6qv] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.summary-card[b-gp6qpqg6qv] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    padding: 1.25rem;
}

.summary-label[b-gp6qpqg6qv] {
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--evie-text-dim);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.summary-value[b-gp6qpqg6qv] {
    font-size: 1.75rem;
    font-weight: 500;
    color: var(--evie-text);
    font-family: var(--evie-font-mono);
}

.summary-pending[b-gp6qpqg6qv] {
    color: var(--evie-amber);
}

.section-title[b-gp6qpqg6qv] {
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--evie-text);
    margin-bottom: 0.75rem;
}

.hint-stats[b-gp6qpqg6qv] {
    display: flex;
    gap: 1.5rem;
}

.hint-stat[b-gp6qpqg6qv] {
    font-size: 0.8125rem;
    color: var(--evie-text-muted);
}

.hint-type-badge[b-gp6qpqg6qv] {
    display: inline-block;
    padding: 0.125rem 0.5rem;
    border-radius: 0.25rem;
    font-size: 0.6875rem;
    font-weight: 500;
    color: var(--evie-text-dim);
    background: rgba(100, 116, 139, 0.1);
}

.hint-value-cell[b-gp6qpqg6qv] {
    max-width: 20rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.action-buttons[b-gp6qpqg6qv] {
    display: flex;
    gap: 0.375rem;
}

.btn-xs[b-gp6qpqg6qv] {
    padding: 0.1875rem 0.5rem;
    font-size: 0.6875rem;
}

.btn-approve[b-gp6qpqg6qv] {
    color: var(--evie-teal);
    border-color: rgba(45, 212, 191, 0.3);
    background: rgba(45, 212, 191, 0.1);
}

.btn-approve:hover[b-gp6qpqg6qv] {
    background: rgba(45, 212, 191, 0.2);
}

.btn-reject-hint[b-gp6qpqg6qv] {
    color: var(--evie-coral);
    border-color: rgba(248, 113, 113, 0.3);
}

.btn-reject-hint:hover[b-gp6qpqg6qv] {
    background: rgba(248, 113, 113, 0.1);
}

.confidence-indicator[b-gp6qpqg6qv] {
    font-size: 0.6875rem;
    font-weight: 500;
    padding: 0.125rem 0.375rem;
    border-radius: 0.25rem;
}

.confidence-high[b-gp6qpqg6qv] { color: var(--evie-teal); background: rgba(45, 212, 191, 0.1); }
.confidence-medium[b-gp6qpqg6qv] { color: var(--evie-amber); background: rgba(251, 191, 36, 0.1); }
.confidence-low[b-gp6qpqg6qv] { color: var(--evie-coral); background: rgba(248, 113, 113, 0.1); }

.category-badge[b-gp6qpqg6qv] {
    display: inline-block;
    padding: 0.125rem 0.375rem;
    border-radius: 0.25rem;
    font-size: 0.6875rem;
    font-weight: 500;
}

.category-formatting[b-gp6qpqg6qv] { color: var(--evie-text-dim); background: rgba(100, 116, 139, 0.1); }
.category-extra[b-gp6qpqg6qv] { color: var(--evie-amber); background: rgba(251, 191, 36, 0.1); }
.category-missing[b-gp6qpqg6qv] { color: var(--evie-coral); background: rgba(248, 113, 113, 0.1); }
.category-wrongvalue[b-gp6qpqg6qv] { color: var(--evie-coral); background: rgba(248, 113, 113, 0.15); }

.correction-value[b-gp6qpqg6qv] {
    max-width: 12rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-family: var(--evie-font-mono);
    font-size: 0.75rem;
}.data-table th[b-gp6qpqg6qv] { text-align: left; font-size: 0.75rem; font-weight: 500; color: var(--evie-text-dim); text-transform: uppercase; letter-spacing: 0.05em; padding: 0.625rem 1rem; border-bottom: 1px solid var(--evie-border); }
.data-table td[b-gp6qpqg6qv] { padding: 0.75rem 1rem; font-size: 0.8125rem; color: var(--evie-text-muted); border-bottom: 1px solid rgba(50, 55, 72, 0.5); }
.data-table tr:last-child td[b-gp6qpqg6qv] { border-bottom: none; }
.data-table tr:hover td[b-gp6qpqg6qv] { background-color: var(--evie-surface); }

.loading-state[b-gp6qpqg6qv] { display: flex; align-items: center; justify-content: center; gap: 0.625rem; padding: 2rem; font-size: 0.875rem; color: var(--evie-text-dim); }
/* /Components/Pages/ApMatching/Approval.razor.rz.scp.css */
/* Approval queue. Table cell styling comes from the global .data-table
   rules in evie.css; only page-local bits live here. */

.loading-state[b-q5a6nlix50], .error-state[b-q5a6nlix50] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    padding: 2rem;
    font-size: 0.875rem;
}

.loading-state[b-q5a6nlix50] {
    color: var(--evie-text-dim);
}

.error-state[b-q5a6nlix50] {
    color: var(--evie-coral);
}

.btn-sm[b-q5a6nlix50] {
    padding: 0.25rem 0.625rem;
    font-size: 0.75rem;
}
/* /Components/Pages/ApMatching/DropBox.razor.rz.scp.css */
.dropbox-list-card[b-zy57q6da9j] {
    margin-top: 0;
}

/* Upload toast (bottom-right): batch feedback in one compact card so a big
   upload never pushes the page content down. Colorless while working (pending
   has no color); coral only for genuine failures. */

.upload-toast[b-zy57q6da9j] {
    position: fixed;
    right: 1.25rem;
    bottom: 1.25rem;
    z-index: 80;
    width: 22rem;
    max-width: calc(100vw - 2.5rem);
    background-color: var(--evie-card);
    border: 1px solid var(--evie-border);
    border-radius: 0.625rem;
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.4);
    font-size: 0.8125rem;
    overflow: hidden;
}

.upload-toast-head[b-zy57q6da9j] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 0.75rem;
    cursor: pointer;
    user-select: none;
}

.upload-toast-title[b-zy57q6da9j] {
    flex: 1;
    font-weight: 500;
    color: var(--evie-text);
}

.upload-toast-failed[b-zy57q6da9j] {
    color: var(--evie-coral);
    font-size: 0.75rem;
}

.upload-toast-chevron[b-zy57q6da9j] {
    color: var(--evie-text-dim);
    font-size: 0.7rem;
}

.upload-toast-close[b-zy57q6da9j] {
    background: none;
    border: none;
    padding: 0 0.125rem;
    color: var(--evie-text-dim);
    font-size: 1rem;
    line-height: 1;
    cursor: pointer;
}

.upload-toast-close:hover[b-zy57q6da9j] {
    color: var(--evie-text);
}

.upload-toast-body[b-zy57q6da9j] {
    max-height: 16rem;
    overflow-y: auto;
    border-top: 1px solid var(--evie-border);
    padding: 0.375rem 0;
}

.upload-toast-row[b-zy57q6da9j] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.25rem 0.75rem;
    color: var(--evie-text-muted);
}

.upload-toast-file[b-zy57q6da9j] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.upload-toast-msg[b-zy57q6da9j] {
    flex-shrink: 0;
    font-size: 0.6875rem;
    color: var(--evie-text-dim);
}

.upload-toast-row-error[b-zy57q6da9j],
.upload-toast-row-error .upload-toast-msg[b-zy57q6da9j] {
    color: var(--evie-coral);
}

.upload-spinner[b-zy57q6da9j] {
    display: inline-block;
    font-size: 1rem;
}

/* Full-page drop overlay: shown while a file drag is over the page. The big
   top area classifies automatically; the bottom row forces the document type.
   Always in the DOM — inactive is invisible and inert so the zones' JS drop
   handlers are wired before the first drag. */

.intake-drop-overlay[b-zy57q6da9j] {
    position: fixed;
    inset: 0;
    z-index: 70; /* under the upload toast (80) */
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
    padding: 1.25rem;
    background-color: color-mix(in srgb, var(--evie-bg) 78%, transparent);
    backdrop-filter: blur(2px);
    opacity: 0;
    pointer-events: none;
    transition: opacity 120ms ease;
}

.intake-drop-overlay-active[b-zy57q6da9j] {
    opacity: 1;
    pointer-events: auto;
}

.intake-drop-zone[b-zy57q6da9j] {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;
    border: 2px dashed var(--evie-border);
    border-radius: 0.75rem;
    background-color: color-mix(in srgb, var(--evie-card) 82%, transparent);
    text-align: center;
    padding: 1rem;
}

.intake-drop-auto[b-zy57q6da9j] {
    flex: 1;
}

.intake-drop-typed[b-zy57q6da9j] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.875rem;
    height: 34%;
    min-height: 10rem;
}

.intake-drop-zone-title[b-zy57q6da9j] {
    font-size: 1.0625rem;
    font-weight: 500;
    color: var(--evie-text);
}

.intake-drop-zone-hint[b-zy57q6da9j] {
    font-size: 0.8125rem;
    color: var(--evie-text-dim);
}

/* Toggled by dropzone-interop initZone while a drag hovers the zone
   (CSS :hover does not apply during HTML5 drags). */
.intake-drop-zone.drag-hover[b-zy57q6da9j] {
    border-color: var(--evie-primary);
    background-color: color-mix(in srgb, var(--evie-primary) 10%, var(--evie-card));
}

/* Visually hidden, not display:none (same pattern as DropZone) — the JS drop
   handler assigns files and dispatches change on it. ::deep because InputFile
   is a child component, so its <input> lacks the scoped-CSS attribute. */
.intake-drop-zone[b-zy57q6da9j]  .intake-drop-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Loading state */

.dropbox-loading[b-zy57q6da9j] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    padding: 2rem;
    color: var(--evie-text-dim);
    font-size: 0.875rem;
}

/* Document table */

.dropbox-table[b-zy57q6da9j] {
    width: 100%;
    border-collapse: collapse;
}

.dropbox-table th[b-zy57q6da9j] {
    text-align: left;
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--evie-text-dim);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.625rem 1rem;
    border-bottom: 1px solid var(--evie-border);
}

.dropbox-table td[b-zy57q6da9j] {
    padding: 0.75rem 1rem;
    font-size: 0.8125rem;
    color: var(--evie-text-muted);
    border-bottom: 1px solid rgba(50, 55, 72, 0.5);
}

.dropbox-table tr:last-child td[b-zy57q6da9j] {
    border-bottom: none;
}

.dropbox-table tr:hover td[b-zy57q6da9j] {
    background-color: var(--evie-surface);
}

.dropbox-filename[b-zy57q6da9j] {
    color: var(--evie-text);
    font-weight: 500;
}

/* Badge dim for "uploaded" pending state */

[b-zy57q6da9j] .badge-dim {
    background-color: rgba(110, 115, 136, 0.15);
    color: var(--evie-text-dim);
}

/* Error states */

.dropbox-error[b-zy57q6da9j] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 2rem;
    color: var(--evie-coral);
    font-size: 0.875rem;
}

.view-error-msg[b-zy57q6da9j] {
    display: block;
    color: var(--evie-coral);
    font-size: 0.6875rem;
    margin-top: 0.25rem;
}

/* Small button variant */

.btn-sm[b-zy57q6da9j] {
    padding: 0.25rem 0.625rem;
    font-size: 0.75rem;
}
/* /Components/Pages/ApMatching/Index.razor.rz.scp.css */
.page-title[b-dvowe3xq02] {
    font-family: var(--font-serif);
    font-size: 1.5rem;
    font-weight: 500;
    color: #1A1A1A;
    margin-bottom: 1.5rem;
}

.section-grid[b-dvowe3xq02] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}

@media (min-width: 640px) {
    .section-grid[b-dvowe3xq02] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .section-grid[b-dvowe3xq02] {
        grid-template-columns: repeat(3, 1fr);
    }
}

.section-card[b-dvowe3xq02] {
    display: block;
    background-color: #FFFFFF;
    border: 1px solid #E5E5E5;
    border-radius: 0.75rem;
    padding: 1.25rem;
    text-decoration: none;
    transition: all 200ms ease-out;
}

.section-card:hover[b-dvowe3xq02] {
    border-color: #C06820;
    box-shadow: 0 0 0 1px #C06820;
}

.section-card-title[b-dvowe3xq02] {
    font-size: 0.9375rem;
    font-weight: 600;
    color: #1A1A1A;
    margin: 0 0 0.375rem 0;
}

.section-card-desc[b-dvowe3xq02] {
    font-size: 0.8125rem;
    color: #6B6B6B;
    margin: 0;
    line-height: 1.5;
}

.count-line[b-dvowe3xq02] {
    color: #6B6B6B;
}
/* /Components/Pages/ApMatching/Invoices.razor.rz.scp.css */
.data-table th[b-yvkq4ppnkb] {
    text-align: left;
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--evie-text-dim);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.625rem 1rem;
    border-bottom: 1px solid var(--evie-border);
}

.data-table td[b-yvkq4ppnkb] {
    padding: 0.75rem 1rem;
    font-size: 0.8125rem;
    color: var(--evie-text-muted);
    border-bottom: 1px solid rgba(50, 55, 72, 0.5);
}

.data-table tr:last-child td[b-yvkq4ppnkb] {
    border-bottom: none;
}

.data-table tr:hover td[b-yvkq4ppnkb] {
    background-color: var(--evie-surface);
}

.col-money[b-yvkq4ppnkb] {
    text-align: right;
}
/* Loading / error states */

.loading-state[b-yvkq4ppnkb], .error-state[b-yvkq4ppnkb] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    padding: 2rem;
    font-size: 0.875rem;
}

.loading-state[b-yvkq4ppnkb] {
    color: var(--evie-text-dim);
}

.error-state[b-yvkq4ppnkb] {
    color: var(--evie-coral);
}

/* Match results */

.match-results-cell[b-yvkq4ppnkb] {
    padding: 0 1rem 1rem 1rem !important;
    background-color: var(--evie-surface) !important;
}

.match-no-results[b-yvkq4ppnkb] {
    padding: 0.75rem;
    color: var(--evie-text-dim);
    font-size: 0.8125rem;
}

.match-candidates[b-yvkq4ppnkb] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.match-candidates-header[b-yvkq4ppnkb] {
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--evie-text-dim);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.5rem 0;
}

.match-candidate[b-yvkq4ppnkb] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    padding: 0.625rem 0.75rem;
    border: 1px solid var(--evie-border);
    border-radius: 0.5rem;
    background-color: var(--evie-card);
}

.match-candidate-info[b-yvkq4ppnkb] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex: 1;
    min-width: 200px;
}

.match-vendor[b-yvkq4ppnkb], .match-po[b-yvkq4ppnkb] {
    font-size: 0.75rem;
    color: var(--evie-text-dim);
}

.match-candidate-score[b-yvkq4ppnkb] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
}

.match-candidate-reasons[b-yvkq4ppnkb] {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
}

.match-reason[b-yvkq4ppnkb] {
    font-size: 0.6875rem;
    color: var(--evie-text-dim);
    padding: 0.125rem 0.5rem;
    background-color: rgba(110, 115, 136, 0.1);
    border-radius: 0.25rem;
}

/* Small button */

.btn-sm[b-yvkq4ppnkb] {
    padding: 0.25rem 0.625rem;
    font-size: 0.75rem;
}
/* /Components/Pages/ApMatching/PackageDetail.razor.rz.scp.css */
.page-header[b-y11efi7akv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1.5rem;
}

.detail-section[b-y11efi7akv] {
    margin-bottom: 1rem;
}

.section-title[b-y11efi7akv] {
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--evie-text);
    margin-bottom: 0.75rem;
}

.status-row[b-y11efi7akv] {
    display: flex;
    gap: 0.75rem;
    align-items: center;
}

.status-badge[b-y11efi7akv] {
    display: inline-block;
    padding: 0.25rem 0.75rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 500;
}

.status-pending[b-y11efi7akv] { color: var(--evie-text-dim); background: rgba(100, 116, 139, 0.1); }
.status-verified[b-y11efi7akv] { color: var(--evie-indigo); background: rgba(99, 102, 241, 0.1); }
.status-approved[b-y11efi7akv] { color: var(--evie-teal); background: rgba(45, 212, 191, 0.1); }
.status-entered[b-y11efi7akv] { color: var(--evie-teal); background: rgba(45, 212, 191, 0.15); }

.hint-text[b-y11efi7akv] {
    font-size: 0.8125rem;
    color: var(--evie-text-dim);
    margin-bottom: 1rem;
}

.field-grid[b-y11efi7akv] {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.field-row[b-y11efi7akv] {
    display: grid;
    grid-template-columns: 10rem 1fr auto;
    gap: 0.75rem;
    align-items: center;
}

.field-label[b-y11efi7akv] {
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--evie-text-muted);
}

.field-input-group[b-y11efi7akv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.field-input[b-y11efi7akv] {
    flex: 1;
    padding: 0.375rem 0.625rem;
    background: var(--evie-surface);
    border: 1px solid var(--evie-border);
    border-radius: 0.375rem;
    color: var(--evie-text);
    font-size: 0.8125rem;
}

.field-input:focus[b-y11efi7akv] {
    outline: none;
    border-color: var(--evie-indigo);
    box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.15);
}

.field-modified[b-y11efi7akv] {
    border-color: var(--evie-amber) !important;
    background: rgba(251, 191, 36, 0.05);
}

.confidence-indicator[b-y11efi7akv] {
    font-size: 0.6875rem;
    font-weight: 500;
    padding: 0.125rem 0.375rem;
    border-radius: 0.25rem;
    white-space: nowrap;
}

.confidence-badge[b-y11efi7akv] {
    font-size: 0.75rem;
    font-weight: 500;
    padding: 0.125rem 0.5rem;
    border-radius: 0.25rem;
}

.confidence-high[b-y11efi7akv] { color: var(--evie-teal); background: rgba(45, 212, 191, 0.1); }
.confidence-medium[b-y11efi7akv] { color: var(--evie-amber); background: rgba(251, 191, 36, 0.1); }
.confidence-low[b-y11efi7akv] { color: var(--evie-coral); background: rgba(248, 113, 113, 0.1); }

.original-value[b-y11efi7akv] {
    font-size: 0.6875rem;
    color: var(--evie-text-dim);
    font-style: italic;
}

.action-bar[b-y11efi7akv] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--evie-border);
}

.save-message[b-y11efi7akv] {
    font-size: 0.8125rem;
}

.success-state[b-y11efi7akv] {
    color: var(--evie-teal);
}
.mono[b-y11efi7akv] {
    font-family: var(--evie-font-mono);
}
.data-table th[b-y11efi7akv] { text-align: left; font-size: 0.75rem; font-weight: 500; color: var(--evie-text-dim); text-transform: uppercase; letter-spacing: 0.05em; padding: 0.625rem 1rem; border-bottom: 1px solid var(--evie-border); }
.data-table td[b-y11efi7akv] { padding: 0.75rem 1rem; font-size: 0.8125rem; color: var(--evie-text-muted); border-bottom: 1px solid rgba(50, 55, 72, 0.5); }
.data-table tr:last-child td[b-y11efi7akv] { border-bottom: none; }

.loading-state[b-y11efi7akv], .error-state[b-y11efi7akv] { display: flex; align-items: center; justify-content: center; gap: 0.625rem; padding: 2rem; font-size: 0.875rem; }
.loading-state[b-y11efi7akv] { color: var(--evie-text-dim); }
.error-state[b-y11efi7akv] { color: var(--evie-coral); }
.btn-sm[b-y11efi7akv] { padding: 0.25rem 0.625rem; font-size: 0.75rem; }

.validation-header[b-y11efi7akv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}

.validation-all-passed[b-y11efi7akv] {
    font-size: 0.8125rem;
    color: var(--evie-text-dim);
}

.validation-list[b-y11efi7akv] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.validation-row[b-y11efi7akv] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
}

.validation-severity[b-y11efi7akv] {
    display: inline-block;
    padding: 0.125rem 0.5rem;
    border-radius: 0.25rem;
    font-size: 0.6875rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    white-space: nowrap;
    margin-top: 0.0625rem;
}

.validation-critical[b-y11efi7akv] { color: var(--evie-coral); background: rgba(248, 113, 113, 0.12); }
.validation-warning[b-y11efi7akv] { color: var(--evie-amber); background: rgba(251, 191, 36, 0.1); }

.validation-body[b-y11efi7akv] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.validation-message[b-y11efi7akv] {
    font-size: 0.8125rem;
    color: var(--evie-text-muted);
}

.validation-values[b-y11efi7akv] {
    font-size: 0.75rem;
    color: var(--evie-text-dim);
}

.alias-prompt[b-y11efi7akv] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.875rem;
    padding: 0.625rem 0.75rem;
    border: 1px solid var(--evie-border);
    border-radius: 0.375rem;
    background: var(--evie-surface);
}

.alias-prompt-text[b-y11efi7akv] {
    font-size: 0.8125rem;
    color: var(--evie-text-muted);
}

.gl-suggestion[b-y11efi7akv] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.625rem 0.75rem;
    margin-bottom: 0.875rem;
    border: 1px solid var(--evie-border);
    border-radius: 0.375rem;
    background: var(--evie-surface);
}

.gl-suggestion-text[b-y11efi7akv] {
    font-size: 0.8125rem;
    color: var(--evie-text-muted);
}

.gl-select-row[b-y11efi7akv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.gl-select[b-y11efi7akv] {
    max-width: 28rem;
}
/* /Components/Pages/ApMatching/Packages.razor.rz.scp.css */
/* Verification queue. Table cell styling comes from the global .data-table
   rules in evie.css; only page-local bits live here. */

.loading-state[b-wo6nc6cogm], .error-state[b-wo6nc6cogm] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    padding: 2rem;
    font-size: 0.875rem;
}

.loading-state[b-wo6nc6cogm] {
    color: var(--evie-text-dim);
}

.error-state[b-wo6nc6cogm] {
    color: var(--evie-coral);
}

.btn-sm[b-wo6nc6cogm] {
    padding: 0.25rem 0.625rem;
    font-size: 0.75rem;
}

/* Background enrichment still running: the row is visible but not actionable.
   Deliberately colorless (pending has no color) — just dimmed with a quiet
   spinner until the worker settles it. */
.queue-row-processing[b-wo6nc6cogm] {
    opacity: 0.55;
    cursor: default;
}

.queue-processing-pill[b-wo6nc6cogm] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    background: color-mix(in srgb, var(--evie-text-dim) 12%, transparent);
    color: var(--evie-text-dim);
}

.queue-processing-spin[b-wo6nc6cogm] {
    display: inline-block;
    font-size: 0.7rem;
    line-height: 1;
}

/* Failed enrichment: the error + actions ride directly under the disabled row.
   Coral is warranted here — a genuine issue, not a pending state. */
.queue-error-row td[b-wo6nc6cogm] {
    padding-top: 0;
    border-top: none;
}

.queue-error-line[b-wo6nc6cogm] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.queue-error-text[b-wo6nc6cogm] {
    color: var(--evie-error);
    font-size: 0.8125rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.queue-error-actions[b-wo6nc6cogm] {
    display: inline-flex;
    gap: 0.5rem;
    flex-shrink: 0;
}

.queue-unpackage-confirm[b-wo6nc6cogm] {
    color: var(--evie-error);
    border-color: var(--evie-error);
}
/* /Components/Pages/ApMatching/PackingSlips.razor.rz.scp.css */
.data-table th[b-ho77xeu8vr] {
    text-align: left;
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--evie-text-dim);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.625rem 1rem;
    border-bottom: 1px solid var(--evie-border);
}

.data-table td[b-ho77xeu8vr] {
    padding: 0.75rem 1rem;
    font-size: 0.8125rem;
    color: var(--evie-text-muted);
    border-bottom: 1px solid rgba(50, 55, 72, 0.5);
}

.data-table tr:last-child td[b-ho77xeu8vr] {
    border-bottom: none;
}

.data-table tr:hover td[b-ho77xeu8vr] {
    background-color: var(--evie-surface);
}
/* Loading / error states */

.loading-state[b-ho77xeu8vr], .error-state[b-ho77xeu8vr] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    padding: 2rem;
    font-size: 0.875rem;
}

.loading-state[b-ho77xeu8vr] {
    color: var(--evie-text-dim);
}

.error-state[b-ho77xeu8vr] {
    color: var(--evie-coral);
}

.btn-sm[b-ho77xeu8vr] {
    padding: 0.25rem 0.625rem;
    font-size: 0.75rem;
}
/* /Components/Pages/ApMatching/Payment.razor.rz.scp.css */
/* Table cells come from the shared .ap-queue-tbl rules in evie.css. */
.batch-actions[b-8cdywee356] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--evie-border);
}

.batch-status[b-8cdywee356] {
    color: var(--evie-text-dim);
    font-size: 0.8125rem;
}

.btn-stamp[b-8cdywee356] {
    background-color: rgba(99, 102, 241, 0.15);
    color: var(--evie-indigo);
    border: 1px solid rgba(99, 102, 241, 0.3);
}

.btn-stamp:hover[b-8cdywee356] {
    background-color: rgba(99, 102, 241, 0.25);
}
.loading-state[b-8cdywee356], .error-state[b-8cdywee356] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    padding: 2rem;
    font-size: 0.875rem;
}

.loading-state[b-8cdywee356] {
    color: var(--evie-text-dim);
}

.error-state[b-8cdywee356] {
    color: var(--evie-coral);
}

.btn-sm[b-8cdywee356] {
    padding: 0.25rem 0.625rem;
    font-size: 0.75rem;
}

/* Batch entry partial-failure strip */

.upload-results[b-8cdywee356] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.75rem 1rem 0;
}

.upload-result[b-8cdywee356] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.625rem 1rem;
    border-radius: 0.5rem;
    font-size: 0.8125rem;
}

.upload-result-error[b-8cdywee356] {
    background-color: var(--evie-coral-muted);
    color: var(--evie-coral);
}

.upload-result-filename[b-8cdywee356] {
    font-weight: 500;
}

.upload-result-message[b-8cdywee356] {
    font-size: 0.75rem;
}
/* /Components/Pages/ApMatching/Search.razor.rz.scp.css */
/* Filter bar */

.filter-card[b-jwrhkg8piw] {
    padding: 1.5rem;
    margin-bottom: 1.5rem;
}

.filter-grid[b-jwrhkg8piw] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr));
    gap: 1rem 1.25rem;
}

.filter-field[b-jwrhkg8piw] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.filter-field label[b-jwrhkg8piw] {
    font-size: 0.6875rem;
    font-weight: 500;
    color: var(--evie-text-dim);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.filter-input[b-jwrhkg8piw] {
    background-color: var(--evie-surface);
    color: var(--evie-text);
    border: 1px solid var(--evie-border);
    border-radius: 0.375rem;
    padding: 0.4375rem 0.625rem;
    font-size: 0.8125rem;
    font-family: inherit;
}

.filter-input:focus[b-jwrhkg8piw] {
    outline: none;
    border-color: var(--evie-indigo);
}

.filter-input:disabled[b-jwrhkg8piw] {
    opacity: 0.5;
}

.filter-statuses[b-jwrhkg8piw] {
    grid-column: 1 / -1;
}

.status-checks[b-jwrhkg8piw] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1.25rem;
}

.status-check[b-jwrhkg8piw] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    font-size: 0.8125rem;
    color: var(--evie-text-muted);
    cursor: pointer;
}

.filter-actions[b-jwrhkg8piw] {
    display: flex;
    gap: 0.625rem;
    margin-top: 1.25rem;
}

/* Sum line */

.sum-line[b-jwrhkg8piw] {
    padding: 0.625rem 1rem 1rem;
    font-size: 0.875rem;
    color: var(--evie-text-muted);
    border-bottom: 1px solid var(--evie-border);
}

.sum-amount[b-jwrhkg8piw] {
    color: var(--evie-text);
}

/* Results table */

.data-table th[b-jwrhkg8piw] {
    text-align: left;
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--evie-text-dim);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.625rem 1rem;
    border-bottom: 1px solid var(--evie-border);
}

.data-table td[b-jwrhkg8piw] {
    padding: 0.75rem 1rem;
    font-size: 0.8125rem;
    color: var(--evie-text-muted);
    border-bottom: 1px solid rgba(50, 55, 72, 0.5);
}

.data-table tr:last-child td[b-jwrhkg8piw] {
    border-bottom: none;
}

.data-table tr:hover td[b-jwrhkg8piw] {
    background-color: var(--evie-surface);
}

.col-money[b-jwrhkg8piw] {
    text-align: right;
}

/* Pagination */

.pagination[b-jwrhkg8piw] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 1rem;
    border-top: 1px solid var(--evie-border);
}

.pagination-label[b-jwrhkg8piw] {
    font-size: 0.8125rem;
    color: var(--evie-text-dim);
}

/* Empty / prompt / loading / error states */

.search-prompt[b-jwrhkg8piw],
.search-empty[b-jwrhkg8piw] {
    padding: 2rem;
    margin: 0;
    text-align: center;
    font-size: 0.875rem;
    color: var(--evie-text-dim);
}

.loading-state[b-jwrhkg8piw],
.error-state[b-jwrhkg8piw] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    padding: 2rem;
    font-size: 0.875rem;
}

.loading-state[b-jwrhkg8piw] {
    color: var(--evie-text-dim);
}

.error-state[b-jwrhkg8piw] {
    color: var(--evie-coral);
}

.btn-sm[b-jwrhkg8piw] {
    padding: 0.25rem 0.625rem;
    font-size: 0.75rem;
}
/* /Components/Pages/ComingSoon.razor.rz.scp.css */
.coming-soon[b-tlyih8rhfh] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding-top: 6rem;
    gap: 0.75rem;
}

.coming-soon-title[b-tlyih8rhfh] {
    font-family: var(--font-serif);
    font-size: 1.5rem;
    font-weight: 500;
    color: #1A1A1A;
}

.coming-soon-desc[b-tlyih8rhfh] {
    font-size: 0.9375rem;
    color: #6B6B6B;
    max-width: 28rem;
    line-height: 1.625;
    margin: 0;
}

.coming-soon-badge[b-tlyih8rhfh] {
    display: inline-block;
    padding: 0.375rem 1rem;
    background-color: rgba(192, 104, 32, 0.1);
    color: #C06820;
    font-size: 0.6875rem;
    font-weight: 500;
    letter-spacing: 0.1em;
    border-radius: 9999px;
    margin-top: 0.5rem;
}

.coming-soon-link[b-tlyih8rhfh] {
    margin-top: 1.5rem;
}
/* /Components/Pages/Error.razor.rz.scp.css */
.error-content[b-3eiz8jm595] {
    text-align: center;
    padding-top: 4rem;
}

.error-title[b-3eiz8jm595] {
    font-size: 1rem;
    font-weight: 500;
    color: var(--evie-coral);
    margin-bottom: 0.75rem;
}

.error-message[b-3eiz8jm595] {
    font-size: 0.875rem;
    color: var(--evie-text-muted);
    margin-bottom: 0.5rem;
}

.error-request-id[b-3eiz8jm595] {
    font-size: 0.75rem;
    color: var(--evie-text-dim);
}

.error-request-id code[b-3eiz8jm595] {
    color: var(--evie-text-muted);
}
/* /Components/Pages/Home.razor.rz.scp.css */
.home-container[b-3sz7bb1pmt] {
    max-width: 900px;
    margin: 0 auto;
    padding-top: 4rem;
}

.home-greeting[b-3sz7bb1pmt] {
    text-align: center;
    margin-bottom: 3rem;
}

.home-greeting-label[b-3sz7bb1pmt] {
    display: block;
    font-size: 0.6875rem;
    font-weight: 500;
    letter-spacing: 0.2em;
    color: #9CA3AF;
    margin-bottom: 0.75rem;
}

.home-greeting-title[b-3sz7bb1pmt] {
    font-family: var(--font-serif);
    font-size: 2.5rem;
    font-weight: 400;
    color: #1A1A1A;
    margin: 0;
    line-height: 1.2;
}

.home-greeting-accent[b-3sz7bb1pmt] {
    font-style: italic;
    color: #C06820;
}

.module-grid[b-3sz7bb1pmt] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.5rem;
}

@media (max-width: 768px) {
    .home-container[b-3sz7bb1pmt] {
        padding-top: 2rem;
    }

    .home-greeting-title[b-3sz7bb1pmt] {
        font-size: 1.75rem;
    }

    .module-grid[b-3sz7bb1pmt] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Login.razor.rz.scp.css */
/* Auth form styles moved to wwwroot/css/evie.css so they apply to all
   pages that use AuthLayout (Login, ForgotPassword, ChangePassword, ResetPassword). */
/* /Components/Pages/NotFound.razor.rz.scp.css */
.not-found-content[b-itk6dgl7ju] {
    text-align: center;
    padding-top: 4rem;
}

.not-found-title[b-itk6dgl7ju] {
    font-size: 1rem;
    font-weight: 500;
    color: var(--evie-text);
    margin-bottom: 0.75rem;
}

.not-found-message[b-itk6dgl7ju] {
    font-size: 0.875rem;
    color: var(--evie-text-muted);
    margin-bottom: 1.5rem;
}
/* /Components/Pages/OrderEntry/HeldDocumentsSection.razor.rz.scp.css */
.held-section[b-uexw0gj28a] {
    margin-top: 1.5rem;
    padding: 1.25rem 1.5rem;
    border: 1px solid var(--ev-border, rgba(148, 163, 184, 0.18));
    border-radius: 0.75rem;
    background-color: var(--ev-surface-2, rgba(148, 163, 184, 0.04));
    /* Never take more than half the grid area: a long list scrolls internally
       instead of pushing the order grid above it into a collapse. */
    box-sizing: border-box;
    max-height: 50%;
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex-shrink: 0;
}

.held-header[b-uexw0gj28a] {
    margin-bottom: 1rem;
    flex-shrink: 0;
}

.held-title[b-uexw0gj28a] {
    margin: 0;
    font-size: 1rem;
    font-weight: 500;
    color: #1A1A1A;
}

.held-subtitle[b-uexw0gj28a] {
    margin: 0.25rem 0 0;
    font-size: 0.8125rem;
    color: #6B6B6B;
}

.held-list[b-uexw0gj28a] {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    overflow-y: auto;
    min-height: 0;
    flex: 1;
}

.held-list[b-uexw0gj28a]::-webkit-scrollbar {
    width: 4px;
}

.held-list[b-uexw0gj28a]::-webkit-scrollbar-track {
    background: transparent;
}

.held-list[b-uexw0gj28a]::-webkit-scrollbar-thumb {
    background-color: #E5E7EB;
    border-radius: 2px;
}

.held-list[b-uexw0gj28a]::-webkit-scrollbar-thumb:hover {
    background-color: #9CA3AF;
}

.held-card[b-uexw0gj28a] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 0.875rem;
    border: 1px solid var(--ev-border, rgba(148, 163, 184, 0.14));
    border-radius: 0.5rem;
    background-color: var(--ev-surface, rgba(148, 163, 184, 0.03));
    flex-shrink: 0;
}

.held-info[b-uexw0gj28a] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    min-width: 0;
}

.held-name[b-uexw0gj28a] {
    font-size: 0.875rem;
    font-weight: 500;
    color: #1A1A1A;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.held-meta[b-uexw0gj28a] {
    font-size: 0.75rem;
    color: #6B6B6B;
}

.held-meta strong[b-uexw0gj28a] {
    color: #1A1A1A;
    font-weight: 500;
}

/* Small kind tag at the start of the meta line. */
.held-tag[b-uexw0gj28a] {
    display: inline-block;
    padding: 0.0625rem 0.4rem;
    border-radius: 0.375rem;
    font-size: 0.6875rem;
    font-weight: 500;
}

.held-tag-duplicate[b-uexw0gj28a] {
    background-color: rgba(59, 130, 246, 0.12);
    color: #2563EB;
}

.held-tag-notpo[b-uexw0gj28a] {
    background-color: rgba(217, 119, 6, 0.12);
    color: #B45309;
}

.held-tag-error[b-uexw0gj28a] {
    background-color: rgba(220, 38, 38, 0.12);
    color: #DC2626;
}

/* Actions pinned to the right of each card. */
.held-actions[b-uexw0gj28a] {
    display: flex;
    gap: 0.5rem;
    margin-left: auto;
    flex-shrink: 0;
}

.held-btn[b-uexw0gj28a] {
    padding: 0.375rem 0.75rem;
    font-size: 0.75rem;
}

/* Document viewer / side-by-side compare — full-screen modal. */
.held-viewer-overlay[b-uexw0gj28a] {
    position: fixed;
    inset: 0;
    z-index: 10000;
    background-color: rgba(15, 23, 42, 0.72);
    display: flex;
    align-items: stretch;
    justify-content: stretch;
    padding: 0;
}

.held-viewer-panel[b-uexw0gj28a] {
    background-color: #FFFFFF;
    width: 100vw;
    height: 100vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.held-viewer-bar[b-uexw0gj28a] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.875rem 1.25rem;
    border-bottom: 1px solid #E5E5E5;
    background-color: #FFFFFF;
    flex-shrink: 0;
}

.held-viewer-heading[b-uexw0gj28a] {
    font-size: 1rem;
    font-weight: 500;
    color: #1A1A1A;
}

.held-viewer-close[b-uexw0gj28a] {
    border: 1px solid #E5E5E5;
    background: #FFFFFF;
    font-size: 0.875rem;
    line-height: 1;
    color: #6B6B6B;
    cursor: pointer;
    padding: 0.5rem 0.75rem;
    border-radius: 0.5rem;
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
}

.held-viewer-close:hover[b-uexw0gj28a] {
    background-color: #F1F5F9;
    color: #1A1A1A;
}

.held-viewer-body[b-uexw0gj28a] {
    flex: 1;
    min-height: 0;
    display: flex;
    gap: 1px;
    background-color: #E5E5E5;
}

.held-viewer-pane[b-uexw0gj28a] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    background-color: #F8FAFC;
}

.held-viewer-pane-label[b-uexw0gj28a] {
    padding: 0.625rem 1rem;
    font-size: 0.8125rem;
    font-weight: 500;
    color: #334155;
    background-color: #FFFFFF;
    border-bottom: 1px solid #EEF1F4;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex-shrink: 0;
}

.held-viewer-frame[b-uexw0gj28a] {
    flex: 1;
    min-height: 0;
    position: relative;
}

/* The Apryse container fills its pane (global rule sets 100%; pin a floor so it
   never collapses while the viewer initializes). */
.held-viewer-frame[b-uexw0gj28a]  .apryse-viewer-container {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 0;
}

/* File-type chip — self-contained here since scoped CSS doesn't cross into
   this component from the grid. */
.file-icon[b-uexw0gj28a] {
    width: 40px;
    height: 40px;
    border-radius: 0.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    flex-shrink: 0;
}

.file-icon-pdf[b-uexw0gj28a] {
    background-color: rgba(220, 74, 58, 0.1);
    color: #DC4A3A;
}

.file-icon-xls[b-uexw0gj28a] {
    background-color: rgba(46, 139, 87, 0.1);
    color: #16A34A;
}

.file-icon-csv[b-uexw0gj28a] {
    background-color: rgba(107, 114, 128, 0.1);
    color: #6B7280;
}

.file-icon-default[b-uexw0gj28a] {
    background-color: rgba(148, 163, 184, 0.1);
    color: #94A3B8;
}
/* /Components/Pages/OrderEntry/Index.razor.rz.scp.css */
.order-page-layout[b-4byqd4m18f] {
    display: flex;
    height: calc(100vh - 56px - 2rem - 3.5rem - 32px);
    overflow: hidden;
}

/* Order Management Section */
.order-management[b-4byqd4m18f] {
    min-width: 65%;
    max-width: 1100px;
    margin: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.order-management-pinned[b-4byqd4m18f] {
    flex-shrink: 0;
}

/* The grid + Not-a-PO section share the space left after the pinned filters.
   Wrapping them lets the Not-a-PO section's max-height resolve against THIS
   area (the grid's normal height), not the whole column. */
.order-grid-area[b-4byqd4m18f] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.order-table-container[b-4byqd4m18f] {
    flex: 1;
    min-height: 0;
    background-color: #FFFFFF;
    border: 1px solid #E5E5E5;
    border-radius: 0.75rem;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.order-table[b-4byqd4m18f] {
    width: 100%;
    border-collapse: collapse;
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

.order-table thead[b-4byqd4m18f] {
    flex-shrink: 0;
}

.order-table-container tbody[b-4byqd4m18f] {
    display: block;
    overflow-y: auto;
    flex: 1;
    min-height: 0;
}

.order-table-container thead tr[b-4byqd4m18f],
.order-table-container tbody tr[b-4byqd4m18f] {
    display: table;
    width: 100%;
    table-layout: fixed;
}

.order-table-container tbody[b-4byqd4m18f]::-webkit-scrollbar {
    width: 4px;
}

.order-table-container tbody[b-4byqd4m18f]::-webkit-scrollbar-track {
    background: transparent;
}

.order-table-container tbody[b-4byqd4m18f]::-webkit-scrollbar-thumb {
    background-color: #E5E7EB;
    border-radius: 2px;
}

.order-table-container tbody[b-4byqd4m18f]::-webkit-scrollbar-thumb:hover {
    background-color: #9CA3AF;
}

.order-entry-header[b-4byqd4m18f] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 1.5rem;
}

.order-entry-breadcrumb[b-4byqd4m18f] {
    display: block;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    color: #9CA3AF;
}

.order-entry-title[b-4byqd4m18f] {
    font-size: 1.375rem;
    font-weight: 400;
    color: #1A1A1A;
    margin: 0.25rem 0 0 0;
}

.order-entry-subtitle[b-4byqd4m18f] {
    font-size: 0.875rem;
    color: #6B6B6B;
    margin: 0.25rem 0 0 0;
}

.order-entry-header-right[b-4byqd4m18f] {
    text-align: right;
}

.upload-btn[b-4byqd4m18f] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1.25rem;
    background-color: #C06820;
    color: #FFFFFF;
    border: none;
    border-radius: 0.5rem;
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 150ms;
}

.upload-btn:hover[b-4byqd4m18f] {
    background-color: #A85818;
}

.upload-hint[b-4byqd4m18f] {
    font-size: 0.75rem;
    color: #9CA3AF;
    margin: 0.5rem 0 0 0;
}

/* Filters */
.order-entry-filters[b-4byqd4m18f] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
    min-height: 3.5rem;
}

.filter-btn[b-4byqd4m18f] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    background-color: #FFFFFF;
    color: #6B6B6B;
    border: 1px solid #E5E5E5;
    border-radius: 9999px;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 150ms;
}

.filter-btn:hover[b-4byqd4m18f] {
    border-color: #C06820;
    color: #C06820;
}

.filter-btn-active[b-4byqd4m18f] {
    border-color: #C06820;
    color: #C06820;
}

.filter-spacer[b-4byqd4m18f] {
    flex: 1;
}

.search-box[b-4byqd4m18f] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 1rem;
    background-color: #FFFFFF;
    border: 1px solid #E5E5E5;
    border-radius: 0.5rem;
    width: 320px;
}

.search-box svg[b-4byqd4m18f] {
    color: #9CA3AF;
    flex-shrink: 0;
}

.search-input[b-4byqd4m18f] {
    border: none;
    outline: none;
    background: transparent;
    font-family: var(--font-sans);
    font-size: 0.875rem;
    color: #1A1A1A;
    width: 100%;
}

.search-input[b-4byqd4m18f]::placeholder {
    color: #9CA3AF;
}

.order-table th[b-4byqd4m18f] {
    padding: 1rem 1.25rem;
    text-align: left;
    font-size: 0.6875rem;
    font-weight: 500;
    letter-spacing: 0.1em;
    color: #9CA3AF;
    border-bottom: 1px solid #E5E5E5;
    background-color: #FAFAFA;
}

.th-confidence[b-4byqd4m18f],
.td-confidence[b-4byqd4m18f] {
    width: 100px;
}

.th-updated[b-4byqd4m18f],
.td-updated[b-4byqd4m18f] {
    width: 120px;
}

.th-action[b-4byqd4m18f],
.td-action[b-4byqd4m18f] {
    width: 90px;
    text-align: center;
}

.order-table td[b-4byqd4m18f] {
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #F5F5F5;
    vertical-align: middle;
}

.order-row:last-child td[b-4byqd4m18f] {
    border-bottom: none;
}

.order-row:hover[b-4byqd4m18f] {
    background-color: #FAFAFA;
}

/* Document cell */
.document-cell[b-4byqd4m18f] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
}

.file-icon[b-4byqd4m18f] {
    width: 40px;
    height: 40px;
    border-radius: 0.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    flex-shrink: 0;
}

.file-icon-pdf[b-4byqd4m18f] {
    background-color: rgba(220, 74, 58, 0.1);
    color: #DC4A3A;
}

.file-icon-xls[b-4byqd4m18f] {
    background-color: rgba(46, 139, 87, 0.1);
    color: #16A34A;
}

.file-icon-csv[b-4byqd4m18f] {
    background-color: rgba(107, 114, 128, 0.1);
    color: #6B7280;
}

.file-icon-default[b-4byqd4m18f] {
    background-color: #F5F5F5;
    color: #6B7280;
}

.document-info[b-4byqd4m18f] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    /* Let this column shrink inside the flex row instead of forcing its
       intrinsic width — without min-width:0 a long unbreakable filename
       overflows the cell and overlaps the customer column. */
    flex: 1;
    min-width: 0;
}

.document-name[b-4byqd4m18f] {
    font-size: 0.875rem;
    font-weight: 500;
    color: #1A1A1A;
    /* Truncate long, unbreakable names rather than overflow the cell. */
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.document-meta[b-4byqd4m18f] {
    font-size: 0.75rem;
    color: #9CA3AF;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Customer */
.td-customer[b-4byqd4m18f] {
    font-size: 0.875rem;
    color: #1A1A1A;
}

/* Status badge */
.status-badge[b-4byqd4m18f] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.25rem 0.75rem;
    border-radius: 9999px;
    font-size: 0.6875rem;
    font-weight: 500;
    letter-spacing: 0.05em;
}

.status-dot[b-4byqd4m18f] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
}

.status-needs-review[b-4byqd4m18f] {
    background-color: rgba(232, 168, 56, 0.15);
    color: #B8860B;
}

.status-needs-review .status-dot[b-4byqd4m18f] {
    background-color: #B8860B;
}

.status-ready[b-4byqd4m18f] {
    background-color: rgba(46, 139, 87, 0.12);
    color: #16A34A;
}

.status-ready .status-dot[b-4byqd4m18f] {
    background-color: #16A34A;
}

.status-sent[b-4byqd4m18f] {
    background-color: rgba(107, 114, 128, 0.12);
    color: #6B7280;
}

.status-sent .status-dot[b-4byqd4m18f] {
    background-color: #6B7280;
}

.status-failed[b-4byqd4m18f] {
    background-color: rgba(220, 38, 38, 0.12);
    color: #DC2626;
}

.status-failed .status-dot[b-4byqd4m18f] {
    background-color: #DC2626;
}

/* Violet — distinct from the amber "needs review" and not red (which would
   read as an error). A deliberate "flagged for follow-up" marker. */
.status-flagged[b-4byqd4m18f] {
    background-color: rgba(124, 58, 237, 0.15);
    color: #7C3AED;
}

.status-flagged .status-dot[b-4byqd4m18f] {
    background-color: #7C3AED;
}

/* Queued — waiting in the durable extraction queue. Pending has no color
   (brand rule): a muted neutral slate, no alarm. */
.status-queued[b-4byqd4m18f] {
    background-color: rgba(148, 163, 184, 0.12);
    color: #94A3B8;
}

.status-queued .status-dot[b-4byqd4m18f] {
    background-color: #94A3B8;
}

/* Duplicate — the PO already exists in the ERP. Informational, not an error,
   so a distinct cool blue rather than coral. */
/* Waiting on the company's order system to reconnect. Amber and muted like the
   other "open question" states — not the coral of a failure, because nothing has
   failed; the row resumes on its own. Display only, never a stored status. */
.status-waiting[b-4byqd4m18f] {
    background-color: rgba(217, 119, 6, 0.12);
    color: #D97706;
}

.status-waiting .status-dot[b-4byqd4m18f] {
    background-color: #D97706;
}

.status-unverified[b-4byqd4m18f] {
    background-color: rgba(180, 83, 9, 0.12);
    color: #B45309;
}

.status-unverified .status-dot[b-4byqd4m18f] {
    background-color: #B45309;
}

.status-duplicate[b-4byqd4m18f] {
    background-color: rgba(59, 130, 246, 0.12);
    color: #3B82F6;
}

.status-duplicate .status-dot[b-4byqd4m18f] {
    background-color: #3B82F6;
}

/* Small secondary line under a status badge (e.g. the matched ERP order ref
   on a Duplicate row). Identifiers stay monospace per brand. */
.status-subnote[b-4byqd4m18f] {
    display: block;
    margin-top: 4px;
    font-size: 11px;
    font-family: var(--font-mono);
    color: #94A3B8;
}

/* Inline Retry / Remove buttons on a Failed row. */
.row-actions[b-4byqd4m18f] {
    display: flex;
    gap: 0.5rem;
    justify-content: flex-end;
}

.row-action-btn[b-4byqd4m18f] {
    padding: 0.3125rem 0.625rem;
    font-size: 0.75rem;
}

/* Confidence */
.confidence-value[b-4byqd4m18f] {
    font-family: var(--font-mono);
    font-size: 0.875rem;
    font-weight: 600;
}

.confidence-high[b-4byqd4m18f] {
    color: #16A34A;
}

.confidence-medium[b-4byqd4m18f] {
    color: #B8860B;
}

.confidence-low[b-4byqd4m18f] {
    color: #DC4A3A;
}

/* Updated */
.td-updated[b-4byqd4m18f] {
    font-size: 0.875rem;
    color: #9CA3AF;
}

/* Action links */
.action-link[b-4byqd4m18f] {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    font-size: 0.6875rem;
    font-weight: 500;
    letter-spacing: 0.05em;
    color: #9CA3AF;
    text-decoration: none;
    transition: color 150ms;
}

.action-link:hover[b-4byqd4m18f] {
    color: #6B6B6B;
}

.action-link-review[b-4byqd4m18f] {
    color: #C06820;
}

.action-link-review:hover[b-4byqd4m18f] {
    color: #A85818;
}

.action-arrow[b-4byqd4m18f] {
    font-size: 0.75rem;
    line-height: 1;
}

/* Footer hint */
.order-footer-hint[b-4byqd4m18f] {
    margin-top: 1.5rem;
    font-size: 0.8125rem;
    color: #9CA3AF;
}

/* Upload dialog */
.upload-overlay[b-4byqd4m18f] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 100;
}

.upload-dialog[b-4byqd4m18f] {
    background-color: #FFFFFF;
    border-radius: 0.75rem;
    padding: 2rem;
    max-width: 480px;
    width: 90%;
    text-align: center;
}

.upload-dialog h2[b-4byqd4m18f] {
    font-size: 1.25rem;
    font-weight: 600;
    color: #1A1A1A;
    margin: 0 0 0.5rem 0;
}

.upload-dialog p[b-4byqd4m18f] {
    color: #6B6B6B;
    margin: 0 0 1.5rem 0;
}

/* Order Upload Section */
.upload-section[b-4byqd4m18f] {
    min-width: 33%;
    max-width: 1100px;
    padding-right: 1.5rem;
    padding-left: 1.5rem;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.upload-section-pinned[b-4byqd4m18f] {
    flex-shrink: 0;
}

.upload-card-list[b-4byqd4m18f] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-top: 1rem;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding-right: 0.25rem;
    padding-bottom: 1rem;
}

.upload-card-list[b-4byqd4m18f]::-webkit-scrollbar {
    width: 4px;
}

.upload-card-list[b-4byqd4m18f]::-webkit-scrollbar-track {
    background: transparent;
}

.upload-card-list[b-4byqd4m18f]::-webkit-scrollbar-thumb {
    background-color: #E5E7EB;
    border-radius: 2px;
}

.upload-card-list[b-4byqd4m18f]::-webkit-scrollbar-thumb:hover {
    background-color: #9CA3AF;
}
/* ---------- Empty state ---------- */

/* The container is flex:1 so it holds its height whether or not there are rows.
   That left the header sitting over a tall blank panel when a filter matched
   nothing — indistinguishable from a stuck load. The empty state fills that
   space deliberately instead. */
/* Inherits `tbody tr { display: table; width: 100%; table-layout: fixed }` from the
   grid rules above, so the single colspan cell spans the full width. Overriding the
   row to display:block instead collapses the cell to its content width and leaves a
   stray rule where the row border lands. */
.order-empty-row td[b-4byqd4m18f] {
    padding: 0;
    border: none;
    width: 100%;
}

.order-empty[b-4byqd4m18f] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 4rem 2rem;
    text-align: center;
}

.order-empty-icon[b-4byqd4m18f] {
    color: #D1D5DB;
    margin-bottom: 0.25rem;
}

.order-empty-title[b-4byqd4m18f] {
    font-size: 0.9375rem;
    font-weight: 500;
    color: #374151;
}

.order-empty-sub[b-4byqd4m18f] {
    font-size: 0.8125rem;
    color: #9CA3AF;
    max-width: 26rem;
}

.order-empty-action[b-4byqd4m18f] {
    margin-top: 0.75rem;
}
/* /Components/Pages/OrderEntry/Review.razor.rz.scp.css */
/* Page chrome for the Review page. Section-specific styles live beside their
   components in ./Review (ReviewOrderInfoSection, ReviewLineItemsSection,
   ReviewValidationSection, the dialogs) and the dropdown chrome in the shared
   SearchableDropdown. Rules the sections share (section headers, confidence
   dots, buttons) are kept here once, reaching into the section components via
   ::deep from the page-rendered .panel-body wrapper. */
.review-page[b-zheyk4leov] {
    width: 100%;
}

/* Base .oe-loading/.oe-empty is global (evie.css); only the page-specific
   empty-state heading margin stays scoped here. */
.oe-empty h2[b-zheyk4leov] {
    font-family: var(--font-serif);
    font-size: 1.5rem;
    margin-bottom: 0.5rem;
}

.page-header[b-zheyk4leov] {
    padding: 1.5rem 0 1rem;
}

.eyebrow[b-zheyk4leov] {
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #9CA3AF;
    margin-bottom: 0.375rem;
}

.header-top[b-zheyk4leov] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.5rem;
}

.page-title[b-zheyk4leov] {
    font-size: 1.375rem;
    font-weight: 400;
    color: #1A1A1A;
    line-height: 1.1;
    margin: 0;
}

.page-sub[b-zheyk4leov] {
    font-size: 0.875rem;
    color: #6B6B6B;
    margin: 0.25rem 0 0 0;
}

.header-actions[b-zheyk4leov] {
    display: flex;
    gap: 0.5rem;
    flex-shrink: 0;
}

/* Buttons: page-rendered (header, bottom bar) and, via ::deep, the ones the
   section components render inside the right panel's body. */
.btn[b-zheyk4leov],
.panel-body[b-zheyk4leov]  .btn {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 500;
    border-radius: 0.5rem;
    padding: 0.5rem 1rem;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    border: 1px solid;
    transition: all 0.18s;
    white-space: nowrap;
    background: transparent;
}

.btn-sm[b-zheyk4leov],
.panel-body[b-zheyk4leov]  .btn-sm {
    padding: 0.375rem 0.75rem;
    font-size: 0.8125rem;
}

/* Ghost buttons read as active by default — the old ghost grey made enabled
   buttons (Back to list, Cancel, Confirm Review, etc.) look disabled. Disabled
   then has its own clearly-muted state. */
.btn-ghost[b-zheyk4leov],
.panel-body[b-zheyk4leov]  .btn-ghost {
    color: #1A1A1A;
    border-color: #C8C8C8;
}

.btn-ghost:hover:not(:disabled)[b-zheyk4leov],
.panel-body[b-zheyk4leov]  .btn-ghost:hover:not(:disabled) {
    border-color: #9CA3AF;
    color: #1A1A1A;
    background: #FAFAFA;
}

.btn-ghost:disabled[b-zheyk4leov],
.panel-body[b-zheyk4leov]  .btn-ghost:disabled {
    color: #B0B0B0;
    border-color: #ECECEC;
    cursor: not-allowed;
}

.btn-outline[b-zheyk4leov] {
    color: #C06820;
    border-color: #FCCF9A;
}

.btn-outline:hover[b-zheyk4leov] {
    background: #FFF5EE;
    border-color: #C06820;
}

.btn-warning[b-zheyk4leov] {
    background: #FFFBEB;
    color: #92400E;
    border-color: #FCD34D;
}

.btn-warning:hover[b-zheyk4leov] {
    background: #FEF3C7;
}

/* Delete order. The page's own .btn reset above wins over the global evie.css
   rule for header-rendered buttons, so restate it here — in this page's own
   light red (same trio as the error rows below) rather than evie.css's
   dark-theme coral. */
.btn-destructive[b-zheyk4leov] {
    background: #FEF2F2;
    color: #DC2626;
    border-color: #FECACA;
}

.btn-destructive:hover:not(:disabled)[b-zheyk4leov] {
    background: #FEE2E2;
    border-color: #DC2626;
}

.btn-destructive:disabled[b-zheyk4leov] {
    opacity: 0.45;
    cursor: not-allowed;
}

.btn-primary[b-zheyk4leov] {
    background: #C06820;
    color: #FFF;
    border-color: #C06820;
    box-shadow: 0 3px 10px rgba(192, 104, 32, 0.22);
}

.btn-primary:hover:not(:disabled)[b-zheyk4leov] {
    background: #A85818;
    box-shadow: 0 5px 16px rgba(192, 104, 32, 0.32);
    transform: translateY(-1px);
}

.btn-primary:disabled[b-zheyk4leov] {
    opacity: 0.45;
    cursor: not-allowed;
    box-shadow: none;
}

.btn-link[b-zheyk4leov],
.panel-body[b-zheyk4leov]  .btn-link {
    background: none;
    border: none;
    color: #C06820;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    cursor: pointer;
    padding: 0;
    text-decoration: underline;
}

.btn-link.danger[b-zheyk4leov],
.panel-body[b-zheyk4leov]  .btn-link.danger {
    color: #DC4A3A;
}

/* Summary strip */
/* Reads as a card (full border, 14px radius, the same soft shadow as .panel) while
   keeping the banner's own compact bar layout and #FAFAFA fill — it was a full-bleed
   rule-under-a-strip, which sat oddly above the rounded panels below it. */
.summary-strip[b-zheyk4leov] {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    padding: 0.875rem 1.25rem;
    border: 1.5px solid #E5E5E5;
    border-radius: 14px;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
    background: #FAFAFA;
    /* Keeps the pill/badge children inside the rounded corners. */
    overflow: hidden;
}

.sum-item[b-zheyk4leov] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.sum-label[b-zheyk4leov] {
    font-size: 0.6875rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #9CA3AF;
}

.sum-val[b-zheyk4leov] {
    font-size: 0.875rem;
    font-weight: 500;
    color: #1A1A1A;
}

.sum-sep[b-zheyk4leov] {
    width: 1px;
    height: 20px;
    background: #E5E5E5;
}

.file-badge[b-zheyk4leov] {
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.2rem 0.45rem;
    border-radius: 4px;
    border: 1px solid;
}

.badge-pdf[b-zheyk4leov] {
    color: #C06820;
    background: #FFF5EE;
    border-color: #FCCF9A;
}

.pill[b-zheyk4leov] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    border-radius: 999px;
    padding: 0.25rem 0.75rem;
    font-size: 0.6875rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border: 1px solid;
}

.pill-dot[b-zheyk4leov] {
    width: 5px;
    height: 5px;
    border-radius: 50%;
}

.pill-review[b-zheyk4leov] {
    color: #92400E;
    background: #FFFBEB;
    border-color: #FCD34D;
}

.pill-review .pill-dot[b-zheyk4leov] {
    background: #D97706;
}

.pill-ready[b-zheyk4leov] {
    color: #14532D;
    background: #F0FDF4;
    border-color: #86EFAC;
}

.pill-ready .pill-dot[b-zheyk4leov] {
    background: #16A34A;
}

.pill-sent[b-zheyk4leov] {
    color: #374151;
    background: #F3F4F6;
    border-color: #D1D5DB;
}

.pill-sent .pill-dot[b-zheyk4leov] {
    background: #6B7280;
}

.pill-failed[b-zheyk4leov] {
    color: #991B1B;
    background: #FEF2F2;
    border-color: #FECACA;
}

.pill-failed .pill-dot[b-zheyk4leov] {
    background: #DC2626;
}

/* Violet — distinct from the amber "needs review" pill and not red (error). */
.pill-unverified[b-zheyk4leov] {
    color: #B45309;
    background: #FFFBEB;
    border-color: #FCD34D;
}

.pill-unverified .pill-dot[b-zheyk4leov] {
    background: #B45309;
}

.pill-flagged[b-zheyk4leov] {
    color: #6D28D9;
    background: #F5F3FF;
    border-color: #C4B5FD;
}

.pill-flagged .pill-dot[b-zheyk4leov] {
    background: #7C3AED;
}

.conf-badge[b-zheyk4leov] {
    font-family: var(--font-mono);
    font-size: 0.875rem;
    font-weight: 600;
}

.conf-high[b-zheyk4leov] { color: #16A34A; }
.conf-mid[b-zheyk4leov]  { color: #D97706; }
.conf-low[b-zheyk4leov]  { color: #DC2626; }

/* Workspace */
.workspace[b-zheyk4leov] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.25rem;
    padding-top: 1.5rem;
    /* start, not stretch: a long extracted-data panel must not stretch the source
       -document panel to match (which pushes the PDF far down / vertically centered). */
    align-items: start;
    min-width: 0;
}

/* The source-document viewer keeps a bounded viewport height and sticks in view
   while the (potentially very long) extracted-data panel scrolls beside it, so the
   document always sits at the top of the viewer instead of being centered in an
   over-tall column. */
.doc-panel[b-zheyk4leov] {
    position: sticky;
    /* Clear the 56px sticky app header, with a little breathing room. */
    top: calc(56px + 1rem);
    /* Fit between the 56px header and the fixed 60px bottom action bar (plus a
       1rem gap above each) so the viewer never tucks behind the footer. */
    height: calc(100vh - 56px - 60px - 2rem);
}

.panel[b-zheyk4leov] {
    min-width: 0;
}

.panel[b-zheyk4leov] {
    background: #FFFFFF;
    border: 1.5px solid #E5E5E5;
    border-radius: 14px;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-height: 600px;
}

.panel-header[b-zheyk4leov] {
    background: #FAFAFA;
    border-bottom: 1px solid #E5E5E5;
    padding: 0.85rem 1.15rem;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
}

.panel-title[b-zheyk4leov] {
    font-size: 0.875rem;
    font-weight: 600;
    color: #1A1A1A;
}

.panel-sub[b-zheyk4leov] {
    font-size: 0.75rem;
    color: #9CA3AF;
    margin-top: 0.125rem;
}

/* "Source not located" hint — subtle amber, not alarming. */
.panel-sub.hl-miss[b-zheyk4leov] {
    color: #B45309;
}

/* The viewer panel puts its hint beside the title instead of under it, so the
   header costs one line instead of two. flex-wrap plus a nowrap hint means the
   sentence never breaks mid-phrase: it either sits on the title's line or drops
   below it whole. */
.panel-heading-inline[b-zheyk4leov] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 0.5rem;
    row-gap: 0.125rem;
}

.panel-heading-inline .panel-sub[b-zheyk4leov] {
    white-space: nowrap;
    margin-top: 0;
}

.panel-controls[b-zheyk4leov] {
    display: flex;
    gap: 0.35rem;
}

.panel-body[b-zheyk4leov] {
    flex: 1;
    overflow-y: auto;
}

.doc-viewer-body[b-zheyk4leov] {
    padding: 0;
    background: #EBEBEB;
    overflow: hidden; /* clip to rounded corners of .panel when viewer is full-height */
}

.doc-viewer-body[b-zheyk4leov]  .apryse-viewer-container {
    height: 100%;
    min-height: 560px;
}

.viewer-placeholder[b-zheyk4leov] {
    padding: 3rem;
    text-align: center;
    color: #9CA3AF;
    font-size: 0.875rem;
}

/* Right sections — structural styles shared by the three section components. */
.panel-body[b-zheyk4leov]  .right-section {
    padding: 1.15rem 1.25rem;
    border-bottom: 1px solid #F0F0F0;
}

.panel-body[b-zheyk4leov]  .right-section:last-child {
    border-bottom: none;
}

.panel-body[b-zheyk4leov]  .section-head {
    margin-bottom: 0.875rem;
}

.panel-body[b-zheyk4leov]  .section-title {
    font-size: 0.875rem;
    font-weight: 600;
    color: #1A1A1A;
}

.panel-body[b-zheyk4leov]  .section-sub {
    font-size: 0.75rem;
    color: #9CA3AF;
    margin-top: 0.125rem;
}

.panel-body[b-zheyk4leov]  .section-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.875rem;
}

.panel-body[b-zheyk4leov]  .section-count {
    font-size: 0.6875rem;
    font-weight: 500;
    color: #9CA3AF;
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.panel-body[b-zheyk4leov]  .section-actions {
    display: flex;
    gap: 0.375rem;
}

/* Confidence / match-status dots, rendered by both sections. */
.panel-body[b-zheyk4leov]  .conf-dot {
    display: inline-block;
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 999px;
    flex-shrink: 0;
}

.panel-body[b-zheyk4leov]  .conf-dot.tag-high   { background: #16A34A; }
.panel-body[b-zheyk4leov]  .conf-dot.tag-mid    { background: #D97706; }
.panel-body[b-zheyk4leov]  .conf-dot.tag-low    { background: #DC2626; }
.panel-body[b-zheyk4leov]  .conf-dot.tag-failed { background: #DC2626; }

/* Evie card (currently commented out in the markup) */
.evie-card[b-zheyk4leov] {
    background: #FAFAFA;
    border: 1.5px solid #E5E5E5;
    border-radius: 6px;
    padding: 0.875rem 1rem;
}

.evie-label[b-zheyk4leov] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #C06820;
    font-weight: 600;
    margin-bottom: 0.75rem;
}

.evie-bullets[b-zheyk4leov] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.evie-bullets li[b-zheyk4leov] {
    font-size: 0.875rem;
    color: #6B6B6B;
    line-height: 1.5;
    padding-left: 1rem;
    position: relative;
}

.evie-bullets li[b-zheyk4leov]::before {
    content: '·';
    position: absolute;
    left: 0.25rem;
    color: #C06820;
    font-weight: 700;
    font-size: 0.875rem;
}

/* Bottom bar */
.bottom-bar[b-zheyk4leov] {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 60px;
    background: rgba(255, 255, 255, 0.94);
    backdrop-filter: blur(12px);
    border-top: 1px solid #E5E5E5;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 2rem;
    z-index: 200;
    box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.06);
}

.bar-note[b-zheyk4leov] {
    font-size: 0.875rem;
    color: #6B6B6B;
}

.bar-note strong[b-zheyk4leov] {
    color: #1A1A1A;
    font-weight: 600;
}

.bar-right[b-zheyk4leov] {
    display: flex;
    gap: 0.5rem;
}

/* Toast */
.toast[b-zheyk4leov] {
    position: fixed;
    bottom: 80px;
    left: 50%;
    transform: translateX(-50%);
    background: #1A1A1A;
    color: #FFFFFF;
    padding: 0.75rem 1.25rem;
    border-radius: 8px;
    font-size: 0.875rem;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2);
    z-index: 300;
}

@media (max-width: 1100px) {
    .workspace[b-zheyk4leov] {
        grid-template-columns: 1fr;
    }

    /* Single column: don't pin the viewer over the screen — let it sit inline as a
       bounded-height panel above the extracted data. */
    .doc-panel[b-zheyk4leov] {
        position: static;
        height: 70vh;
    }
}

.flag-banner[b-zheyk4leov] {
    display: flex;
    align-items: center;
    gap: 1rem;
    background: #FFFBEB;
    border: 1px solid #FCD34D;
    border-radius: 8px;
    padding: 0.75rem 1rem;
    margin: 0.75rem 0;
    color: #92400E;
}

.flag-banner-text[b-zheyk4leov] {
    flex: 1;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.4rem;
    font-size: 0.875rem;
    line-height: 1.4;
}

.flag-banner-icon[b-zheyk4leov] {
    font-size: 1rem;
    line-height: 1;
}

.flag-banner-actor[b-zheyk4leov] {
    font-weight: 600;
}

.flag-banner-note[b-zheyk4leov] {
    color: #78350F;
}

.flag-banner-resolve[b-zheyk4leov] {
    flex-shrink: 0;
}
/* /Components/Pages/OrderEntry/Review/ReviewFlagDialogs.razor.rz.scp.css */
/* Modal chrome + button styles, duplicated from the review page's scoped CSS —
   scoped styles don't cross component boundaries, and the global .modal-* /
   .btn styles (used by ConfirmDialog) are the dark-theme variants. */
.modal-overlay[b-n0otsliu5x] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 400;
}

.modal-card[b-n0otsliu5x] {
    background: #FFFFFF;
    border-radius: 10px;
    padding: 1.5rem;
    width: min(520px, 90vw);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.modal-title[b-n0otsliu5x] {
    margin: 0;
    font-size: 1.125rem;
    font-weight: 600;
    color: #1A1A1A;
}

.modal-sub[b-n0otsliu5x] {
    margin: 0;
    font-size: 0.875rem;
    color: #4B5563;
    line-height: 1.5;
}

.flag-note-input[b-n0otsliu5x] {
    width: 100%;
    border: 1px solid #D1D5DB;
    border-radius: 6px;
    padding: 0.6rem 0.75rem;
    font-family: var(--font-sans);
    font-size: 0.875rem;
    color: #1A1A1A;
    resize: vertical;
    min-height: 4.5rem;
}

.flag-note-input:focus[b-n0otsliu5x] {
    outline: none;
    border-color: #C06820;
    box-shadow: 0 0 0 3px rgba(192, 104, 32, 0.15);
}

.modal-actions[b-n0otsliu5x] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 0.25rem;
}

.btn[b-n0otsliu5x] {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 500;
    border-radius: 0.5rem;
    padding: 0.5rem 1rem;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    border: 1px solid;
    transition: all 0.18s;
    white-space: nowrap;
    background: transparent;
}

.btn-ghost[b-n0otsliu5x] {
    color: #1A1A1A;
    border-color: #C8C8C8;
}

.btn-ghost:hover:not(:disabled)[b-n0otsliu5x] {
    border-color: #9CA3AF;
    color: #1A1A1A;
    background: #FAFAFA;
}

.btn-ghost:disabled[b-n0otsliu5x] {
    color: #B0B0B0;
    border-color: #ECECEC;
    cursor: not-allowed;
}

.btn-primary[b-n0otsliu5x] {
    background: #C06820;
    color: #FFF;
    border-color: #C06820;
    box-shadow: 0 3px 10px rgba(192, 104, 32, 0.22);
}

.btn-primary:hover:not(:disabled)[b-n0otsliu5x] {
    background: #A85818;
    box-shadow: 0 5px 16px rgba(192, 104, 32, 0.32);
    transform: translateY(-1px);
}

.btn-primary:disabled[b-n0otsliu5x] {
    opacity: 0.45;
    cursor: not-allowed;
    box-shadow: none;
}
/* /Components/Pages/OrderEntry/Review/ReviewLineItemsSection.razor.rz.scp.css */
/* Line table */
.empty-lines[b-h8r2h57vlp] {
    padding: 1rem 1.15rem;
    background: #FAFAFA;
    border: 1px dashed #E5E5E5;
    border-radius: 6px;
    font-size: 0.875rem;
    color: #6B6B6B;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.line-table-wrap[b-h8r2h57vlp] {
    /* overflow-x:auto keeps horizontal scroll for the min-width table and
       (per CSS) computes overflow-y to auto, so content clips to the
       rounded corners — framing the line items as a card like the fields. */
    overflow-x: auto;
    border: 1px solid #E7E3DD;
    border-radius: 8px;
}

.line-table[b-h8r2h57vlp] {
    width: 100%;
    border-collapse: collapse;
    /* The floor every column width below is measured against.

       The panel is half the workspace (.workspace is 1fr 1fr), so on a 1366px
       laptop this table gets ~640px — and the percentages below were all sized
       at a 1600px viewport, where it gets ~750px. Under that, every column
       shrinks proportionally and the INPUTS clip: a part number loses its last
       glyph, and a price clips into a number that still reads as valid
       ("63.8000" showing as "63.86"), which is the worst failure on this page.
       The old 560px floor was low enough to allow all of it.

       Setting the floor to the width the measurements assume means narrower
       viewports scroll (.line-table-wrap is already overflow-x:auto) instead of
       truncating — a scrollbar is recoverable, a silently wrong price is not.
       Wide viewports are unaffected: at ~1600px and up the table is already
       past the floor and renders exactly as before.

       This is why the floor lives on the TABLE and not on each input: under
       table-layout:fixed the columns resolve from the colgroup percentages
       against the table's width, so a floor here gives every column a floor.
       Per-input min-widths would fight the fixed layout instead.

       750px. At that width the shares below give part ~124px, description ~161px,
       qty ~90px, UOM ~98px, price ~97px, total ~120px and the meta column ~60px —
       every one at or above what its own comment says it needs. Price is the
       tightest relative to its share, so it is what a future narrowing would
       push against: shrink price further and this floor has to rise with it, or
       long prices start clipping. */
    min-width: 750px;
    font-size: 0.875rem;
    /* Columns are sized by the colgroup, never by their content. Pricing
       and lead-time resolve asynchronously and add notes to cells that were
       empty, which under auto layout re-measures every column and makes the
       grid jump around as results stream in. */
    table-layout: fixed;
}

/* The per-line PO column is a ninth column funded out of the others, so the same
   percentages need a higher floor to clear the same pixel minimums. At 800px:
   part (16%) ~128px, PO (15%) ~120px — comfortably past a "WHS041122-01"-length
   number — price (12%) ~96px, total (16%) ~128px, and the meta column (7%)
   ~56px. Without this, line-scope tenants would hit the clipping this rule
   exists to prevent. */
.line-table.has-linepo[b-h8r2h57vlp] {
    min-width: 800px;
}

/* Part numbers run to 7-8 characters in the mono cell font ("121985E" needs
   ~80px of input width); 12% left the last glyph clipped at a 1600px viewport.
   Widened from 14% out of what merging Conf. + Remove gave back. */
.line-table .col-part[b-h8r2h57vlp] { width: 16.5%; }
/* Free prose that truncates at any width — the cheapest place to fund the price
   column below, which has a hard minimum. */
.line-table .col-desc[b-h8r2h57vlp] { width: 21.5%; }
/* Qty used to need far more room than its short header suggests, because the
   bound decimal rendered all four scale digits ("2050.0000") — ~103px of noise.
   Review.NormalizeQuantityScale now trims those on the way in, so it renders
   "2050", so it needs a fraction of what 17% once bought. */
.line-table .col-qty[b-h8r2h57vlp] { width: 12%; }
/* UOM took the width qty and price gave back: "EACH"/"SKID" plus its match note
   underneath were tight at 9%. */
.line-table .col-uom[b-h8r2h57vlp] { width: 13%; }
/* Price is bound through Review.NormalizeMoneyScale, so it renders "36.75" rather
   than "36.7500" — but it keeps 2 decimals as a money field should ("160.00", not
   "160"), and sub-cent precision still shows in full ("0.4210" ⇒ 0.421).
   A clipped price is the worst failure on this page: the visible digits still read
   as a valid number, so a truncated 63.8000 looked like 63.86.
   Narrowed twice from 18% after looking at it rendered: real unit prices are
   short ("36.75", "0.421", "160.00") and the width read better on total, UOM and
   the PO column. At 13% of the 750px floor this is ~97px. The ~112px figure this
   comment used to quote as the 7-character width was measured with slack — a
   7-character mono value at 0.875rem is ~59px of glyphs plus ~14px of input
   padding — so "1234.56" still fits. If a long price ever does clip, the fix is
   to raise the floor above, not to widen this column at the others' expense. */
.line-table .col-price[b-h8r2h57vlp] { width: 13%; }
/* Line total renders formatted money ("$1,234.56"), which wrapped to two lines at
   13% and made those rows taller than their neighbours. 16% plus the nowrap on
   .cell-static keeps it on one line — at the 750px floor that is ~120px against
   ~106px for an eleven-character "$123,456.78". */
.line-table .col-total[b-h8r2h57vlp] { width: 16%; }
/* Confidence dot + remove icon in ONE column. Separately they were 5% and 9% for
   a 6px dot and a ~46px link; together they need a 6px dot, a 6px gap and a 28px
   button plus cell padding — about 56px, which 8% of the 700px floor covers. The
   ~6% freed went to part, description and price above, all of which were
   documented as clipping. */
.line-table .col-meta[b-h8r2h57vlp] { width: 8%; }

/* Per-line customer PO (line-scope tenants only). Mono like the part cell and
   about as long, plus a "Dup: order 12345" note underneath. The widths above
   already sum to 100%, so this column is funded rather than added: description
   gives most of it (free prose that truncates at any width, and the comment
   above already names it the cheapest donor), with the rest from part, price and
   the merged meta column — none of which is at its floor once Conf. + Remove
   stopped taking 14% between them.
   15% rather than the 11% it started at: a PO number is the widest mono value on
   the row after the part, and qty and price each giving back ~3 points left room
   for it and for UOM.
   Scoped to .has-linepo so header-scope tenants keep the tuned layout exactly. */
.line-table .col-linepo[b-h8r2h57vlp] { width: 15%; }
.line-table.has-linepo .col-part[b-h8r2h57vlp] { width: 16%; }
.line-table.has-linepo .col-qty[b-h8r2h57vlp] { width: 12%; }
.line-table.has-linepo .col-desc[b-h8r2h57vlp] { width: 12%; }
.line-table.has-linepo .col-uom[b-h8r2h57vlp] { width: 10%; }
.line-table.has-linepo .col-price[b-h8r2h57vlp] { width: 12%; }
.line-table.has-linepo .col-meta[b-h8r2h57vlp] { width: 7%; }

/* Confidence dot and remove icon on one row, right-aligned so the icons form a
   clean edge down the table rather than drifting with the dot's presence (the
   dot is absent on lines with no extracted confidence). */
.line-meta[b-h8r2h57vlp] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.375rem;
}

/* Number inputs drop their spin buttons. They stole width from an already tight
   cell, and on a qty or a unit price a stray scroll-wheel tick over a focused
   input is a silent value change on a financial line — the keyboard is the
   intended way to adjust these. The field stays type=number, so the numeric
   keypad and validation behaviour are unchanged. */
.line-table .cell-input[type="number"][b-h8r2h57vlp]::-webkit-outer-spin-button,
.line-table .cell-input[type="number"][b-h8r2h57vlp]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    appearance: none;
    margin: 0;
}

.line-table .cell-input[type="number"][b-h8r2h57vlp] {
    -moz-appearance: textfield;
    appearance: textfield;
}

/* Remove-line action: icon only. Sized to a comfortable pointer target rather
   than the glyph, and muted until hover so a column of them doesn't read as a
   row of warnings. */
.line-remove-btn[b-h8r2h57vlp] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    padding: 0;
    border: none;
    border-radius: 6px;
    background: transparent;
    color: #9CA3AF;
    cursor: pointer;
    transition: color 0.15s, background 0.15s;
}

.line-remove-btn svg[b-h8r2h57vlp] {
    width: 15px;
    height: 15px;
}

.line-remove-btn:hover[b-h8r2h57vlp] {
    color: #DC4A3A;
    background: #FDF2F0;
}

.line-remove-btn:focus-visible[b-h8r2h57vlp] {
    outline: 2px solid #DC4A3A;
    outline-offset: 1px;
    color: #DC4A3A;
}

/* The PO column header carries a "Set all" action beside its label. */
.line-table th .th-label[b-h8r2h57vlp] { margin-right: 0.35rem; }

.line-table th .th-action[b-h8r2h57vlp] {
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    font-size: 0.625rem;
    letter-spacing: 0.05em;
    color: #6366F1;
    cursor: pointer;
    text-transform: none;
}

.line-table th .th-action:hover:not(:disabled)[b-h8r2h57vlp] { text-decoration: underline; }

.line-table th .th-action:disabled[b-h8r2h57vlp] {
    color: #C4C4C4;
    cursor: default;
}

/* Fixed layout won't shrink columns to fit content, so long values have to be
   told what to do rather than forcing a horizontal scroll. */
.line-table td[b-h8r2h57vlp] {
    overflow-wrap: anywhere;
}

/* Async notes ("No quote", "No supplier", the quoted price) land in cells that
   were empty. Two things made that shift the whole grid vertically, and both
   are fixed here:

   1. The note added a line where there was none. Every cell without a note now
      reserves exactly one line, so the note drops into space that already
      existed. Cells that already have a note don't reserve extra, so this costs
      no additional height — the part cell always carries one, and it is what
      sets the row height today.
   2. Short notes WRAPPED in the narrow qty/uom/price columns, so a single
      "No supplier" cost two lines. They stay on one line and overflow instead,
      which is invisible in practice and cannot change row height. */
.line-table td[b-h8r2h57vlp]::after {
    content: "";
    display: block;
    /* Mirrors a .cell-note's box exactly — same line height, same margin — so
       swapping the reserve for a real note changes nothing. */
    height: 0.75rem;
    margin-top: 0.25rem;
}

.line-table td:has(.cell-note)[b-h8r2h57vlp]::after {
    display: none;
}

.line-table td .cell-note[b-h8r2h57vlp] {
    white-space: nowrap;
    overflow: visible;
}

.line-table th[b-h8r2h57vlp] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #9CA3AF;
    padding: 0.6rem 0.5rem;
    text-align: left;
    font-weight: 500;
    background: #FAFAFA;
    border-bottom: 1px solid #E5E5E5;
}

.line-table td[b-h8r2h57vlp] {
    padding: 0.5rem 0.5rem;
    border-bottom: 1px solid #F0F0F0;
    vertical-align: top;
}

.line-table tbody tr.flagged td[b-h8r2h57vlp] {
    background: #FFFDF5;
}

.cell-input[b-h8r2h57vlp] {
    width: 100%;
    border: 1px solid transparent;
    background: transparent;
    font-family: var(--font-sans);
    font-size: 0.875rem;
    color: #1A1A1A;
    padding: 0.25rem 0.4rem;
    border-radius: 3px;
    outline: none;
}

.cell-input.mono[b-h8r2h57vlp] {
    font-family: var(--font-mono);
}

/* A read-only value that has to sit on the same baseline as the editable cells
   beside it. Mirrors .cell-input's box exactly — transparent 1px border and the
   same padding — so the text lands where an input's text lands instead of riding
   a few pixels high at the top of the cell. Deliberately a span, not a disabled
   input: it reads as text to assistive tech, stays out of the tab order, and the
   value can still be selected and copied. */
.cell-static[b-h8r2h57vlp] {
    display: block;
    border: 1px solid transparent;
    padding: 0.25rem 0.4rem;
    font-size: 0.875rem;
    line-height: inherit;
    border-radius: 3px;
    /* Money stays on one line. The cell inherits overflow-wrap:anywhere from
       .line-table td (there so long prose can't force a horizontal scroll), which
       broke "$1,234.56" across two lines and made that row taller than the rest.
       Prose can wrap; a formatted amount reads as one token. */
    white-space: nowrap;
}

.cell-static.mono[b-h8r2h57vlp] {
    font-family: var(--font-mono);
}

/* Field-vs-document mismatch marker — see ReviewOrderInfoSection.razor.css. */
.cell-input.doc-mismatch[b-h8r2h57vlp] {
    box-shadow: inset 0 -2px 0 0 #E8A838;
    background: rgba(232, 168, 56, 0.13);
    border-radius: 3px;
}

.cell-input:focus[b-h8r2h57vlp] {
    border-color: #C06820;
    background: #FFF5EE;
}

/* Locked derived fields (qty / UOM / price) while the Part → Pricing lookup is
   pending — matching can rewrite them, so editing is blocked until it settles. */
.cell-input:disabled[b-h8r2h57vlp] {
    color: #9A9A9A;
    background: rgba(0, 0, 0, 0.03);
    cursor: not-allowed;
}

/* Per-line match indicator. Smaller-footprint variant of .field-note;
   sits inside the table cell below its input. */
.cell-note[b-h8r2h57vlp] {
    font-size: 0.6875rem;
    margin-top: 0.25rem;
    line-height: 1.1;
}

/* Part cell: the match note and the "Choose part" picker share one line.
   width:0 keeps the row out of the column's intrinsic width, so it can spill
   over the description cell without widening the parts column or wrapping —
   the parts column stays sized by its input alone. */
.part-note-row[b-h8r2h57vlp] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    white-space: nowrap;
    width: 0;
    overflow: visible;
    position: relative;
    z-index: 2;
    /* The row overhangs the description input, so it must not swallow clicks
       meant for it. Only the interactive bits opt back in, below. */
    pointer-events: none;
}

/* Every parts row is its own stacking context (z-index above), so the open
   dropdown's fixed menu (z 2000) is confined to its row. Without this, a lower
   row — same z-index, later in the DOM — would paint its "Choose part" trigger
   over an open menu spilling down from the row above. Lifting the open row above
   its siblings keeps its menu on top. */
.part-note-row.dd-open[b-h8r2h57vlp] {
    z-index: 2001;
}

/* Flex items shrink to nothing inside a zero-width container without this. */
.part-note-row > *[b-h8r2h57vlp] {
    flex: 0 0 auto;
    margin-top: 0;
}

.part-note-row[b-h8r2h57vlp]  .sdd,
.part-note-row .match-retry-btn[b-h8r2h57vlp] {
    pointer-events: auto;
}

.cell-note.match[b-h8r2h57vlp] {
    color: #059669;
}

.cell-note.matching[b-h8r2h57vlp] {
    color: #6B6B6B;
    display: inline-flex;
    align-items: center;
    gap: 0.3125rem;
}

.cell-note.matching .dot[b-h8r2h57vlp] {
    width: 0.375rem;
    height: 0.375rem;
    border-radius: 50%;
    background: #9CA3AF;
    animation: match-pulse 1.4s ease-in-out infinite;
}

.cell-note.notfound[b-h8r2h57vlp] {
    color: #DC4A3A;
}

.cell-note.failed[b-h8r2h57vlp] {
    color: #B5443B;
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    flex-wrap: wrap;
}

.cell-note .match-retry-btn[b-h8r2h57vlp] {
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    color: #C06820;
    background: transparent;
    border: 1px solid #FCCF9A;
    border-radius: 0.25rem;
    padding: 0 0.375rem;
    cursor: pointer;
    line-height: 1.4;
}

.cell-note .match-retry-btn:hover[b-h8r2h57vlp] {
    background: #FFF5EE;
    border-color: #C06820;
}

.cell-note .match-retry-btn:disabled[b-h8r2h57vlp] {
    opacity: 0.55;
    cursor: not-allowed;
}

/* Stage suffix shown next to "Matched" — e.g. "(description, LIKE)".
   Dim and italic so the primary "Matched" text reads first; the stage
   label is for reviewers who care about how the match was made. */
.cell-note .stage-tag[b-h8r2h57vlp] {
    color: #9CA3AF;
    font-style: italic;
    margin-left: 0.25rem;
    font-weight: 400;
}

.mono[b-h8r2h57vlp] {
    font-family: var(--font-mono);
    font-size: 0.875rem;
}

.total-mismatch[b-h8r2h57vlp] {
    color: #D97706;
    font-weight: 600;
}

.total-mismatch-indicator[b-h8r2h57vlp] {
    margin-left: 0.35rem;
    font-size: 0.75rem;
    color: #D97706;
}
/* /Components/Pages/OrderEntry/Review/ReviewOrderInfoSection.razor.rz.scp.css */
/* Fields */
.fields-grid[b-0gxyi0yvpv] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.625rem;
}

.field-full[b-0gxyi0yvpv] {
    grid-column: 1 / -1;
}

.field-item[b-0gxyi0yvpv] {
    /* Subtle warm-neutral fill so each field reads as its own card against
       the white panel — the border alone wasn't enough separation. */
    background: #FAF9F7;
    border: 1px solid #E7E3DD;
    border-radius: 8px;
    padding: 0.625rem 0.75rem;
    transition: border-color 0.15s, background-color 0.15s;
}

.field-item:hover[b-0gxyi0yvpv] {
    border-color: #D6CFC5;
    background: #FCFBFA;
}

.field-item:focus-within[b-0gxyi0yvpv] {
    border-color: #C06820;
    box-shadow: 0 0 0 3px rgba(192, 104, 32, 0.1);
}

.field-label-row[b-0gxyi0yvpv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.25rem;
}

.field-label[b-0gxyi0yvpv] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #9CA3AF;
    font-weight: 500;
}

.field-input[b-0gxyi0yvpv] {
    width: 100%;
    border: none;
    background: transparent;
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 500;
    color: #1A1A1A;
    padding: 0;
    outline: none;
}

/* Field-vs-document mismatch marker: the field was edited to a value that
   isn't on the document. Amber, not red — an attention cue, not an error
   (it's often legitimately the case after an edit/alias). */
.field-input.doc-mismatch[b-0gxyi0yvpv] {
    box-shadow: inset 0 -2px 0 0 #E8A838;
    background: rgba(232, 168, 56, 0.13);
    border-radius: 3px;
}

/* .field-note{,.match,.matching,.notfound,.failed,.retry-btn,.stage-tag} live in
   the global evie.css so Order Entry and AP share one match-note style. */

/* Six-input ship-to grid. Two columns on wide layouts; collapses to one
   column under ~520px. Line 1 + Line 2 span both columns. */
.shipto-grid[b-0gxyi0yvpv] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
}

.shipto-grid .shipto-line1[b-0gxyi0yvpv],
.shipto-grid .shipto-line2[b-0gxyi0yvpv] {
    grid-column: 1 / -1;
}

@media (max-width: 520px) {
    .shipto-grid[b-0gxyi0yvpv] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/OrderEntry/Review/ReviewPartAliasDialog.razor.rz.scp.css */
/* Modal chrome + button styles, duplicated from the review page's scoped CSS —
   scoped styles don't cross component boundaries, and the global .modal-* /
   .btn styles (used by ConfirmDialog) are the dark-theme variants. */
.modal-overlay[b-mxgor8x7op] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 400;
}

.modal-card[b-mxgor8x7op] {
    background: #FFFFFF;
    border-radius: 10px;
    padding: 1.5rem;
    width: min(520px, 90vw);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.modal-title[b-mxgor8x7op] {
    margin: 0;
    font-size: 1.125rem;
    font-weight: 600;
    color: #1A1A1A;
}

.modal-sub[b-mxgor8x7op] {
    margin: 0;
    font-size: 0.875rem;
    color: #4B5563;
    line-height: 1.5;
}

.modal-actions[b-mxgor8x7op] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 0.25rem;
}

/* The checkbox list of corrections to remember. */
.part-alias-list[b-mxgor8x7op] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin: 0.75rem 0 1rem;
    max-height: 40vh;
    overflow-y: auto;
}

.part-alias-row[b-mxgor8x7op] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    cursor: pointer;
    font-size: 0.875rem;
    line-height: 1.35;
}

.part-alias-row input[type="checkbox"][b-mxgor8x7op] {
    margin-top: 0.15rem;
    flex: 0 0 auto;
}

.part-alias-text .mono[b-mxgor8x7op] {
    font-family: var(--font-mono);
}

.btn[b-mxgor8x7op] {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 500;
    border-radius: 0.5rem;
    padding: 0.5rem 1rem;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    border: 1px solid;
    transition: all 0.18s;
    white-space: nowrap;
    background: transparent;
}

.btn-ghost[b-mxgor8x7op] {
    color: #1A1A1A;
    border-color: #C8C8C8;
}

.btn-ghost:hover:not(:disabled)[b-mxgor8x7op] {
    border-color: #9CA3AF;
    color: #1A1A1A;
    background: #FAFAFA;
}

.btn-ghost:disabled[b-mxgor8x7op] {
    color: #B0B0B0;
    border-color: #ECECEC;
    cursor: not-allowed;
}

.btn-primary[b-mxgor8x7op] {
    background: #C06820;
    color: #FFF;
    border-color: #C06820;
    box-shadow: 0 3px 10px rgba(192, 104, 32, 0.22);
}

.btn-primary:hover:not(:disabled)[b-mxgor8x7op] {
    background: #A85818;
    box-shadow: 0 5px 16px rgba(192, 104, 32, 0.32);
    transform: translateY(-1px);
}

.btn-primary:disabled[b-mxgor8x7op] {
    opacity: 0.45;
    cursor: not-allowed;
    box-shadow: none;
}
/* /Components/Pages/OrderEntry/Review/ReviewSetAllPoDialog.razor.rz.scp.css */
/* Modal chrome + button styles, duplicated from the review page's scoped CSS —
   scoped styles don't cross component boundaries, and the global .modal-* /
   .btn styles (used by ConfirmDialog) are the dark-theme variants. Same reason
   ReviewPartAliasDialog carries its own copy. */
.modal-overlay[b-6gy1pxv1s1] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 400;
}

.modal-card[b-6gy1pxv1s1] {
    background: #FFFFFF;
    border-radius: 10px;
    padding: 1.5rem;
    width: min(440px, 90vw);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.modal-title[b-6gy1pxv1s1] {
    margin: 0;
    font-size: 1.125rem;
    font-weight: 600;
    color: #1A1A1A;
}

.modal-sub[b-6gy1pxv1s1] {
    margin: 0;
    font-size: 0.875rem;
    color: #4B5563;
    line-height: 1.5;
}

.modal-input[b-6gy1pxv1s1] {
    width: 100%;
    padding: 0.5rem 0.625rem;
    border: 1px solid #C8C8C8;
    border-radius: 0.5rem;
    font-size: 0.875rem;
    color: #1A1A1A;
    background: #FFFFFF;
    margin-top: 0.25rem;
}

.modal-input:focus[b-6gy1pxv1s1] {
    outline: none;
    border-color: #C06820;
    box-shadow: 0 0 0 3px rgba(192, 104, 32, 0.15);
}

.modal-input.mono[b-6gy1pxv1s1] {
    font-family: var(--font-mono);
}

.modal-actions[b-6gy1pxv1s1] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 0.25rem;
}

.btn[b-6gy1pxv1s1] {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 500;
    border-radius: 0.5rem;
    padding: 0.5rem 1rem;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    border: 1px solid;
    transition: all 0.18s;
    white-space: nowrap;
    background: transparent;
}

.btn-ghost[b-6gy1pxv1s1] {
    color: #1A1A1A;
    border-color: #C8C8C8;
}

.btn-ghost:hover:not(:disabled)[b-6gy1pxv1s1] {
    border-color: #9CA3AF;
    color: #1A1A1A;
    background: #FAFAFA;
}

.btn-primary[b-6gy1pxv1s1] {
    background: #C06820;
    color: #FFF;
    border-color: #C06820;
    box-shadow: 0 3px 10px rgba(192, 104, 32, 0.22);
}

.btn-primary:hover:not(:disabled)[b-6gy1pxv1s1] {
    background: #A85818;
    box-shadow: 0 5px 16px rgba(192, 104, 32, 0.32);
    transform: translateY(-1px);
}

.btn-primary:disabled[b-6gy1pxv1s1] {
    opacity: 0.45;
    cursor: not-allowed;
    box-shadow: none;
}
/* /Components/Pages/OrderEntry/Review/ReviewValidationSection.razor.rz.scp.css */
/* Validation cards */
.val-cards[b-43u43gmzza] {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.val-card[b-43u43gmzza] {
    border: 1.5px solid;
    border-radius: 6px;
    padding: 0.75rem 0.875rem;
    display: flex;
    align-items: flex-start;
    gap: 0.625rem;
}

.val-card.acked[b-43u43gmzza] {
    opacity: 0.65;
}

/* Held in place while the check it depends on runs. Muted and inert so it reads
   as "not settled yet" rather than something to act on — but still occupying its
   space, so the list doesn't collapse and re-expand under the reviewer. */
.val-card.pending[b-43u43gmzza] {
    opacity: 0.5;
    filter: grayscale(0.7);
}

.val-card.pending .val-check[b-43u43gmzza] {
    cursor: progress;
}

.val-pending[b-43u43gmzza] {
    display: inline-flex;
    align-items: center;
    gap: 0.3125rem;
    margin-left: 0.5rem;
    font-size: 0.6875rem;
    font-weight: 400;
    text-transform: lowercase;
    letter-spacing: 0.02em;
    color: #6B6B6B;
}

.val-pending .dot[b-43u43gmzza] {
    width: 0.375rem;
    height: 0.375rem;
    border-radius: 50%;
    background: #9CA3AF;
    animation: match-pulse 1.4s ease-in-out infinite;
}

.val-card.acked .val-title[b-43u43gmzza] {
    text-decoration: line-through;
}

.val-check[b-43u43gmzza] {
    flex: 0 0 auto;
    margin-top: 0.1rem;
    display: inline-flex;
    cursor: pointer;
}

.val-check input[type="checkbox"][b-43u43gmzza] {
    width: 1rem;
    height: 1rem;
    margin: 0;
    cursor: pointer;
    accent-color: #B45309;
}

.val-check input[type="checkbox"]:disabled[b-43u43gmzza] {
    cursor: default;
}

.val-helper[b-43u43gmzza] {
    font-size: 0.75rem;
    color: #6B6B6B;
    font-style: italic;
    margin-top: 0.25rem;
}

.val-body[b-43u43gmzza] {
    flex: 1 1 auto;
    min-width: 0;
}

.val-card.warn[b-43u43gmzza] {
    border-color: #FCD34D;
    background: #FFFBEB;
}

.val-card.error[b-43u43gmzza] {
    border-color: #FECACA;
    background: #FEF2F2;
}

.val-card.info[b-43u43gmzza] {
    border-color: #E5E5E5;
    background: #FAFAFA;
}

.val-title[b-43u43gmzza] {
    font-size: 0.875rem;
    font-weight: 600;
    color: #1A1A1A;
    margin-bottom: 0.2rem;
}

.val-text[b-43u43gmzza] {
    font-size: 0.75rem;
    color: #6B6B6B;
    line-height: 1.5;
}
/* /Components/Pages/OrderEntry/Sent.razor.rz.scp.css */
/* Page chrome for the Sent page. Section-specific styles live beside their
   components in ./Sent; primitives shared across sections (cards, buttons,
   match sub-lines, retry buttons, change rows) are kept here once and reach
   into the section components via ::deep from the page-rendered .sent-page
   wrapper (page-rendered elements match those rules too). */
.sent-page[b-xln5x4moxp] {
    width: 100%;
    padding-bottom: 3rem;
}

/* Base .oe-loading/.oe-empty is global (evie.css); only the page-specific
   empty-state heading margin stays scoped here. */
.oe-empty h2[b-xln5x4moxp] {
    font-family: var(--font-serif);
    font-size: 1.5rem;
    margin-bottom: 0.75rem;
}

/* Header */
.page-header[b-xln5x4moxp] {
    padding: 1.75rem 0 1.25rem;
}

.breadcrumb[b-xln5x4moxp] {
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #9CA3AF;
    margin-bottom: 0.5rem;
    display: flex;
    gap: 0.375rem;
}

.breadcrumb a[b-xln5x4moxp] {
    color: #C06820;
    text-decoration: none;
}

.breadcrumb a:hover[b-xln5x4moxp] {
    text-decoration: underline;
}

.bc-sep[b-xln5x4moxp] {
    color: #9CA3AF;
}

.header-top[b-xln5x4moxp] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.5rem;
}

.page-title[b-xln5x4moxp] {
    font-size: 1.375rem;
    font-weight: 400;
    color: #1A1A1A;
    line-height: 1.1;
    margin: 0 0 0.25rem 0;
}

.page-sub[b-xln5x4moxp] {
    font-size: 0.875rem;
    color: #6B6B6B;
    margin: 0;
}

.header-right[b-xln5x4moxp] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

/* Buttons — page-rendered and, via ::deep, the ones inside section components
   (retry buttons carry their own .match-retry-btn styling below). */
.btn[b-xln5x4moxp],
.sent-page[b-xln5x4moxp]  .btn {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 500;
    border-radius: 0.5rem;
    padding: 0.5rem 1rem;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    border: 1px solid;
    transition: all 0.18s;
    white-space: nowrap;
    background: transparent;
}

.btn-sm[b-xln5x4moxp],
.sent-page[b-xln5x4moxp]  .btn-sm {
    padding: 0.375rem 0.75rem;
    font-size: 0.8125rem;
}

/* Active by default so Back to list / View Original don't read as disabled. */
.btn-ghost[b-xln5x4moxp],
.sent-page[b-xln5x4moxp]  .btn-ghost {
    color: #1A1A1A;
    border-color: #C8C8C8;
}

.btn-ghost:hover:not(:disabled)[b-xln5x4moxp],
.sent-page[b-xln5x4moxp]  .btn-ghost:hover:not(:disabled) {
    border-color: #9CA3AF;
    color: #1A1A1A;
    background: #FAFAFA;
}

.btn-ghost:disabled[b-xln5x4moxp],
.sent-page[b-xln5x4moxp]  .btn-ghost:disabled {
    color: #B0B0B0;
    border-color: #ECECEC;
    cursor: not-allowed;
}

.btn-outline[b-xln5x4moxp] {
    color: #C06820;
    border-color: #FCCF9A;
}

.btn-outline:hover[b-xln5x4moxp] {
    background: #FFF5EE;
    border-color: #C06820;
}

.btn-primary[b-xln5x4moxp],
.sent-page[b-xln5x4moxp]  .btn-primary {
    background: #C06820;
    color: #FFF;
    border-color: #C06820;
}

.btn-primary:hover[b-xln5x4moxp],
.sent-page[b-xln5x4moxp]  .btn-primary:hover {
    background: #A85818;
}

/* Pills (header processing status) */
.pill[b-xln5x4moxp] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    border-radius: 999px;
    padding: 0.25rem 0.75rem;
    font-size: 0.6875rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border: 1px solid;
}

.pill-dot[b-xln5x4moxp] {
    width: 5px;
    height: 5px;
    border-radius: 50%;
}

.pill-sent[b-xln5x4moxp] {
    color: #166534;
    background: #F0FDF4;
    border-color: #86EFAC;
}

.pill-sent .pill-dot[b-xln5x4moxp] { background: #16A34A; }

.pill-ready[b-xln5x4moxp] {
    color: #14532D;
    background: #F0FDF4;
    border-color: #86EFAC;
}

.pill-ready .pill-dot[b-xln5x4moxp] { background: #16A34A; }

.pill-review[b-xln5x4moxp] {
    color: #92400E;
    background: #FFFBEB;
    border-color: #FCD34D;
}

.pill-review .pill-dot[b-xln5x4moxp] { background: #D97706; }

.pill-failed[b-xln5x4moxp] {
    color: #DC2626;
    background: #FEF2F2;
    border-color: #FECACA;
}

.pill-failed .pill-dot[b-xln5x4moxp] { background: #DC2626; }

/* Match sub-lines — shared by the summary strip and the order overview. */
.sent-page[b-xln5x4moxp]  .sum-sub {
    font-size: 0.75rem;
    color: #9CA3AF;
    margin-top: 0.15rem;
}

.sent-page[b-xln5x4moxp]  .sum-sub.matched {
    color: #059669;
    font-weight: 500;
}

.sent-page[b-xln5x4moxp]  .sum-sub.matching {
    color: #6B6B6B;
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
}

.sent-page[b-xln5x4moxp]  .sum-sub.matching::before {
    content: "";
    width: 0.4375rem;
    height: 0.4375rem;
    border-radius: 50%;
    background: #9CA3AF;
    animation: sum-match-pulse-b-xln5x4moxp 1.4s ease-in-out infinite;
}

@keyframes sum-match-pulse-b-xln5x4moxp {
    0%, 100% { opacity: 0.35; }
    50% { opacity: 1; }
}

.sent-page[b-xln5x4moxp]  .sum-sub.failed {
    color: #B5443B;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.sent-page[b-xln5x4moxp]  .match-retry-btn {
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    color: #C06820;
    background: transparent;
    border: 1px solid #FCCF9A;
    border-radius: 0.375rem;
    padding: 0.0625rem 0.4375rem;
    cursor: pointer;
}

.sent-page[b-xln5x4moxp]  .match-retry-btn:hover {
    background: #FFF5EE;
    border-color: #C06820;
}

.sent-page[b-xln5x4moxp]  .match-retry-btn:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

/* Stage suffix shown next to "Matched" — e.g. "(description, LIKE)".
   Dim and italic so the primary "Matched" text reads first. */
.sent-page[b-xln5x4moxp]  .cell-note .stage-tag,
.sent-page[b-xln5x4moxp]  .sum-sub .stage-tag {
    color: #9CA3AF;
    font-style: italic;
    margin-left: 0.25rem;
    font-weight: 400;
}

/* Post-send probe spinner — summary strip + per-line ERP column. */
.sent-page[b-xln5x4moxp]  .probe-spinner-sm {
    width: 10px;
    height: 10px;
    border: 2px solid #9CA3AF;
    border-top-color: transparent;
    border-radius: 50%;
    animation: probe-spin-b-xln5x4moxp 0.8s linear infinite;
    flex-shrink: 0;
}

@keyframes probe-spin-b-xln5x4moxp {
    to { transform: rotate(360deg); }
}

.sent-page[b-xln5x4moxp]  .muted {
    color: #9CA3AF;
}

/* Main layout */
.main[b-xln5x4moxp] {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 1.5rem;
    padding: 1.5rem 0 3rem;
    align-items: start;
    min-width: 0;
}

.left-col[b-xln5x4moxp],
.right-col[b-xln5x4moxp] {
    min-width: 0;
}

.left-col[b-xln5x4moxp],
.right-col[b-xln5x4moxp] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

/* Card — page-rendered (source document) and every section component. */
.sent-page[b-xln5x4moxp]  .card {
    background: #FFFFFF;
    border: 1.5px solid #E5E5E5;
    border-radius: 14px;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.sent-page[b-xln5x4moxp]  .card-header {
    background: #FAFAFA;
    border-bottom: 1px solid #E5E5E5;
    padding: 0.85rem 1.15rem;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
}

.sent-page[b-xln5x4moxp]  .card-title {
    font-size: 0.875rem;
    font-weight: 600;
    color: #1A1A1A;
}

.sent-page[b-xln5x4moxp]  .card-sub {
    font-size: 0.75rem;
    color: #9CA3AF;
    margin-top: 0.1rem;
}

/* Change rows — shared by the flag history and review changes cards. */
.sent-page[b-xln5x4moxp]  .change-list {
    display: flex;
    flex-direction: column;
}

.sent-page[b-xln5x4moxp]  .change-row {
    padding: 0.75rem 1.25rem;
    border-top: 1px solid #F3F4F6;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.sent-page[b-xln5x4moxp]  .change-row:first-child {
    border-top: none;
}

.sent-page[b-xln5x4moxp]  .change-row-head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.sent-page[b-xln5x4moxp]  .change-kind {
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    padding: 0.1rem 0.4rem;
    border-radius: 4px;
    border: 1px solid;
}

.sent-page[b-xln5x4moxp]  .change-kind.edit {
    color: #92400E;
    background: #FFFBEB;
    border-color: #FCD34D;
}

.sent-page[b-xln5x4moxp]  .change-kind.add {
    color: #14532D;
    background: #F0FDF4;
    border-color: #86EFAC;
}

.sent-page[b-xln5x4moxp]  .change-kind.remove {
    color: #DC2626;
    background: #FEF2F2;
    border-color: #FECACA;
}

.sent-page[b-xln5x4moxp]  .change-kind.flagged {
    color: #B91C1C;
    background: #FEF2F2;
    border-color: #FECACA;
}

.sent-page[b-xln5x4moxp]  .change-kind.resolved {
    color: #166534;
    background: #F0FDF4;
    border-color: #86EFAC;
}

.sent-page[b-xln5x4moxp]  .change-subject {
    font-size: 0.875rem;
    font-weight: 500;
    color: #1A1A1A;
}

.sent-page[b-xln5x4moxp]  .change-row-body {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-family: var(--font-mono);
    font-size: 0.8125rem;
}

.sent-page[b-xln5x4moxp]  .change-old {
    color: #9CA3AF;
    text-decoration: line-through;
}

.sent-page[b-xln5x4moxp]  .change-arrow {
    color: #9CA3AF;
}

.sent-page[b-xln5x4moxp]  .change-new {
    color: #1A1A1A;
    font-weight: 500;
}

.sent-page[b-xln5x4moxp]  .change-row-meta {
    font-size: 0.75rem;
    color: #9CA3AF;
}

/* Attachment (source document card — page-rendered) */
.attachment-row[b-xln5x4moxp] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.875rem 1.25rem;
}

.att-left[b-xln5x4moxp] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.att-icon[b-xln5x4moxp] {
    width: 40px;
    height: 40px;
    border-radius: 0.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    border: 1px solid #FCCF9A;
    color: #C06820;
    background: #FFF5EE;
}

.att-name[b-xln5x4moxp] {
    font-size: 0.875rem;
    font-weight: 500;
    color: #1A1A1A;
}

.att-meta[b-xln5x4moxp] {
    font-size: 0.75rem;
    color: #9CA3AF;
    margin-top: 0.15rem;
}

/* Toast */
.toast[b-xln5x4moxp] {
    position: fixed;
    bottom: 32px;
    left: 50%;
    transform: translateX(-50%);
    background: #1A1A1A;
    color: #FFFFFF;
    padding: 0.75rem 1.25rem;
    border-radius: 8px;
    font-size: 0.875rem;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2);
    z-index: 300;
}

@media (max-width: 1024px) {
    .main[b-xln5x4moxp] {
        grid-template-columns: 1fr;
    }
}

/* Why Resend is (temporarily) unavailable on a failed order — the staging
   double-push guard's explanation to the reviewer. */
/* Failure banner: why a send didn't complete, shown above the summary strip on
   an ERP-sync-failed order. Sits directly under the header so it's read before
   any of the "sent" language further down the page. */
.send-failure-note[b-xln5x4moxp] {
    margin: 0.75rem 1.75rem 0;
    padding: 0.75rem 0.875rem;
    border-radius: 0.5rem;
    border: 1px solid #FECACA;
    background: #FEF2F2;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    line-height: 1.45;
}

.send-failure-headline[b-xln5x4moxp] {
    color: #B91C1C;
    font-weight: 500;
}

.send-failure-detail[b-xln5x4moxp] {
    margin-top: 0.25rem;
    color: #7F1D1D;
    font-family: var(--font-mono);
    font-size: 0.75rem;
    word-break: break-word;
}

.resend-guard-note[b-xln5x4moxp] {
    margin: 0.75rem 1.75rem 0;
    padding: 0.625rem 0.875rem;
    border-radius: 0.5rem;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    line-height: 1.4;
}

.resend-guard-block[b-xln5x4moxp] {
    background: #FFF7ED;
    border: 1px solid #FED7AA;
    color: #9A3412;
}

.resend-guard-pending[b-xln5x4moxp] {
    background: #FAFAFA;
    border: 1px solid #E5E7EB;
    color: #6B7280;
}
/* /Components/Pages/OrderEntry/Sent/SentFlagHistory.razor.rz.scp.css */
/* Flag history rows reuse the shared .change-* suite from the page CSS;
   only the note body is specific to this card. */
.flag-row-note[b-3s2ylgekq4] {
    font-size: 0.8125rem;
    color: #1A1A1A;
    white-space: pre-wrap;
}
/* /Components/Pages/OrderEntry/Sent/SentLineItems.razor.rz.scp.css */
/* Read-only line items table with per-cell match notes and the ERP probe
   column. Retry buttons / stage tags / spinner come from the page CSS. */
.line-table-wrap[b-39g8illbar] {
    overflow-x: auto;
}

.po-line-table[b-39g8illbar] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.po-line-table th[b-39g8illbar] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #9CA3AF;
    padding: 0.6rem 0.75rem;
    text-align: left;
    font-weight: 500;
    background: #FAFAFA;
    border-bottom: 1px solid #E5E5E5;
    border-top: 1px solid #F3F4F6;
}

.po-line-table td[b-39g8illbar] {
    padding: 0.6rem 0.75rem;
    border-bottom: 1px solid #F3F4F6;
    vertical-align: top;
}

.po-line-table tbody tr:last-child td[b-39g8illbar] {
    border-bottom: none;
}

.mono[b-39g8illbar] {
    font-family: var(--font-mono);
    font-size: 0.8125rem;
}

.dim[b-39g8illbar] {
    color: #9CA3AF;
}

.empty-lines[b-39g8illbar] {
    padding: 0.875rem 1.25rem;
    color: #9CA3AF;
    font-size: 0.875rem;
}

/* Per-line match indicator inside a table cell. Mirrors the .field-note
   variants on Review but smaller-footprint to fit in a cell. */
.cell-note[b-39g8illbar] {
    font-size: 0.6875rem;
    margin-top: 0.25rem;
    line-height: 1.1;
}

.cell-note.match[b-39g8illbar] {
    color: #059669;
}

.cell-note.matching[b-39g8illbar] {
    color: #6B6B6B;
    display: inline-flex;
    align-items: center;
    gap: 0.3125rem;
}

.cell-note.matching .dot[b-39g8illbar] {
    width: 0.375rem;
    height: 0.375rem;
    border-radius: 50%;
    background: #9CA3AF;
    animation: sum-match-pulse 1.4s ease-in-out infinite;
}

.cell-note.notfound[b-39g8illbar] {
    color: #9CA3AF;
}

.cell-note.failed[b-39g8illbar] {
    color: #B5443B;
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    flex-wrap: wrap;
}

/* Per-line ERP reference rendered under the line number cell. Mirrors the
   header's .sum-erp colour (warm amber) so reviewers visually link the two
   "this came from the ERP" markers. */
.cell-note.erp-ref[b-39g8illbar] {
    color: #D97706;
    font-weight: 600;
    margin-top: 0.25rem;
}

/* Per-row line-probe indicator. */
.line-erp-col[b-39g8illbar] {
    width: 110px;
    white-space: nowrap;
}

.line-erp-cell[b-39g8illbar] {
    white-space: nowrap;
}

/* Match the header indicator's treatment: text-only colored ink, no
   pill/background. Light tinted backgrounds were muting the red/green
   in busy table rows. Same color values as .probe-inline so the lines
   read as visually consistent with the ERP Status sub-line. */
.line-erp-tag[b-39g8illbar] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.75rem;
    font-weight: 600;
}

.line-erp-tag.line-erp-pending[b-39g8illbar] { color: #6B7280; }
.line-erp-tag.line-erp-ok[b-39g8illbar]      { color: #16A34A; }
.line-erp-tag.line-erp-missing[b-39g8illbar] { color: #DC2626; }
.line-erp-tag.line-erp-warn[b-39g8illbar]    { color: #B45309; cursor: help; }
/* /Components/Pages/OrderEntry/Sent/SentOrderOverview.razor.rz.scp.css */
/* Order overview field grid. Match sub-lines (.sum-sub*) come from the page
   CSS under ::deep. */
.fields-grid[b-t41s8q8fih] {
    display: grid;
    grid-template-columns: 1fr 1fr;
}

.field-cell[b-t41s8q8fih] {
    padding: 0.7rem 0.9rem;
    border-bottom: 0.5px solid #F3F4F6;
    border-right: 0.5px solid #F3F4F6;
}

.field-cell:nth-child(2n)[b-t41s8q8fih] {
    border-right: none;
}

.field-cell.full[b-t41s8q8fih] {
    grid-column: 1 / -1;
    border-right: none;
}

.field-cell:nth-last-child(-n+2)[b-t41s8q8fih] {
    border-bottom: none;
}

.f-label[b-t41s8q8fih] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #9CA3AF;
    margin-bottom: 0.25rem;
    font-weight: 500;
}

.f-val[b-t41s8q8fih] {
    font-size: 0.875rem;
    font-weight: 500;
    color: #1A1A1A;
}

.f-val.muted[b-t41s8q8fih] {
    color: #9CA3AF;
}

/* Multi-line ship-to block render. Stacks each non-blank address part on
   its own line. */
.shipto-block > div[b-t41s8q8fih] {
    line-height: 1.4;
}
/* /Components/Pages/OrderEntry/Sent/SentProcessingDetails.razor.rz.scp.css */
/* Who/when audit rows. */
.audit-row[b-us8lmfi6ax] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.6rem 1.25rem;
    border-bottom: 0.5px solid #F3F4F6;
    gap: 0.75rem;
}

.audit-row:last-child[b-us8lmfi6ax] {
    border-bottom: none;
}

.audit-key[b-us8lmfi6ax] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #9CA3AF;
    font-weight: 500;
}

.audit-val[b-us8lmfi6ax] {
    font-size: 0.875rem;
    font-weight: 500;
    color: #1A1A1A;
    text-align: right;
}
/* /Components/Pages/OrderEntry/Sent/SentResendDialog.razor.rz.scp.css */
/* Resend confirmation modal. Buttons come from the page CSS under ::deep. */
.modal-overlay[b-xv1a916qct] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 400;
}

.modal-card[b-xv1a916qct] {
    background: #FFFFFF;
    border-radius: 10px;
    padding: 1.5rem;
    width: min(520px, 90vw);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.modal-title[b-xv1a916qct] {
    margin: 0;
    font-size: 1.125rem;
    font-weight: 600;
    color: #1A1A1A;
}

.modal-sub[b-xv1a916qct] {
    margin: 0;
    font-size: 0.875rem;
    color: #4B5563;
    line-height: 1.5;
}

.modal-sub p[b-xv1a916qct] {
    margin: 0;
}

.modal-actions[b-xv1a916qct] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 0.25rem;
}
/* /Components/Pages/OrderEntry/Sent/SentReviewChanges.razor.rz.scp.css */
/* Review changes rows reuse the shared .change-* suite from the page CSS;
   only the empty state is specific to this card. */
.empty-changes[b-l9d72khk0s] {
    padding: 0.875rem 1.25rem;
    color: #9CA3AF;
    font-size: 0.875rem;
}
/* /Components/Pages/OrderEntry/Sent/SentSummaryStrip.razor.rz.scp.css */
/* Summary strip cards. Match sub-lines (.sum-sub*) and the probe spinner are
   shared with other sections and live in the page CSS under ::deep. */
/* Reads as a card (full border, 14px radius, the same soft shadow as .card) while
   keeping the banner's own divided-columns layout and #FAFAFA fill — it was a
   full-bleed rule-under-a-strip, which sat oddly above the rounded cards below it.
   overflow-x:auto already clips to the padding box, so the radius holds when the
   columns overflow on a narrow viewport. */
.summary-strip[b-im5gpdrtkx] {
    padding: 1rem 1.25rem;
    border: 1.5px solid #E5E5E5;
    border-radius: 14px;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
    background: #FAFAFA;
    display: flex;
    align-items: stretch;
    overflow-x: auto;
}

.sum-card[b-im5gpdrtkx] {
    padding: 0 1.75rem;
    border-right: 1px solid #E5E5E5;
    min-width: 130px;
}

/* Boxed now, so the first column sits inside the border rather than flush against
   the old full-bleed edge — the strip's own padding provides the inset. */
.sum-card:first-child[b-im5gpdrtkx] {
    padding-left: 0;
}

.sum-card:last-child[b-im5gpdrtkx] {
    border-right: none;
}

.sum-label[b-im5gpdrtkx] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #9CA3AF;
    margin-bottom: 0.35rem;
    font-weight: 500;
}

.sum-val[b-im5gpdrtkx] {
    font-size: 0.875rem;
    font-weight: 600;
    color: #1A1A1A;
    line-height: 1.2;
}

.sum-val-sm[b-im5gpdrtkx] {
    font-size: 0.875rem;
    font-weight: 500;
    color: #1A1A1A;
}

.sum-erp[b-im5gpdrtkx] {
    font-size: 0.875rem;
    color: #D97706;
    font-weight: 600;
}

/* Order-level probe — rendered as one extra sub-line inside the ERP
   Status sum-card. Severity class flips by status / outcome (see
   LineProbeSeverity() in Sent.Probes.cs). */
.probe-inline[b-im5gpdrtkx] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-top: 0.15rem;
    font-size: 0.75rem;
    font-weight: 500;
}

.probe-inline.probe-pending[b-im5gpdrtkx] { color: #6B7280; }
.probe-inline.probe-ok[b-im5gpdrtkx]      { color: #16A34A; }
.probe-inline.probe-danger[b-im5gpdrtkx]  { color: #DC2626; }
.probe-inline.probe-warn[b-im5gpdrtkx]    { color: #B45309; cursor: help; }
/* /Components/Pages/OrderEntry/Sent/SentTimeline.razor.rz.scp.css */
/* Processing timeline. */
.timeline[b-5pieblt474] {
    display: flex;
    flex-direction: column;
    padding: 1rem 1.25rem;
}

.tl-item[b-5pieblt474] {
    display: flex;
    gap: 0.875rem;
    padding-bottom: 1.25rem;
}

.tl-item:last-child[b-5pieblt474] {
    padding-bottom: 0;
}

.tl-dot-wrap[b-5pieblt474] {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 20px;
    flex-shrink: 0;
}

.tl-dot[b-5pieblt474] {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    border: 2px solid;
}

.tl-dot.done[b-5pieblt474] {
    background: #16A34A;
    border-color: #16A34A;
}

.tl-dot.active[b-5pieblt474] {
    background: #C06820;
    border-color: #C06820;
}

.tl-dot.pending[b-5pieblt474] {
    background: #FFFFFF;
    border-color: #E5E5E5;
}

.tl-dot.failed[b-5pieblt474] {
    background: #DC2626;
    border-color: #DC2626;
}

.tl-line[b-5pieblt474] {
    width: 1.5px;
    background: #E5E5E5;
    flex: 1;
    margin-top: 0.125rem;
}

.tl-line.done[b-5pieblt474] {
    background: #86EFAC;
}

.tl-title[b-5pieblt474] {
    font-size: 0.875rem;
    font-weight: 600;
    color: #1A1A1A;
    margin-bottom: 0.1rem;
    line-height: 1.2;
}

.tl-time[b-5pieblt474] {
    font-size: 0.75rem;
    color: #9CA3AF;
}

.tl-note[b-5pieblt474] {
    font-size: 0.75rem;
    color: #6B6B6B;
    margin-top: 0.2rem;
    line-height: 1.45;
}
/* /Components/Pages/Profile/Index.razor.rz.scp.css */
/* Page shell + sidebar for Profile & Settings. The panels live in ./Panels as
   separate components; primitives they share (section headers, cards, forms,
   tables, badges, small buttons) are kept here once and reach into the panel
   components via ::deep from the page-rendered .profile-panels wrapper. The
   moved-in admin panels (AI settings, Extraction logs, Tenant queries,
   Client app, Modules, Reset data) render outside that wrapper so they keep
   their own standalone styling.
   Panel-specific suites (toggles, map-rows, GL, invite/pagination) live in
   the panel's own scoped CSS. */
.profile-shell[b-map5i92ahg] {
    display: grid;
    grid-template-columns: 220px 1fr;
    /* 56px = the sticky .evie-header height. Keeping these in sync prevents the
       shell from pushing the document past the viewport (phantom scrollbar). */
    min-height: calc(100vh - 56px);
    background: var(--evie-bg);
    /* Cancel .evie-main / .evie-content padding so the sidebar goes edge-to-edge.
       Values must match MainLayout.razor.css. */
    margin: -2rem -2rem -3.5rem -2rem;
}

@media (min-width: 1280px) {
    .profile-shell[b-map5i92ahg] {
        margin-left: -3rem;
        margin-right: -3rem;
    }
}

.profile-sidebar[b-map5i92ahg] {
    border-right: 1px solid var(--evie-border);
    background: #FAFAFA;
    padding: 28px 0 0px;
    display: flex;
    flex-direction: column;
    position: sticky;
    /* Sit below the 56px sticky header — not under it — and only fill the space
       between the header and the fixed footer. Using 100vh here was the bug: a
       full-viewport sidebar stacked under a 56px header overflowed the page by
       exactly the header's height. The extra 36px keeps the sidebar (and its
       scrollbar) clear of the ~35px fixed .evie-footer instead of running
       behind it. */
    top: 56px;
    height: calc(100vh - 56px - 36px);
    overflow-y: auto;
}

/* Standard properties for Firefox */
aside.profile-sidebar[b-map5i92ahg] {
    scrollbar-width: thin;
    scrollbar-color: rgba(0, 0, 0, 0.2) transparent;
}

/* WebKit properties for Chrome/Safari/Edge */
aside.profile-sidebar[b-map5i92ahg]::-webkit-scrollbar {
    width: 6px;
}

aside.profile-sidebar[b-map5i92ahg]::-webkit-scrollbar-track {
    background: transparent;
}

aside.profile-sidebar[b-map5i92ahg]::-webkit-scrollbar-thumb {
    background-color: rgba(0, 0, 0, 0.1);
    border-radius: 10px;
    border: 1px solid transparent;
    background-clip: content-box;
}

aside.profile-sidebar[b-map5i92ahg]::-webkit-scrollbar-thumb:hover {
    background-color: rgba(0, 0, 0, 0.3);
}

.sidebar-user[b-map5i92ahg] {
    padding: 0 20px 24px;
    border-bottom: 1px solid var(--evie-border);
    margin-bottom: 16px;
}

.user-avatar[b-map5i92ahg] {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--evie-primary-muted);
    border: 2px solid rgba(192, 104, 32, 0.3);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-mono);
    font-size: 13px;
    font-weight: 500;
    color: var(--evie-primary);
    margin-bottom: 10px;
}

.user-name[b-map5i92ahg] {
    font-size: 13px;
    font-weight: 600;
    color: var(--evie-text);
}

.user-email[b-map5i92ahg] {
    font-family: var(--font-mono);
    font-size: 10px;
    color: var(--evie-text-dim);
    margin-top: 2px;
}

.user-role[b-map5i92ahg] {
    display: inline-block;
    font-family: var(--font-mono);
    font-size: 8px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--evie-primary);
    background: var(--evie-primary-muted);
    border: 1px solid rgba(192, 104, 32, 0.3);
    padding: 2px 8px;
    border-radius: 999px;
    margin-top: 6px;
    font-weight: 500;
}

.nav-group[b-map5i92ahg] {
    margin-bottom: 6px;
}

.nav-group-label[b-map5i92ahg] {
    font-family: var(--font-mono);
    font-size: 8px;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--evie-text-dim);
    padding: 8px 20px 4px;
    font-weight: 500;
}

.nav-item[b-map5i92ahg] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 20px;
    cursor: pointer;
    color: var(--evie-text-muted);
    /* <button> does not inherit typography from its parent by default
       — without these lines the button-based nav items render in the
       browser's default button font while <a class="nav-item"> renders
       in the page's Outfit. Force inheritance so both types match. */
    font-family: inherit;
    font-size: 13px;
    font-weight: 400;
    line-height: inherit;
    letter-spacing: inherit;
    position: relative;
    background: transparent;
    border: none;
    width: 100%;
    text-align: left;
    transition: background-color 120ms, color 120ms;
}

.nav-item svg[b-map5i92ahg] {
    width: 15px;
    height: 15px;
    flex-shrink: 0;
    color: var(--evie-text-dim);
}

.nav-item:hover[b-map5i92ahg] {
    background: var(--evie-secondary-hover);
    color: var(--evie-text);
}

.nav-item.active[b-map5i92ahg] {
    background: var(--evie-primary-muted);
    color: var(--evie-primary);
    font-weight: 600;
}

.nav-item.active svg[b-map5i92ahg] {
    color: var(--evie-primary);
}

.nav-item.active[b-map5i92ahg]::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    background: var(--evie-primary);
    border-radius: 0 2px 2px 0;
}

.nav-item-danger[b-map5i92ahg] {
    color: #B91C1C;
}

.nav-item-danger svg[b-map5i92ahg] {
    color: #B91C1C;
}

.nav-item-danger:hover[b-map5i92ahg] {
    background: #FEF2F2;
    color: #991B1B;
}

.profile-main[b-map5i92ahg] {
    padding: 36px 48px 60px;
}

/* ===== Shared panel primitives (::deep — rendered by the profile-native
   panel components and the page's own inline Company placeholder alike). == */

.profile-panels[b-map5i92ahg]  .section-eyebrow {
    font-family: var(--font-mono);
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    color: var(--evie-text-dim);
    margin-bottom: 6px;
    font-weight: 500;
}

.profile-panels[b-map5i92ahg]  .section-title {
    font-family: var(--font-serif);
    font-size: 24px;
    font-weight: 700;
    color: var(--evie-text);
    margin: 0 0 4px 0;
}

.profile-panels[b-map5i92ahg]  .section-sub {
    font-size: 13px;
    font-weight: 300;
    color: var(--evie-text-muted);
    margin-bottom: 32px;
}

.profile-panels[b-map5i92ahg]  .card {
    background: var(--evie-surface);
    border: 1.5px solid var(--evie-border);
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
    margin-bottom: 20px;
}

.profile-panels[b-map5i92ahg]  .card-header {
    background: #FAFAFA;
    border-bottom: 1px solid var(--evie-border);
    padding: 13px 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.profile-panels[b-map5i92ahg]  .card-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--evie-text);
}

.profile-panels[b-map5i92ahg]  .card-sub-text {
    font-size: 11px;
    color: var(--evie-text-dim);
    font-weight: 300;
    margin-top: 1px;
}

.profile-panels[b-map5i92ahg]  .card-body {
    padding: 20px 22px;
}

.profile-panels[b-map5i92ahg]  .placeholder-body {
    color: var(--evie-text-dim);
    font-size: 12px;
    font-style: italic;
}

.profile-panels[b-map5i92ahg]  .form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
}

.profile-panels[b-map5i92ahg]  .form-full {
    grid-column: 1 / -1;
}

.profile-panels[b-map5i92ahg]  .form-actions {
    margin-top: 20px;
    display: flex;
    justify-content: flex-end;
    gap: 8px;
}

.profile-panels[b-map5i92ahg]  .f-label {
    display: block;
    font-family: var(--font-mono);
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--evie-text-dim);
    margin-bottom: 6px;
    font-weight: 500;
}

.profile-panels[b-map5i92ahg]  .f-input {
    width: 100%;
    border: 1.5px solid var(--evie-border);
    border-radius: 6px;
    padding: 9px 12px;
    font-family: var(--font-sans);
    font-size: 13px;
    color: var(--evie-text);
    background: var(--evie-surface);
    outline: none;
    transition: border-color 180ms, box-shadow 180ms;
}

.profile-panels[b-map5i92ahg]  .f-input:focus {
    border-color: var(--evie-primary);
    box-shadow: 0 0 0 3px rgba(192, 104, 32, 0.1);
}

.profile-panels[b-map5i92ahg]  .f-input:disabled {
    background: var(--evie-surface-hover);
    color: var(--evie-text-muted);
    cursor: not-allowed;
}

.profile-panels[b-map5i92ahg]  .f-input::placeholder {
    color: var(--evie-text-dim);
}

.profile-panels[b-map5i92ahg]  .f-select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M2 4l3 3 3-3' stroke='%239CA3AF' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
}

.profile-panels[b-map5i92ahg]  .btn-sm {
    padding: 6px 12px;
    font-size: 12px;
}

/* Active by default — muted ghost grey made enabled buttons look disabled. */
.profile-panels[b-map5i92ahg]  .btn-ghost {
    background: transparent;
    color: var(--evie-text);
    border: 1.5px solid #C8C8C8;
}

.profile-panels[b-map5i92ahg]  .btn-ghost:hover:not(:disabled) {
    color: var(--evie-text);
    border-color: #9CA3AF;
    background: var(--evie-surface-hover);
}

.profile-panels[b-map5i92ahg]  .btn-ghost:disabled {
    color: var(--evie-text-dim);
    border-color: var(--evie-border);
    cursor: not-allowed;
}

.profile-panels[b-map5i92ahg]  .users-action-message {
    padding: 10px 14px;
    border-radius: 6px;
    font-size: 13px;
    margin-bottom: 14px;
    border: 1px solid;
}

.profile-panels[b-map5i92ahg]  .users-action-success {
    color: var(--evie-teal);
    background: rgba(45, 212, 191, 0.08);
    border-color: rgba(45, 212, 191, 0.25);
}

.profile-panels[b-map5i92ahg]  .users-action-error {
    color: var(--evie-coral);
    background: rgba(248, 113, 113, 0.08);
    border-color: rgba(248, 113, 113, 0.25);
}

.profile-panels[b-map5i92ahg]  .users-search {
    margin-bottom: 14px;
}

.profile-panels[b-map5i92ahg]  .users-loading {
    padding: 24px;
    text-align: center;
    color: var(--evie-text-dim);
    font-size: 13px;
}

.profile-panels[b-map5i92ahg]  .users-table-wrap {
    overflow-x: auto;
}

.profile-panels[b-map5i92ahg]  .users-table {
    width: 100%;
    border-collapse: collapse;
}

.profile-panels[b-map5i92ahg]  .users-table th {
    text-align: left;
    font-family: var(--font-mono);
    font-size: 9px;
    font-weight: 500;
    color: var(--evie-text-dim);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    padding: 10px 12px;
    border-bottom: 1px solid var(--evie-border);
    white-space: nowrap;
}

.profile-panels[b-map5i92ahg]  .users-table td {
    padding: 12px;
    font-size: 13px;
    color: var(--evie-text-muted);
    border-bottom: 1px solid rgba(50, 55, 72, 0.4);
    vertical-align: middle;
}

.profile-panels[b-map5i92ahg]  .users-table tr:last-child td {
    border-bottom: none;
}

.profile-panels[b-map5i92ahg]  .users-table tr:hover td {
    background: var(--evie-surface);
}

.profile-panels[b-map5i92ahg]  .users-cell-strong {
    color: var(--evie-text);
    font-weight: 500;
}

.profile-panels[b-map5i92ahg]  .users-cell-dim {
    color: var(--evie-text-dim);
    font-size: 12px;
    white-space: nowrap;
}

.profile-panels[b-map5i92ahg]  .users-input-sm {
    padding: 4px 8px;
    font-size: 12px;
    width: 7rem;
    display: inline-block;
    margin-right: 4px;
}

.profile-panels[b-map5i92ahg]  .users-action-buttons {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

/* Status badges */
.profile-panels[b-map5i92ahg]  .status-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 9999px;
    font-size: 11px;
    font-weight: 500;
}

.profile-panels[b-map5i92ahg]  .status-active   { color: var(--evie-teal);     background: rgba(45, 212, 191, 0.12); }
.profile-panels[b-map5i92ahg]  .status-inactive { color: var(--evie-text-dim); background: rgba(100, 116, 139, 0.12); }

/* Small inline action buttons used in the panel tables.
   .btn / .btn-ghost come from the global stylesheet — these are size +
   semantic-tone modifiers only. */
.profile-panels[b-map5i92ahg]  .btn-xs {
    padding: 4px 8px;
    font-size: 11px;
    border-radius: 4px;
}

.profile-panels[b-map5i92ahg]  .btn-approve {
    color: var(--evie-teal);
    border: 1px solid rgba(45, 212, 191, 0.35);
    background: rgba(45, 212, 191, 0.1);
}

.profile-panels[b-map5i92ahg]  .btn-approve:hover:not(:disabled) {
    background: rgba(45, 212, 191, 0.2);
}

.profile-panels[b-map5i92ahg]  .btn-reject-hint {
    color: var(--evie-coral);
    border: 1px solid rgba(248, 113, 113, 0.35);
    background: transparent;
}

.profile-panels[b-map5i92ahg]  .btn-reject-hint:hover:not(:disabled) {
    background: rgba(248, 113, 113, 0.1);
}
/* /Components/Pages/Profile/Panels/ProfileAiSettingsPanel.razor.rz.scp.css */
/* Panel-specific only. The shared admin-panel primitives (.card padding,
   .section-title, .settings-grid, .setting-group, .toggle-grid, .data-table,
   .hint-text, .action-bar, the state classes) live in wwwroot/css/admin-panels.css
   under .admin-panel, so every moved-in panel gets them — not just this one. */

.cost-grid[b-2t0m8pwf2c] { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: 1rem; margin-bottom: 1rem; }
.cost-card[b-2t0m8pwf2c] { display: flex; flex-direction: column; gap: 0.25rem; padding: 1rem; background: var(--evie-surface); border-radius: 0.375rem; }
.cost-label[b-2t0m8pwf2c] { font-size: 0.75rem; font-weight: 500; color: var(--evie-text-dim); text-transform: uppercase; letter-spacing: 0.05em; }
.cost-value[b-2t0m8pwf2c] { font-size: 1.5rem; font-weight: 500; color: var(--evie-text); }
/* /Components/Pages/Profile/Panels/ProfileApiKeysPanel.razor.rz.scp.css */
/* Just-issued key flash (moved from the page CSS with the API keys panel). */
.temp-password-display[b-uezvta8ke4] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    margin-top: 14px;
    background: rgba(99, 102, 241, 0.06);
    border: 1px solid rgba(99, 102, 241, 0.2);
    border-radius: 6px;
}

.temp-password-value[b-uezvta8ke4] {
    font-family: var(--font-mono);
    font-size: 13px;
    color: var(--evie-text);
}
/* /Components/Pages/Profile/Panels/ProfileClientAppPanel.razor.rz.scp.css */
/* Lifted out of an inline <style> block in the .razor, which was global — generic
   names like `.btn-sm` and `.slug` were leaking to every page in the app. Same
   treatment as ProfileTenantQueriesPanel.

   Panel-specific only: the shared admin-panel primitives live in
   wwwroot/css/admin-panels.css. */

.tol-input[b-c8fyoxcxv5] { width: 5rem; text-align: right; font-variant-numeric: tabular-nums; }
.tol-sep[b-c8fyoxcxv5] { color: var(--evie-text-muted, #9aa3b2); }
.slug[b-c8fyoxcxv5] { color: var(--evie-text-muted, #9aa3b2); font-size: 0.85rem; }
.btn-sm[b-c8fyoxcxv5] { padding: 0.25rem 0.625rem; font-size: 0.85rem; }
.badge-uptodate[b-c8fyoxcxv5] { display: inline-block; margin-left: 0.4rem; padding: 0.05rem 0.45rem; font-size: 0.7rem; border-radius: 0.25rem; background: rgba(72, 187, 120, 0.15); color: #68d391; }
.confirm-inline[b-c8fyoxcxv5] { display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.85rem; color: var(--evie-text-muted, #9aa3b2); }
.upload-block[b-c8fyoxcxv5] { margin-top: 1rem; padding-top: 0.75rem; border-top: 1px solid var(--evie-border, rgba(255,255,255,0.08)); }
.upload-row[b-c8fyoxcxv5] { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; margin-top: 0.5rem; }
.version-input[b-c8fyoxcxv5] { max-width: 180px; }
.erp-mode-select[b-c8fyoxcxv5] { max-width: 160px; padding: 0.25rem 0.5rem; font-size: 0.85rem; }

/* Styled stand-in for the browser's "Choose File" button. The real input stays in
   the DOM (hidden) so the label activates it and Blazor's InputFile change event
   still fires — the file name is echoed in the hint under the row. */
.file-picker[b-c8fyoxcxv5] {
    display: inline-flex;
    align-items: center;
    padding: 0.4rem 0.875rem;
    font-size: 0.85rem;
    color: var(--evie-text);
    background: var(--evie-surface);
    border: 1px solid var(--evie-border);
    border-radius: 0.375rem;
    cursor: pointer;
    transition: background 150ms, border-color 150ms;
}

.file-picker:hover[b-c8fyoxcxv5] {
    border-color: var(--evie-primary);
}

.file-picker[b-c8fyoxcxv5]  input[type="file"] {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

/* The real input is visually hidden, so keyboard focus needs its own cue. */
.file-picker:focus-within[b-c8fyoxcxv5] {
    outline: 2px solid var(--evie-primary);
    outline-offset: 2px;
}
/* /Components/Pages/Profile/Panels/ProfileCompaniesPanel.razor.rz.scp.css */
/* Companies panel specifics. Card / table / form primitives come from the page
   CSS (Index.razor.css) under ::deep; the one-time-secret displays are copied
   from the API keys and users panels because their CSS is component-scoped. */
.temp-password-display[b-h1w1i3riuq] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    margin-top: 14px;
    background: rgba(99, 102, 241, 0.06);
    border: 1px solid rgba(99, 102, 241, 0.2);
    border-radius: 6px;
}

.temp-password-value[b-h1w1i3riuq] {
    font-family: var(--font-mono);
    font-size: 13px;
    color: var(--evie-text);
}

.invite-link-row[b-h1w1i3riuq] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
}

.invite-link-input[b-h1w1i3riuq] {
    flex: 1 1 auto;
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 12px;
}

.companies-check[b-h1w1i3riuq] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 14px;
    font-size: 13px;
    color: var(--evie-text-muted);
    cursor: pointer;
}

.companies-actions[b-h1w1i3riuq] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 1.5rem;
}

.f-hint[b-h1w1i3riuq] {
    margin-top: 6px;
    font-size: 12px;
    color: var(--evie-text-dim);
}

.f-hint-error[b-h1w1i3riuq] {
    color: var(--evie-coral);
}
/* /Components/Pages/Profile/Panels/ProfileExtractionLogsPanel.razor.rz.scp.css */
/* Panel-specific only — the shared admin-panel primitives live in
   wwwroot/css/admin-panels.css under .admin-panel. The .data-table override
   below is deliberate: this table has far more columns than the others and
   needs tighter cells than the shared padding gives. */

.filter-bar[b-p7h06xd9qa] { margin-bottom: 1rem; }
.filter-grid[b-p7h06xd9qa] { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: 0.75rem; margin-bottom: 0.75rem; }
.filter-field[b-p7h06xd9qa] { display: flex; flex-direction: column; gap: 0.25rem; }
.result-count[b-p7h06xd9qa] { font-size: 0.75rem; color: var(--evie-text-dim); margin-bottom: 0.75rem; }

.clickable-row[b-p7h06xd9qa] { cursor: pointer; }
.clickable-row:hover td[b-p7h06xd9qa] { background-color: var(--evie-surface); }

.phase-badge[b-p7h06xd9qa] { display: inline-block; padding: 0.125rem 0.5rem; border-radius: 0.25rem; font-size: 0.6875rem; font-weight: 500; }
.phase-primary[b-p7h06xd9qa] { color: var(--evie-indigo); background: rgba(99, 102, 241, 0.1); }
.phase-escalation[b-p7h06xd9qa] { color: var(--evie-amber); background: rgba(251, 191, 36, 0.1); }
.phase-verification[b-p7h06xd9qa] { color: var(--evie-teal); background: rgba(45, 212, 191, 0.1); }
.phase-mathretry[b-p7h06xd9qa] { color: var(--evie-coral); background: rgba(248, 113, 113, 0.1); }

.confidence-indicator[b-p7h06xd9qa] { font-size: 0.6875rem; font-weight: 500; padding: 0.125rem 0.375rem; border-radius: 0.25rem; }
.confidence-high[b-p7h06xd9qa] { color: var(--evie-teal); background: rgba(45, 212, 191, 0.1); }
.confidence-medium[b-p7h06xd9qa] { color: var(--evie-amber); background: rgba(251, 191, 36, 0.1); }
.confidence-low[b-p7h06xd9qa] { color: var(--evie-coral); background: rgba(248, 113, 113, 0.1); }

.detail-row td[b-p7h06xd9qa] { background: var(--evie-surface) !important; }
.detail-content[b-p7h06xd9qa] { padding: 0.75rem; display: flex; flex-direction: column; gap: 0.5rem; }
.detail-item[b-p7h06xd9qa] { font-size: 0.8125rem; color: var(--evie-text-muted); }
.detail-label[b-p7h06xd9qa] { font-weight: 500; color: var(--evie-text); margin-right: 0.375rem; }
.field-list[b-p7h06xd9qa] { display: flex; flex-wrap: wrap; gap: 0.375rem; margin-top: 0.375rem; }
.field-chip[b-p7h06xd9qa] { display: inline-block; padding: 0.125rem 0.5rem; border-radius: 0.25rem; font-size: 0.6875rem; background: rgba(100, 116, 139, 0.1); color: var(--evie-text-dim); }
.field-corrected[b-p7h06xd9qa] { background: rgba(251, 191, 36, 0.1); color: var(--evie-amber); }

.pagination[b-p7h06xd9qa] { display: flex; align-items: center; justify-content: center; gap: 1rem; padding: 1rem 0 0.5rem; }
.page-info[b-p7h06xd9qa] { font-size: 0.75rem; color: var(--evie-text-dim); }
.btn-xs[b-p7h06xd9qa] { padding: 0.1875rem 0.5rem; font-size: 0.6875rem; }

/* Tighter than the shared .data-table — this grid carries 9 columns. */
.data-table th[b-p7h06xd9qa] { padding: 0.625rem 0.75rem; }
.data-table td[b-p7h06xd9qa] { padding: 0.625rem 0.75rem; }
/* /Components/Pages/Profile/Panels/ProfileFieldMappingPanel.razor.rz.scp.css */
/* Compact 1-line column-mapping rows used by the Field Mapping panel. */
.map-row[b-em6qane2k1] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 0;
    border-bottom: 1px solid var(--evie-border);
}

.map-row:last-child[b-em6qane2k1] {
    border-bottom: none;
}

.map-row .f-input[b-em6qane2k1] {
    margin: 0;
    box-sizing: border-box;
    /* Override the user-agent intrinsic min-width on form controls
       (selects size themselves to fit their widest option, which makes
       them wider than read-only divs in the same row otherwise). */
    min-width: 0;
}

.map-row-srctype[b-em6qane2k1] {
    flex: 0 0 110px;
}

.map-row-field[b-em6qane2k1] {
    flex: 1 1 140px;
}

.map-row-arrow[b-em6qane2k1] {
    color: var(--evie-text-muted);
    font-size: 16px;
    user-select: none;
}

.map-row-column[b-em6qane2k1] {
    flex: 1 1 140px;
}

/* Pin both the Remove button AND the "required" badge to the same fixed
   width so the flex remainder distributes identically across required vs.
   non-required rows — otherwise the wider "REQUIRED" badge eats into the
   row's flex budget and shifts the field columns left for required rows. */
.map-row-remove[b-em6qane2k1],
.map-row-required[b-em6qane2k1] {
    flex: 0 0 90px;
    box-sizing: border-box;
    text-align: center;
}

.map-row-remove[b-em6qane2k1] {
    color: #DC4A3A;
    border: 1.5px solid rgba(220, 74, 58, 0.4);
    background: transparent;
}

.map-row-remove:hover:not(:disabled)[b-em6qane2k1] {
    background: rgba(220, 74, 58, 0.08);
    border-color: #DC4A3A;
}

.map-row-required[b-em6qane2k1] {
    font-size: 11px;
    color: var(--evie-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Required-row read-only stand-in: matches the dimensions of an enabled
   <select.f-input.f-select> so the row aligns vertically with non-required
   rows. display: flex centers the text inside the div the same way a
   form control would. */
.map-row-readonly[b-em6qane2k1] {
    display: flex;
    align-items: center;
    background: var(--evie-surface-hover);
    color: var(--evie-text-muted);
    cursor: not-allowed;
}
/* /Components/Pages/Profile/Panels/ProfileGlAccountsPanel.razor.rz.scp.css */
/* GL accounts panel (chart of accounts, moved in from the standalone page). */
.gl-code[b-48bhhjm16q] { font-family: var(--font-mono); }

.gl-inline-edit[b-48bhhjm16q] { display: flex; align-items: center; gap: 0.375rem; }
.gl-actions[b-48bhhjm16q] { display: flex; gap: 0.375rem; }

.gl-active-badge[b-48bhhjm16q] {
    display: inline-block;
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.6875rem;
    font-weight: 500;
}
.gl-active-yes[b-48bhhjm16q] { color: var(--evie-verified); background: var(--evie-verified-muted); }
.gl-active-no[b-48bhhjm16q] { color: var(--evie-text-dim); background: rgba(0, 0, 0, 0.05); }

.gl-add-row[b-48bhhjm16q] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--evie-border);
}
.gl-code-input[b-48bhhjm16q] { width: 9rem; font-family: var(--font-mono); }
.gl-desc-input[b-48bhhjm16q] { flex: 1; max-width: 24rem; }
.gl-empty[b-48bhhjm16q] { text-align: center; color: var(--evie-text-dim); }
/* /Components/Pages/Profile/Panels/ProfileModulesPanel.razor.rz.scp.css */
/* Panel-specific only — the shared admin-panel primitives live in
   wwwroot/css/admin-panels.css. */

.module-list[b-3itktm0u7v] {
    display: flex;
    flex-direction: column;
}

.module-row[b-3itktm0u7v] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.875rem 0;
    border-bottom: 1px solid var(--evie-border);
}

.module-row:last-child[b-3itktm0u7v] {
    border-bottom: none;
    padding-bottom: 0;
}

.module-row:first-child[b-3itktm0u7v] {
    padding-top: 0;
}

.module-info[b-3itktm0u7v] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.module-name[b-3itktm0u7v] {
    font-size: 0.875rem;
    color: var(--evie-text);
}

.module-status[b-3itktm0u7v] {
    font-size: 0.75rem;
    color: var(--evie-coral);
}

/* Switch — same geometry and motion as the Notifications panel's toggles, so the
   two settings surfaces read as one control set. */
.toggle[b-3itktm0u7v] {
    position: relative;
    width: 36px;
    height: 20px;
    flex-shrink: 0;
}

.toggle input[b-3itktm0u7v] {
    opacity: 0;
    width: 0;
    height: 0;
}

.toggle-track[b-3itktm0u7v] {
    position: absolute;
    inset: 0;
    background: var(--evie-border);
    border-radius: 999px;
    cursor: pointer;
    transition: background 200ms;
}

.toggle input:checked + .toggle-track[b-3itktm0u7v] {
    background: var(--evie-primary);
}

.toggle-track[b-3itktm0u7v]::after {
    content: '';
    position: absolute;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: #FFF;
    top: 3px;
    left: 3px;
    transition: transform 200ms;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
}

.toggle input:checked + .toggle-track[b-3itktm0u7v]::after {
    transform: translateX(16px);
}

.toggle input:disabled + .toggle-track[b-3itktm0u7v] {
    cursor: not-allowed;
    opacity: 0.6;
}

/* Keyboard users get no focus cue otherwise — the real input is visually hidden. */
.toggle input:focus-visible + .toggle-track[b-3itktm0u7v] {
    outline: 2px solid var(--evie-primary);
    outline-offset: 2px;
}
/* /Components/Pages/Profile/Panels/ProfileNotificationsPanel.razor.rz.scp.css */
/* Toggle switches (moved from the page CSS with the notifications panel). */
.toggle-row[b-5dpdjb9uzy] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 0;
    border-bottom: 1px solid var(--evie-border);
}

.toggle-row:last-child[b-5dpdjb9uzy] {
    border-bottom: none;
}

.toggle-label[b-5dpdjb9uzy] {
    font-size: 13px;
    font-weight: 500;
    color: var(--evie-text);
    margin-bottom: 2px;
}

.toggle-desc[b-5dpdjb9uzy] {
    font-size: 11px;
    color: var(--evie-text-muted);
    font-weight: 300;
}

.toggle[b-5dpdjb9uzy] {
    position: relative;
    width: 36px;
    height: 20px;
    flex-shrink: 0;
}

.toggle input[b-5dpdjb9uzy] {
    opacity: 0;
    width: 0;
    height: 0;
}

.toggle-track[b-5dpdjb9uzy] {
    position: absolute;
    inset: 0;
    background: var(--evie-border);
    border-radius: 999px;
    cursor: pointer;
    transition: background 200ms;
}

.toggle input:checked + .toggle-track[b-5dpdjb9uzy] {
    background: var(--evie-primary);
}

.toggle-track[b-5dpdjb9uzy]::after {
    content: '';
    position: absolute;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: #FFF;
    top: 3px;
    left: 3px;
    transition: transform 200ms;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
}

.toggle input:checked + .toggle-track[b-5dpdjb9uzy]::after {
    transform: translateX(16px);
}

.toggle input:disabled + .toggle-track[b-5dpdjb9uzy] {
    cursor: not-allowed;
    opacity: 0.6;
}
/* /Components/Pages/Profile/Panels/ProfileQueryConsolePanel.razor.rz.scp.css */
/* Scoped CSS follows the file that writes the element, so these rules are
   duplicated from ProfileTenantQueriesPanel.razor.css rather than shared — the
   console markup moved here when the tab was split, and a rule left behind in
   the other panel's sheet would not apply to it.

   Panel-specific only: .card / .setting-group / .input and the rest of the
   shared primitives come from wwwroot/css/admin-panels.css. */

.sql-editor[b-p15rargz7l] { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.875rem; }

.console-db-toggle[b-p15rargz7l] { display: flex; gap: 1.25rem; margin-top: 0.35rem; }
.console-db-toggle label[b-p15rargz7l] { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.9rem; color: var(--evie-text-muted, #9aa3b2); }

.form-actions[b-p15rargz7l] { display: flex; gap: 0.5rem; margin-top: 1rem; }
.hint[b-p15rargz7l] { color: var(--evie-text-muted, #9aa3b2); font-size: 0.85rem; margin-top: 0.4rem; }
.validation-error[b-p15rargz7l] { white-space: pre-wrap; word-break: break-word; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.85rem; margin: 0.25rem 0 0; max-height: 240px; overflow: auto; }

.preview-status[b-p15rargz7l] { margin-top: 1rem; }
.preview-results[b-p15rargz7l] { margin-top: 1rem; }
.preview-table-scroll[b-p15rargz7l] { max-height: 420px; overflow: auto; border: 1px solid var(--evie-border, rgba(255,255,255,0.08)); border-radius: 0.375rem; }
.preview-table-scroll .data-table[b-p15rargz7l] { margin: 0; }
.preview-table-scroll th[b-p15rargz7l] { position: sticky; top: 0; background: var(--evie-surface, #1b2130); z-index: 1; }
/* /Components/Pages/Profile/Panels/ProfileResetDataPanel.razor.rz.scp.css */
/* Panel-specific only — the shared admin-panel primitives (.card padding,
   .section-title, the state classes) live in wwwroot/css/admin-panels.css. */

.summary-grid[b-b85aecyyh6] { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: 0.75rem; }
.summary-item[b-b85aecyyh6] { display: flex; justify-content: space-between; padding: 0.5rem 0.75rem; background: var(--evie-surface); border-radius: 0.375rem; }
.summary-label[b-b85aecyyh6] { font-size: 0.8125rem; color: var(--evie-text-muted); }
.summary-value[b-b85aecyyh6] { font-size: 0.8125rem; font-weight: 500; color: var(--evie-text); font-family: var(--evie-font-mono); }

.danger-card[b-b85aecyyh6] { border-left: 3px solid var(--evie-coral); }
.danger-title[b-b85aecyyh6] { color: var(--evie-coral); }
.danger-text[b-b85aecyyh6] { font-size: 0.8125rem; color: var(--evie-text-muted); margin-bottom: 1rem; }

.confirm-group[b-b85aecyyh6] { display: flex; flex-direction: column; gap: 0.375rem; margin-bottom: 1rem; max-width: 16rem; }
.confirm-input[b-b85aecyyh6] { font-family: var(--evie-font-mono); }

.btn-destructive[b-b85aecyyh6] { background: rgba(248, 113, 113, 0.15); color: var(--evie-coral); border: 1px solid rgba(248, 113, 113, 0.3); padding: 0.5rem 1rem; border-radius: 0.375rem; cursor: pointer; }
.btn-destructive:hover:not(:disabled)[b-b85aecyyh6] { background: rgba(248, 113, 113, 0.25); }
.btn-destructive:disabled[b-b85aecyyh6] { opacity: 0.5; cursor: not-allowed; }

.result-card[b-b85aecyyh6] { margin-top: 1rem; }

/* This one is a standalone block rather than an .action-message pill, so it
   keeps its own roomier padding on top of the shared error colours. */
.error-state[b-b85aecyyh6] { padding: 1rem; }

.deleted-list[b-b85aecyyh6] { display: flex; flex-direction: column; gap: 0.25rem; }
.deleted-item[b-b85aecyyh6] { font-size: 0.8125rem; color: var(--evie-text-muted); font-family: var(--evie-font-mono); }
/* /Components/Pages/Profile/Panels/ProfileTenantQueriesPanel.razor.rz.scp.css */
/* Lifted out of an inline <style> block in the .razor. That block was global —
   every rule here leaked to every page in the app — and it still couldn't style
   .card / .setting-group, because those come from the shared admin-panel sheet
   (wwwroot/css/admin-panels.css) which the panel wasn't opted into.

   Panel-specific only: the shared primitives live in admin-panels.css. */

.page-subtitle[b-ldyhqkkj9i] { color: var(--evie-text-muted, #9aa3b2); margin-bottom: 1.25rem; }
.sql-preview[b-ldyhqkkj9i] { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 480px; }
.sql-editor[b-ldyhqkkj9i] { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.875rem; }

.badge-configured[b-ldyhqkkj9i] { display: inline-block; padding: 0.1rem 0.5rem; font-size: 0.7rem; border-radius: 0.25rem; background: rgba(99, 179, 237, 0.15); color: #63b3ed; }
.badge-fallback[b-ldyhqkkj9i] { display: inline-block; padding: 0.1rem 0.5rem; font-size: 0.7rem; border-radius: 0.25rem; background: rgba(160, 174, 192, 0.12); color: #a0aec0; }
.badge-required[b-ldyhqkkj9i] { font-size: 0.7rem; padding: 0.05rem 0.45rem; border-radius: 0.25rem; background: rgba(245, 101, 101, 0.15); color: #fc8181; }
.badge-optional[b-ldyhqkkj9i] { font-size: 0.7rem; padding: 0.05rem 0.45rem; border-radius: 0.25rem; background: rgba(160, 174, 192, 0.12); color: #a0aec0; }

.form-actions[b-ldyhqkkj9i] { display: flex; gap: 0.5rem; margin-top: 1rem; }
.btn-sm[b-ldyhqkkj9i] { padding: 0.25rem 0.625rem; font-size: 0.85rem; }
.hint[b-ldyhqkkj9i] { color: var(--evie-text-muted, #9aa3b2); font-size: 0.85rem; margin-top: 0.4rem; }

.validation-result[b-ldyhqkkj9i] { display: flex; flex-direction: column; gap: 0.25rem; margin-bottom: 1rem; }
.validation-error[b-ldyhqkkj9i] { white-space: pre-wrap; word-break: break-word; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.85rem; margin: 0.25rem 0 0; max-height: 240px; overflow: auto; }

.expected-params-panel[b-ldyhqkkj9i],
.expected-cols-panel[b-ldyhqkkj9i] { margin-top: 1rem; padding-top: 0.75rem; border-top: 1px solid var(--evie-border, rgba(255,255,255,0.08)); }
.param-chips[b-ldyhqkkj9i] { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.25rem; }
.param-chip[b-ldyhqkkj9i] { padding: 0.2rem 0.55rem; font-size: 0.85rem; border-radius: 0.25rem; background: rgba(99, 179, 237, 0.12); color: #63b3ed; }
.param-chip code[b-ldyhqkkj9i] { background: none; padding: 0; color: inherit; }

.column-spec-list[b-ldyhqkkj9i] { list-style: none; padding: 0; margin: 0.25rem 0 0; display: flex; flex-direction: column; gap: 0.35rem; }
.column-spec[b-ldyhqkkj9i] { display: flex; gap: 0.5rem; align-items: baseline; flex-wrap: wrap; }
.column-spec-name code[b-ldyhqkkj9i] { background: rgba(99, 179, 237, 0.12); color: #63b3ed; padding: 0.1rem 0.4rem; border-radius: 0.25rem; }
.column-spec-purpose[b-ldyhqkkj9i] { color: var(--evie-text-muted, #9aa3b2); font-size: 0.85rem; flex: 1; min-width: 280px; }

.preview-panel[b-ldyhqkkj9i] { margin-top: 1rem; padding-top: 0.75rem; border-top: 1px solid var(--evie-border, rgba(255,255,255,0.08)); }
.preview-params[b-ldyhqkkj9i] { display: flex; flex-direction: column; gap: 0.5rem; margin-top: 0.5rem; }
.preview-param-row[b-ldyhqkkj9i] { display: flex; align-items: center; gap: 0.75rem; }
.preview-param-label[b-ldyhqkkj9i] { flex: 0 0 220px; }
.preview-param-label code[b-ldyhqkkj9i] { background: rgba(99, 179, 237, 0.12); color: #63b3ed; padding: 0.1rem 0.4rem; border-radius: 0.25rem; }
.preview-param-row .input[b-ldyhqkkj9i] { flex: 1; }
.preview-status[b-ldyhqkkj9i] { margin-top: 1rem; }
.preview-results[b-ldyhqkkj9i] { margin-top: 1rem; }
.preview-table-scroll[b-ldyhqkkj9i] { max-height: 420px; overflow: auto; border: 1px solid var(--evie-border, rgba(255,255,255,0.08)); border-radius: 0.375rem; }
.preview-table-scroll .data-table[b-ldyhqkkj9i] { margin: 0; }
.preview-table-scroll th[b-ldyhqkkj9i] { position: sticky; top: 0; background: var(--evie-surface, #1b2130); z-index: 1; }
/* /Components/Pages/Profile/Panels/ProfileUsersPanel.razor.rz.scp.css */
/* Users & roles panel specifics (invite link, pagination, module-role
   pickers, global-role badges). Table + form primitives shared with the
   other panels live in the page CSS (Index.razor.css) under ::deep. */
.invite-link-row[b-og8cj1t2u0] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
}

.invite-link-input[b-og8cj1t2u0] {
    flex: 1 1 auto;
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 12px;
}

.users-module-roles[b-og8cj1t2u0] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.users-module-roles .users-input-sm[b-og8cj1t2u0] {
    width: 9.5rem;
    margin-right: 0;
}

.users-pagination[b-og8cj1t2u0] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    padding: 14px 0 4px;
}

.users-page-info[b-og8cj1t2u0] {
    font-size: 12px;
    color: var(--evie-text-dim);
}

/* Role badges */
.role-badge[b-og8cj1t2u0] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 500;
}

.role-viewer[b-og8cj1t2u0]   { color: var(--evie-text-dim); background: rgba(100, 116, 139, 0.12); }
.role-reviewer[b-og8cj1t2u0] { color: var(--evie-teal);     background: rgba(45, 212, 191, 0.12); }
.role-admin[b-og8cj1t2u0]    { color: var(--evie-amber);    background: rgba(251, 191, 36, 0.12); }
.role-system[b-og8cj1t2u0]   { color: var(--evie-coral);    background: rgba(248, 113, 113, 0.12); }
/* /Components/Pages/SwitchCompany.razor.rz.scp.css */
.switch-company[b-norppybgfp] {
    max-width: 34rem;
    margin: 3rem auto;
}

.switch-company-title[b-norppybgfp] {
    font-weight: 500;
    font-size: 1.5rem;
    color: var(--evie-text);
    margin: 0 0 0.5rem;
}

.switch-company-sub[b-norppybgfp] {
    color: var(--evie-text-muted);
    font-size: 0.875rem;
    line-height: 1.6;
    margin: 0 0 2rem;
}

.switch-company-error[b-norppybgfp] {
    background: var(--evie-coral-muted);
    color: var(--evie-coral);
    border-radius: 6px;
    padding: 0.75rem 1rem;
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.switch-company-empty[b-norppybgfp] {
    color: var(--evie-text-dim);
    font-size: 0.875rem;
}

.switch-company-list[b-norppybgfp] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.switch-company-option[b-norppybgfp] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.875rem 1rem;
    border: 1px solid var(--evie-border);
    border-radius: 8px;
    background: var(--evie-card);
    cursor: pointer;
}

.switch-company-option:hover[b-norppybgfp] {
    background: var(--evie-surface-hover);
}

.switch-company-option.is-current[b-norppybgfp] {
    border-color: var(--evie-primary);
}

.switch-company-label[b-norppybgfp] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    flex: 1;
    min-width: 0;
}

.switch-company-name[b-norppybgfp] {
    color: var(--evie-text);
    font-size: 0.9375rem;
}

.switch-company-slug[b-norppybgfp] {
    color: var(--evie-text-dim);
    font-family: var(--evie-font-mono);
    font-size: 0.75rem;
}

.switch-company-tag[b-norppybgfp] {
    color: var(--evie-text-muted);
    background: var(--evie-surface-hover);
    border-radius: 999px;
    padding: 0.125rem 0.625rem;
    font-size: 0.6875rem;
    letter-spacing: 0.02em;
}

.switch-company-tag-current[b-norppybgfp] {
    color: var(--evie-primary);
    background: var(--evie-primary-muted);
}

.switch-company-actions[b-norppybgfp] {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    margin-top: 2rem;
}

.switch-company-submit[b-norppybgfp] {
    background: var(--evie-primary);
    color: #FFFFFF;
    border: none;
    border-radius: 6px;
    padding: 0.625rem 1.5rem;
    font-size: 0.875rem;
    cursor: pointer;
}

.switch-company-submit:hover[b-norppybgfp] {
    background: var(--evie-primary-hover);
}

.switch-company-cancel[b-norppybgfp] {
    color: var(--evie-text-muted);
    font-size: 0.875rem;
}
/* /Components/Pages/Vault/DocumentDetail.razor.rz.scp.css */
.page-header[b-fttroignkk] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1.5rem;
}

.section-title[b-fttroignkk] {
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--evie-text);
    margin-bottom: 0.75rem;
}

.detail-grid[b-fttroignkk] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}

.meta-form[b-fttroignkk] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.form-field[b-fttroignkk] { display: flex; flex-direction: column; gap: 0.25rem; }
.form-actions[b-fttroignkk] { display: flex; gap: 0.5rem; }

.meta-info[b-fttroignkk] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--evie-border);
}

.meta-item[b-fttroignkk] {
    font-size: 0.75rem;
    color: var(--evie-text-dim);
}

.status-badge[b-fttroignkk] {
    display: inline-block;
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.6875rem;
    font-weight: 500;
}

.status-uploaded[b-fttroignkk] { color: var(--evie-text-dim); background: rgba(100, 116, 139, 0.1); }
.status-stamped[b-fttroignkk] { color: var(--evie-teal); background: rgba(45, 212, 191, 0.1); }
.status-archived[b-fttroignkk] { color: var(--evie-indigo); background: rgba(99, 102, 241, 0.1); }

.stamp-apply[b-fttroignkk] {
    display: flex;
    gap: 0.75rem;
    align-items: flex-end;
    margin-bottom: 1rem;
}

.stamp-type-badge[b-fttroignkk] {
    display: inline-block;
    padding: 0.125rem 0.5rem;
    border-radius: 0.25rem;
    font-size: 0.6875rem;
    font-weight: 500;
    color: var(--evie-indigo);
    background: rgba(99, 102, 241, 0.1);
}

.action-message[b-fttroignkk] { padding: 0.75rem 1rem; margin-top: 1rem; border-radius: 0.375rem; font-size: 0.8125rem; }
.success-state[b-fttroignkk] { color: var(--evie-teal); background: rgba(45, 212, 191, 0.1); }
.error-state[b-fttroignkk] { color: var(--evie-coral); background: rgba(248, 113, 113, 0.1); }
.empty-state[b-fttroignkk] { padding: 2rem; text-align: center; color: var(--evie-text-dim); font-size: 0.875rem; }
.data-table th[b-fttroignkk] { text-align: left; font-size: 0.75rem; font-weight: 500; color: var(--evie-text-dim); text-transform: uppercase; letter-spacing: 0.05em; padding: 0.625rem 1rem; border-bottom: 1px solid var(--evie-border); }
.data-table td[b-fttroignkk] { padding: 0.75rem 1rem; font-size: 0.8125rem; color: var(--evie-text-muted); border-bottom: 1px solid rgba(50, 55, 72, 0.5); }
.data-table tr:last-child td[b-fttroignkk] { border-bottom: none; }

.loading-state[b-fttroignkk] { display: flex; align-items: center; justify-content: center; gap: 0.625rem; padding: 2rem; font-size: 0.875rem; color: var(--evie-text-dim); }
/* /Components/Pages/Vault/Index.razor.rz.scp.css */
.page-header[b-2be6jlniiu] { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1.5rem; }
.section-title[b-2be6jlniiu] { font-size: 0.9375rem; font-weight: 500; color: var(--evie-text); margin-bottom: 0.75rem; }

.upload-card[b-2be6jlniiu] { margin-bottom: 1rem; }
.upload-form[b-2be6jlniiu] { display: flex; flex-direction: column; gap: 0.75rem; }
.form-field[b-2be6jlniiu] { display: flex; flex-direction: column; gap: 0.25rem; }
.file-info[b-2be6jlniiu] { font-size: 0.75rem; color: var(--evie-text-dim); }

.search-bar[b-2be6jlniiu] { display: flex; gap: 0.75rem; margin-bottom: 1rem; }
.search-input[b-2be6jlniiu] { flex: 1; }
.status-filter[b-2be6jlniiu] { width: 10rem; }

.clickable-row[b-2be6jlniiu] { cursor: pointer; }
.clickable-row:hover td[b-2be6jlniiu] { background-color: var(--evie-surface); }

.status-badge[b-2be6jlniiu] { display: inline-block; padding: 0.125rem 0.5rem; border-radius: 9999px; font-size: 0.6875rem; font-weight: 500; }
.status-uploaded[b-2be6jlniiu] { color: var(--evie-text-dim); background: rgba(100, 116, 139, 0.1); }
.status-stamped[b-2be6jlniiu] { color: var(--evie-teal); background: rgba(45, 212, 191, 0.1); }
.status-archived[b-2be6jlniiu] { color: var(--evie-indigo); background: rgba(99, 102, 241, 0.1); }

.action-message[b-2be6jlniiu] { padding: 0.75rem 1rem; margin-bottom: 1rem; border-radius: 0.375rem; font-size: 0.8125rem; }
.success-state[b-2be6jlniiu] { color: var(--evie-teal); background: rgba(45, 212, 191, 0.1); }
.error-state[b-2be6jlniiu] { color: var(--evie-coral); background: rgba(248, 113, 113, 0.1); }
.empty-state[b-2be6jlniiu] { padding: 2rem; text-align: center; color: var(--evie-text-dim); font-size: 0.875rem; }

.pagination[b-2be6jlniiu] { display: flex; align-items: center; justify-content: center; gap: 1rem; padding: 1rem 0 0.5rem; }
.page-info[b-2be6jlniiu] { font-size: 0.75rem; color: var(--evie-text-dim); }
.btn-xs[b-2be6jlniiu] { padding: 0.1875rem 0.5rem; font-size: 0.6875rem; }
.data-table th[b-2be6jlniiu] { text-align: left; font-size: 0.75rem; font-weight: 500; color: var(--evie-text-dim); text-transform: uppercase; letter-spacing: 0.05em; padding: 0.625rem 1rem; border-bottom: 1px solid var(--evie-border); }
.data-table td[b-2be6jlniiu] { padding: 0.75rem 1rem; font-size: 0.8125rem; color: var(--evie-text-muted); border-bottom: 1px solid rgba(50, 55, 72, 0.5); }
.data-table tr:last-child td[b-2be6jlniiu] { border-bottom: none; }

.loading-state[b-2be6jlniiu] { display: flex; align-items: center; justify-content: center; gap: 0.625rem; padding: 2rem; font-size: 0.875rem; color: var(--evie-text-dim); }
/* /Components/Shared/AppFooter.razor.rz.scp.css */
.evie-footer[b-2kxdq08pul] {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 40;
    background-color: #FFFFFF;
    border-top: 1px solid #E5E5E5;
    padding: 0.5rem 1rem;
    font-size: 0.75rem;
    color: #9CA3AF;
    display: flex;
    align-items: center;
}

.evie-footer-deploy[b-2kxdq08pul] {
    flex: 1;
    text-align: left;
}

.evie-footer-center[b-2kxdq08pul] {
    flex: 1;
    text-align: center;
}

.evie-footer-spacer[b-2kxdq08pul] {
    flex: 1;
}

.evie-footer-brand[b-2kxdq08pul] {
    font-weight: 500;
    color: #6B6B6B;
}
/* /Components/Shared/ConnectionWaitBanner.razor.rz.scp.css */
/* Amber, never coral: nothing has gone wrong, something is just paused.
   Coral is reserved for genuine issues (brand spec). */
.conn-wait[b-vpeihql2w8] {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    margin: 0.75rem 0;
    padding: 0.875rem 1rem;
    border: 1px solid var(--evie-warning);
    border-left-width: 3px;
    border-radius: 0.5rem;
    background: var(--evie-warning-muted);
    font-family: var(--font-sans);
}

.conn-wait-dot[b-vpeihql2w8] {
    flex: 0 0 auto;
    width: 0.5rem;
    height: 0.5rem;
    margin-top: 0.4rem;
    border-radius: 50%;
    background: var(--evie-warning);
    animation: conn-wait-pulse-b-vpeihql2w8 2s ease-in-out infinite;
}

/* A slow pulse reads as "still trying", which is exactly the state. */
@keyframes conn-wait-pulse-b-vpeihql2w8 {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.3; }
}

.conn-wait-body[b-vpeihql2w8] {
    min-width: 0;
}

.conn-wait-title[b-vpeihql2w8] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--evie-warning);
}

.conn-wait-text[b-vpeihql2w8] {
    margin-top: 0.25rem;
    font-size: 0.8125rem;
    line-height: 1.5;
    color: var(--evie-text-muted);
}

.conn-wait-meta[b-vpeihql2w8] {
    margin-top: 0.375rem;
    font-size: 0.75rem;
    color: var(--evie-text-dim);
}

@media (prefers-reduced-motion: reduce) {
    .conn-wait-dot[b-vpeihql2w8] { animation: none; }
}
/* /Components/Shared/DocumentReclassifyControl.razor.rz.scp.css */
.reclassify-control[b-5agy03k80i] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.reclassify-label[b-5agy03k80i] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--evie-text-muted);
}

.reclassify-row[b-5agy03k80i] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.reclassify-select[b-5agy03k80i] {
    min-width: 0;
    flex: 1;
}

.reclassify-hint[b-5agy03k80i] {
    font-size: 0.75rem;
    color: var(--evie-text-muted);
    margin: 0;
}

.reclassify-error[b-5agy03k80i] {
    color: var(--evie-coral, #c0392b);
    font-size: 0.8125rem;
    margin: 0;
}
/* /Components/Shared/DropZone.razor.rz.scp.css */
.dropzone[b-r4h97c5law] {
    position: relative;
    border: 2px dashed #E5E7EB;
    border-radius: 0.75rem;
    padding: 2.5% 1.5rem;
    text-align: center;
    transition: border-color 200ms, background-color 200ms;
    cursor: pointer;
    background-color: #FFFFFF;
}

.dropzone:hover[b-r4h97c5law] {
    border-color: #C06820;
    background-color: #FFF5EE;
}

.dropzone-active[b-r4h97c5law] {
    border-color: #C06820;
    background-color: #FFF5EE;
}

[b-r4h97c5law] .dropzone-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.dropzone-label[b-r4h97c5law] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
}

.dropzone-icon[b-r4h97c5law] {
    color: #C06820;
    width: 3rem;
    height: 3rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #E5E7EB;
    border-radius: 0.5rem;
    margin-bottom: 0.5rem;
    background-color: #FFFFFF;
}

.dropzone-text-primary[b-r4h97c5law] {
    font-size: 1rem;
    font-weight: 600;
    color: #111827;
}

.dropzone-text-secondary[b-r4h97c5law] {
    font-size: 0.8125rem;
    color: #6B7280;
}

.dropzone-click-link[b-r4h97c5law] {
    color: #C06820;
    text-decoration: underline;
}

.dropzone-pills[b-r4h97c5law] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem;
    margin-top: 0.75rem;
}
/* /Components/Shared/EmptyState.razor.rz.scp.css */
.empty-state[b-g6169xuznb] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 3rem 1.5rem;
    text-align: center;
}

.empty-state-icon[b-g6169xuznb] {
    font-size: 2rem;
    margin-bottom: 0.75rem;
    opacity: 0.5;
}

.empty-state-message[b-g6169xuznb] {
    font-size: 0.875rem;
    color: var(--evie-text-dim);
    max-width: 24rem;
    line-height: 1.625;
    margin: 0;
}
/* /Components/Shared/EVButton.razor.rz.scp.css */
.btn[b-t1kqiuj226] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1.25rem;
    background-color: var(--btn-bgcolor,#C06820);
    color: var(--btn-color,#FFFFFF);
    border: none;
    border-radius: 0.5rem;
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 150ms;
    width: var(--btn-height, 100px);
    height: var(--btn-width, 30px);
}

.btn:hover[b-t1kqiuj226] {
    background-color: #A85818;
}
/* /Components/Shared/EVDatePicker.razor.rz.scp.css */
.ev-datepicker[b-b68c5vi9yf] {
    position: relative;
    display: inline-flex;
}

/* --- Trigger button (matches EVDropdown filter-btn) --- */

.ev-datepicker-trigger[b-b68c5vi9yf] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    background-color: var(--evie-surface, #FFFFFF);
    color: var(--evie-text-muted, #6B6B6B);
    border: 1px solid var(--evie-border, #E5E5E5);
    border-radius: 9999px;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 150ms;
}

.ev-datepicker-trigger:hover[b-b68c5vi9yf] {
    border-color: var(--evie-primary, #C06820);
    color: var(--evie-primary, #C06820);
}

.ev-datepicker-trigger-active[b-b68c5vi9yf] {
    border-color: var(--evie-primary, #C06820);
    color: var(--evie-primary, #C06820);
}

.ev-datepicker-trigger-text[b-b68c5vi9yf] {
    white-space: nowrap;
}

.ev-datepicker-icon[b-b68c5vi9yf] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.ev-datepicker-chevron[b-b68c5vi9yf] {
    width: 12px;
    height: 12px;
    flex-shrink: 0;
    transition: transform 0.2s ease;
}

.ev-datepicker-chevron-open[b-b68c5vi9yf] {
    transform: rotate(180deg);
}

/* --- Popup panel (matches EVDropdown filter-dropdown-menu) --- */

.ev-datepicker-popup[b-b68c5vi9yf] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 50;
    min-width: 260px;
    border-radius: 8px;
    border: 1px solid var(--evie-border, #E5E5E5);
    background: var(--evie-surface, #FFFFFF);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    padding: 0.75rem;
    animation: ev-datepicker-fadeIn-b-b68c5vi9yf 0.15s ease;
}

/* --- Header: nav arrows + month/year --- */

.ev-datepicker-header[b-b68c5vi9yf] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.5rem;
}

.ev-datepicker-month-year[b-b68c5vi9yf] {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--evie-text, #1A1A1A);
}

.ev-datepicker-nav[b-b68c5vi9yf] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: var(--evie-text-muted, #6B6B6B);
    cursor: pointer;
    transition: background-color 150ms, color 150ms;
}

.ev-datepicker-nav:hover[b-b68c5vi9yf] {
    background-color: var(--evie-primary-muted, rgba(192, 104, 32, 0.12));
    color: var(--evie-primary, #C06820);
}

.ev-datepicker-nav svg[b-b68c5vi9yf] {
    width: 16px;
    height: 16px;
}

/* --- Weekday labels --- */

.ev-datepicker-weekdays[b-b68c5vi9yf] {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    text-align: center;
    margin-bottom: 0.25rem;
}

.ev-datepicker-weekday[b-b68c5vi9yf] {
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 600;
    color: var(--evie-text-dim, #9CA3AF);
    padding: 0.25rem 0;
}

/* --- Day grid --- */

.ev-datepicker-days[b-b68c5vi9yf] {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}

.ev-datepicker-day[b-b68c5vi9yf] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    margin: 0 auto;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: transparent;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 400;
    color: var(--evie-text, #1A1A1A);
    cursor: pointer;
    transition: background-color 150ms, color 150ms;
}

.ev-datepicker-day:hover:not(:disabled)[b-b68c5vi9yf] {
    background-color: var(--evie-primary-muted, rgba(192, 104, 32, 0.12));
    color: var(--evie-primary, #C06820);
}

.ev-datepicker-day:disabled[b-b68c5vi9yf] {
    color: var(--evie-text-dim, #9CA3AF);
    opacity: 0.4;
    cursor: default;
}

.ev-datepicker-day-outside[b-b68c5vi9yf] {
    color: var(--evie-text-dim, #9CA3AF);
}

.ev-datepicker-day-today[b-b68c5vi9yf] {
    border: 1px solid var(--evie-primary, #C06820);
}

.ev-datepicker-day-selected[b-b68c5vi9yf] {
    background-color: var(--evie-primary, #C06820);
    color: #FFFFFF;
    font-weight: 600;
}

.ev-datepicker-day-selected:hover:not(:disabled)[b-b68c5vi9yf] {
    background-color: var(--evie-primary-hover, #A85818);
    color: #FFFFFF;
}

/* --- Footer --- */

.ev-datepicker-footer[b-b68c5vi9yf] {
    display: flex;
    justify-content: space-between;
    margin-top: 0.5rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--evie-border, #E5E5E5);
}

.ev-datepicker-footer-link[b-b68c5vi9yf] {
    padding: 0;
    border: none;
    background: transparent;
    font-family: var(--font-sans);
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--evie-primary, #C06820);
    cursor: pointer;
    transition: color 150ms;
}

.ev-datepicker-footer-link:hover[b-b68c5vi9yf] {
    color: var(--evie-primary-hover, #A85818);
}

/* --- Animation --- */

@keyframes ev-datepicker-fadeIn-b-b68c5vi9yf {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}
/* /Components/Shared/EVDateRange.razor.rz.scp.css */
.ev-daterange[b-gaqdnk6gyb] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}

.ev-daterange-field[b-gaqdnk6gyb] {
    display: flex;
    flex-direction: column;
    gap: 0.1875rem;
}

.ev-daterange-label[b-gaqdnk6gyb] {
    font-family: var(--font-sans);
    font-size: 0.6875rem;
    font-weight: 500;
    color: var(--evie-text-muted, #6B6B6B);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.ev-daterange-separator[b-gaqdnk6gyb] {
    font-size: 0.875rem;
    color: var(--evie-text-muted, #6B6B6B);
    padding-top: 1rem;
}
/* /Components/Shared/EVDropdown.razor.rz.scp.css */
.filter-dropdown[b-006owc7q4s] {
    position: relative;
    display: inline-flex;
}

.filter-btn[b-006owc7q4s] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    background-color: #FFFFFF;
    color: #6B6B6B;
    border: 1px solid #E5E5E5;
    border-radius: 9999px;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 150ms;
    min-width: var(--dropdown-width);
}
.filter-btn:hover[b-006owc7q4s] {
    border-color: #C06820;
    color: #C06820;
}
/* Icon slots — layout only; caller icons own their size */
.filter-dropdown-icon[b-006owc7q4s] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

/* Chevron inherits filter-btn sizing and rotates on open */
.filter-dropdown-chevron[b-006owc7q4s] {
    width: 12px;
    height: 12px;
    flex-shrink: 0;
    transition: transform 0.2s ease;
}

.filter-dropdown-chevron-open[b-006owc7q4s] {
    transform: rotate(180deg);
}

/* Dropdown panel */
.filter-dropdown-menu[b-006owc7q4s] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    min-width: 100%;
    z-index: 50;
    display: flex;
    flex-direction: column;
    border-radius: 8px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    background: var(--evie-surface, #1a1a2e);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
    padding: 4px 0;
    animation: filterDropdownFadeIn-b-006owc7q4s 0.15s ease;
}

/* Option rows */
.filter-dropdown-option[b-006owc7q4s] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 8px 12px;
    border: none;
    background: transparent;
    color: inherit;
    font: inherit;
    font-size: 0.85rem;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.1s ease;
}

.filter-dropdown-option:hover[b-006owc7q4s] {
    background: rgba(192, 104, 32, 0.4);
}

.filter-dropdown-option-selected[b-006owc7q4s] {
    background: rgba(192, 104, 32, 1);
    font-weight: 500;
}

.filter-dropdown-option-text[b-006owc7q4s] {
    flex: 1;
    text-align: left;
}

@keyframes filterDropdownFadeIn-b-006owc7q4s {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}
/* /Components/Shared/EvieWordmark.razor.rz.scp.css */
.evie-wordmark[b-axcfgpss41] {
    display: inline-flex;
    align-items: center;
    text-decoration: none;
    gap: 0.5rem;
}

.evie-wordmark:hover[b-axcfgpss41] {
    text-decoration: none;
}

.evie-wordmark-icon[b-axcfgpss41] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 2.5px;
}

.evie-wordmark-bar[b-axcfgpss41] {
    display: block;
    height: 2.5px;
    border-radius: 1.5px;
    background-color: var(--evie-text);
}

.evie-wordmark-bar-primary[b-axcfgpss41] {
    background-color: var(--evie-primary);
    opacity: 1 !important;
}

.evie-wordmark-text[b-axcfgpss41] {
    font-family: var(--font-sans);
    font-weight: 300;
    letter-spacing: 0.07em;
    color: var(--evie-text);
    line-height: 1;
    text-transform: lowercase;
}
/* /Components/Shared/EVTextPill.razor.rz.scp.css */
.text-pill[b-hwe2dzq3ei] {
    display: inline-flex;
    align-items: center;
    padding: 0.25rem 0.75rem;
    border: 1px solid #E5E7EB;
    border-radius: 9999px;
    font-size: 0.6875rem;
    font-weight: 500;
    letter-spacing: 0.1em;
    color: #6B7280;
    white-space: nowrap;
}
/* /Components/Shared/EVUploadToast.razor.rz.scp.css */
.ev-upload-toast[b-qb2b5rcc2u] {
    position: fixed;
    bottom: 1.5rem;
    right: 1.5rem;
    z-index: 200;
    width: 360px;
    max-width: calc(100vw - 2rem);
    background-color: var(--evie-surface, #FFFFFF);
    border: 1px solid var(--evie-border, #E5E5E5);
    border-radius: 0.75rem;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    overflow: hidden;
    animation: ev-toast-slide-in-b-qb2b5rcc2u 250ms ease-out;
}

@keyframes ev-toast-slide-in-b-qb2b5rcc2u {
    from {
        opacity: 0;
        transform: translateY(1rem);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.ev-upload-toast-header[b-qb2b5rcc2u] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem 0.5rem;
}

.ev-upload-toast-title[b-qb2b5rcc2u] {
    font-family: var(--font-sans, 'Outfit', sans-serif);
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--evie-text, #1A1A1A);
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.ev-upload-toast-close[b-qb2b5rcc2u] {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--evie-text-muted, #6B6B6B);
    font-size: 0.875rem;
    padding: 0.125rem 0.25rem;
    border-radius: 4px;
    line-height: 1;
    transition: color 150ms, background-color 150ms;
}

.ev-upload-toast-close:hover[b-qb2b5rcc2u] {
    color: var(--evie-text, #1A1A1A);
    background-color: var(--evie-surface-hover, #F5F5F5);
}

.ev-upload-toast-body[b-qb2b5rcc2u] {
    padding: 0 1rem 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-height: 240px;
    overflow-y: auto;
}

.ev-upload-toast-entry[b-qb2b5rcc2u] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.5rem 0.625rem;
    border-radius: 0.5rem;
}

.entry-success[b-qb2b5rcc2u] {
    background-color: var(--evie-verified-muted, rgba(46, 139, 87, 0.12));
}

.entry-failure[b-qb2b5rcc2u] {
    background-color: var(--evie-error-muted, #FEF2F2);
}

.ev-upload-toast-icon[b-qb2b5rcc2u] {
    flex-shrink: 0;
    width: 1.25rem;
    height: 1.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.75rem;
    font-weight: 700;
    border-radius: 50%;
    line-height: 1;
}

.entry-success .ev-upload-toast-icon[b-qb2b5rcc2u] {
    color: var(--evie-verified, #16A34A);
}

.entry-failure .ev-upload-toast-icon[b-qb2b5rcc2u] {
    color: var(--evie-error, #FEF2F2);
}

.ev-upload-toast-detail[b-qb2b5rcc2u] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    min-width: 0;
}

.ev-upload-toast-filename[b-qb2b5rcc2u] {
    font-family: var(--font-sans, 'Outfit', sans-serif);
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--evie-text, #1A1A1A);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ev-upload-toast-message[b-qb2b5rcc2u] {
    font-family: var(--font-sans, 'Outfit', sans-serif);
    font-size: 0.75rem;
    color: var(--evie-text-muted, #6B6B6B);
}

.ev-upload-toast-timer[b-qb2b5rcc2u] {
    height: 3px;
    background-color: var(--evie-border, #E5E5E5);
}

.ev-upload-toast-timer-bar[b-qb2b5rcc2u] {
    height: 100%;
    background-color: var(--evie-primary, #C06820);
    width: 100%;
    animation: ev-toast-timer-shrink-b-qb2b5rcc2u linear forwards;
}

@keyframes ev-toast-timer-shrink-b-qb2b5rcc2u {
    from {
        width: 100%;
    }
    to {
        width: 0%;
    }
}
/* /Components/Shared/GlAssignmentCard.razor.rz.scp.css */
.gl-hint[b-eh43ojmd2t] {
    font-size: 0.75rem;
    color: var(--evie-text-muted);
    margin: 0 0 0.5rem;
}

.gl-suggestion[b-eh43ojmd2t] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.625rem 0.75rem;
    margin-bottom: 0.625rem;
    border: 1px solid var(--evie-border);
    border-radius: 0.375rem;
}

.gl-suggestion-text[b-eh43ojmd2t] {
    font-size: 0.8125rem;
    color: var(--evie-text-muted);
}

.gl-select-row[b-eh43ojmd2t] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.gl-readonly[b-eh43ojmd2t] {
    font-size: 0.875rem;
    color: var(--evie-text);
}

.gl-unassigned[b-eh43ojmd2t] {
    color: var(--evie-text-muted);
    font-style: italic;
}

.gl-error[b-eh43ojmd2t] {
    color: var(--evie-coral, #c0392b);
    font-size: 0.8125rem;
    margin-top: 0.375rem;
}

.mono[b-eh43ojmd2t] {
    font-family: var(--font-mono, monospace);
}
/* /Components/Shared/LineItemsTable.razor.rz.scp.css */
.line-items-section[b-lira8yfzy3] {
    margin-top: 1rem;
}

.line-items-header[b-lira8yfzy3] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--evie-text-muted);
    margin: 0 0 0.5rem;
}

.line-list[b-lira8yfzy3] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.line-card[b-lira8yfzy3] {
    border: 1px solid var(--evie-border);
    border-radius: 0.5rem;
    overflow: hidden;
    background: var(--evie-surface);
}

.line-card-expanded[b-lira8yfzy3] {
    border-color: var(--evie-primary);
}

/* Compact, scannable summary row */
.line-summary[b-lira8yfzy3] {
    display: flex;
    align-items: flex-start;
    gap: 0.2rem;
    width: 100%;
    padding: 0.5rem 0.625rem;
    background: transparent;
    border: none;
    cursor: pointer;
    text-align: left;
    color: var(--evie-text);
}

.line-summary:hover[b-lira8yfzy3] {
    background: var(--evie-bg);
}

.line-chevron[b-lira8yfzy3] {
    flex-shrink: 0;
    color: var(--evie-text-muted);
    font-size: 0.75rem;
    width: 0.75rem;
    padding-top: 0.125rem;
}

.line-summary-body[b-lira8yfzy3] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

/* Part # (left) and line total (right) share the top row. */
.line-summary-top[b-lira8yfzy3] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
}

.line-summary-primary[b-lira8yfzy3] {
    font-family: var(--font-mono, monospace);
    font-size: 0.8125rem;
    font-weight: 600;
    min-width: 0;
    overflow-wrap: anywhere;
}

.line-summary-headline[b-lira8yfzy3] {
    flex-shrink: 0;
    font-size: 0.8125rem;
    font-weight: 600;
}

/* Description spans the full width and clamps to 3 lines (full text in title). */
.line-summary-desc[b-lira8yfzy3] {
    font-size: 0.75rem;
    color: var(--evie-text-muted);
    display: -webkit-box;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.line-summary-sub[b-lira8yfzy3] {
    font-size: 0.6875rem;
    color: var(--evie-text-muted);
}

/* Roomy edit/detail panel */
.line-detail[b-lira8yfzy3] {
    padding: 0.625rem 0.75rem 0.75rem;
    border-top: 1px solid var(--evie-border);
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.line-field[b-lira8yfzy3] {
    display: flex;
    flex-direction: column;
    gap: 0.1875rem;
}

.line-field-label[b-lira8yfzy3] {
    font-size: 0.6875rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--evie-text-dim);
}

.line-field-input[b-lira8yfzy3] {
    width: 100%;
}

.line-field-readonly[b-lira8yfzy3] {
    font-size: 0.875rem;
    color: var(--evie-text);
    padding: 0.25rem 0;
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
}

/* Discrepancy (recalculated ≠ extracted): amber, matching the rest of the app. */
.line-field-discrepancy[b-lira8yfzy3] {
    background: #FFFBEB;
    border: 1px solid #FCD34D;
    border-radius: 0.375rem;
    padding: 0.25rem 0.5rem;
    color: #92400E;
}

.line-field-disc-mark[b-lira8yfzy3] {
    color: #B45309;
    font-size: 0.75rem;
    cursor: help;
}

.line-detail-actions[b-lira8yfzy3] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 0.125rem;
}
/* /Components/Shared/ModuleCard.razor.rz.scp.css */
.module-card[b-b45xxqp80g] {
    display: flex;
    flex-direction: column;
    background-color: #FFFFFF;
    border: 1px solid #E5E5E5;
    border-radius: 0.75rem;
    padding: 1.5rem;
    text-decoration: none;
    transition: all 200ms ease-out;
    min-height: 200px;
}

.module-card-active[b-b45xxqp80g] {
    cursor: pointer;
}

.module-card-active:hover[b-b45xxqp80g] {
    border-color: #C06820;
    box-shadow: 0 0 0 1px #C06820;
}

.module-card-disabled[b-b45xxqp80g] {
    opacity: 0.5;
    cursor: default;
}

.module-card-header[b-b45xxqp80g] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin-bottom: 0.75rem;
}

.module-card-icon[b-b45xxqp80g] {
    width: 48px;
    height: 48px;
    background-color: rgba(192, 104, 32, 0.1);
    border-radius: 0.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #C06820;
    flex-shrink: 0;
}

.module-card-icon-disabled[b-b45xxqp80g] {
    background-color: #F5F5F5;
    color: #9CA3AF;
}

.module-card-title[b-b45xxqp80g] {
    font-size: 1rem;
    font-weight: 600;
    color: #1A1A1A;
    margin: 0;
}

.module-card-disabled .module-card-title[b-b45xxqp80g] {
    color: #9CA3AF;
}

.module-card-desc[b-b45xxqp80g] {
    font-size: 0.875rem;
    color: #6B6B6B;
    margin: 0;
    line-height: 1.5;
    flex: 1;
}

.module-card-disabled .module-card-desc[b-b45xxqp80g] {
    color: #9CA3AF;
}

.module-card-footer[b-b45xxqp80g] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 1rem;
    padding-top: 1rem;
}

.module-card-status[b-b45xxqp80g] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.6875rem;
    font-weight: 500;
    letter-spacing: 0.1em;
    color: #C06820;
}

.module-card-status-dot[b-b45xxqp80g] {
    width: 6px;
    height: 6px;
    background-color: #C06820;
    border-radius: 50%;
}

.module-card-arrow[b-b45xxqp80g] {
    font-size: 1.25rem;
    color: #C06820;
    transition: transform 150ms;
}

.module-card-active:hover .module-card-arrow[b-b45xxqp80g] {
    transform: translateX(4px);
}

.module-card-lock[b-b45xxqp80g] {
    color: #9CA3AF;
    margin-left: auto;
}
/* /Components/Shared/ModuleNav.razor.rz.scp.css */
/* Moved here from MainLayout.razor.css along with the markup.

   Scoped CSS follows the .razor file that writes the element, not the class name:
   once the <nav> moved into this component, `.evie-nav` in the layout's stylesheet
   stopped matching it and the nav lost `margin-left: auto`, sliding left to sit
   against the logo. Same trap as the Profile admin panels (docs/potential-bugs.md D1).

   The link rules need ::deep because NavLink is a component — the <a> it renders
   carries NavLink's scope, not this one's. */

.evie-nav[b-h9kioqkbyi] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    /* Pushes the module links off the brand and over toward the header actions. */
    margin-left: auto;
}

[b-h9kioqkbyi] .evie-nav-link {
    padding: 0.5rem 1rem;
    font-size: 0.875rem;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.85);
    text-decoration: none;
    border-radius: 0.375rem;
    transition: background-color 150ms, color 150ms;
}

[b-h9kioqkbyi] .evie-nav-link:hover {
    background-color: rgba(255, 255, 255, 0.1);
    color: #FFFFFF;
}

[b-h9kioqkbyi] .evie-nav-link.active {
    background-color: rgba(255, 255, 255, 0.15);
    color: #FFFFFF;
}
/* /Components/Shared/NotificationBell.razor.rz.scp.css */
.notif-bell[b-0ya9bep7fy] {
    position: relative;
}

/* Match the look of .evie-header-icon in MainLayout — duplicated here because
   Blazor CSS isolation scopes that class to the layout component. */
.notif-bell-btn[b-0ya9bep7fy] {
    position: relative;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: none;
    background: transparent;
    color: rgba(255, 255, 255, 0.85);
    border-radius: 50%;
    cursor: pointer;
    transition: background-color 150ms, color 150ms;
}

.notif-bell-btn:hover[b-0ya9bep7fy] {
    background-color: rgba(255, 255, 255, 0.1);
    color: #FFFFFF;
}

.notif-bell-dot[b-0ya9bep7fy] {
    position: absolute;
    top: 6px;
    right: 6px;
    width: 9px;
    height: 9px;
    background-color: #F59E0B; /* Amber per spec */
    border-radius: 50%;
    border: 2px solid #1F2937;
    pointer-events: none;
}

.notif-drawer[b-0ya9bep7fy] {
    position: absolute;
    right: 0;
    top: calc(100% + 0.5rem);
    width: 22rem;
    max-height: 28rem;
    display: flex;
    flex-direction: column;
    background-color: #FFFFFF;
    border: 1px solid #E5E5E5;
    border-radius: 0.75rem;
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.15);
    z-index: 50;
    overflow: hidden;
}

.notif-drawer-header[b-0ya9bep7fy] {
    padding: 0.75rem 1rem;
    border-bottom: 1px solid #E5E5E5;
}

.notif-drawer-title[b-0ya9bep7fy] {
    font-size: 0.875rem;
    font-weight: 500;
    color: #1A1A1A;
}

.notif-drawer-body[b-0ya9bep7fy] {
    overflow-y: auto;
    flex: 1;
}

.notif-drawer-empty[b-0ya9bep7fy] {
    padding: 1.25rem 1rem;
    text-align: center;
    color: #9CA3AF;
    font-size: 0.875rem;
}

.notif-item[b-0ya9bep7fy] {
    padding: 0.625rem 1rem;
    border-bottom: 1px solid #F3F4F6;
}

.notif-item:last-child[b-0ya9bep7fy] {
    border-bottom: none;
}

.notif-item-unread[b-0ya9bep7fy] {
    background-color: rgba(245, 158, 11, 0.06);
}

.notif-item-message[b-0ya9bep7fy] {
    font-size: 0.875rem;
    color: #1A1A1A;
    line-height: 1.35;
}

.notif-item-message a[b-0ya9bep7fy] {
    color: inherit;
    text-decoration: none;
}

.notif-item-message a:hover[b-0ya9bep7fy] {
    text-decoration: underline;
}

.notif-item-time[b-0ya9bep7fy] {
    margin-top: 0.25rem;
    font-size: 0.75rem;
    color: #9CA3AF;
}

.notif-bell-backdrop[b-0ya9bep7fy] {
    position: fixed;
    inset: 0;
    z-index: 49;
}
/* /Components/Shared/OrderUploadCard.razor.rz.scp.css */
/* ===== Card Shell ===== */

.upload-card[b-zkatq4q5m4] {
    background-color: #FFFFFF;
    border: 1.5px solid #E5E7EB;
    border-radius: 0.75rem;
    overflow: hidden;
    transition: border-color 300ms;
    flex-shrink: 0;
}

.border-uploading[b-zkatq4q5m4] {
    border-color: #7C6EE0;
}

.border-extracting[b-zkatq4q5m4] {
    border-color: #D97706;
}

.border-processing[b-zkatq4q5m4] {
    border-color: #D97706;
}

.border-ready[b-zkatq4q5m4] {
    border-color: #16A34A;
}

.border-failed[b-zkatq4q5m4] {
    border-color: #DC2626;
}

/* ===== Header ===== */

.upload-card-header[b-zkatq4q5m4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.875rem 1rem;
    cursor: pointer;
    user-select: none;
}

.upload-card-file-info[b-zkatq4q5m4] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-width: 0;
}

.file-type-badge[b-zkatq4q5m4] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 0.5rem;
    font-size: 0.5625rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    flex-shrink: 0;
}

.file-type-pdf[b-zkatq4q5m4] {
    background-color: rgba(220, 74, 58, 0.08);
    color: #DC4A3A;
}

.file-type-xls[b-zkatq4q5m4] {
    background-color: rgba(46, 139, 87, 0.08);
    color: #16A34A;
}

.file-type-csv[b-zkatq4q5m4] {
    background-color: rgba(107, 114, 128, 0.08);
    color: #6B7280;
}

.file-type-default[b-zkatq4q5m4] {
    background-color: #F5F5F5;
    color: #6B7280;
}

.file-details[b-zkatq4q5m4] {
    display: flex;
    flex-direction: column;
    gap: 0.0625rem;
    min-width: 0;
}

.file-name[b-zkatq4q5m4] {
    font-size: 0.875rem;
    font-weight: 600;
    color: #111827;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.file-size[b-zkatq4q5m4] {
    font-family: var(--font-mono);
    font-size: 0.6875rem;
    color: #9CA3AF;
}

.upload-card-actions[b-zkatq4q5m4] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-shrink: 0;
}

/* ===== Status Pill ===== */

.status-pill[b-zkatq4q5m4] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.25rem 0.75rem;
    border-radius: 9999px;
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    border: 1px solid;
    white-space: nowrap;
}

.status-dot[b-zkatq4q5m4] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
}

.pill-uploading[b-zkatq4q5m4] {
    background-color: rgba(124, 110, 224, 0.08);
    border-color: rgba(124, 110, 224, 0.3);
    color: #7C6EE0;
}

.pill-uploading .status-dot[b-zkatq4q5m4] {
    background-color: #7C6EE0;
}

.pill-extracting[b-zkatq4q5m4] {
    background-color: rgba(232, 168, 56, 0.1);
    border-color: rgba(232, 168, 56, 0.4);
    color: #B8860B;
}

.pill-extracting .status-dot[b-zkatq4q5m4] {
    background-color: #D97706;
}

.pill-processing[b-zkatq4q5m4] {
    background-color: rgba(232, 168, 56, 0.1);
    border-color: rgba(232, 168, 56, 0.4);
    color: #B8860B;
}

.pill-processing .status-dot[b-zkatq4q5m4] {
    background-color: #D97706;
}

.pill-ready[b-zkatq4q5m4] {
    background-color: rgba(46, 139, 87, 0.08);
    border-color: rgba(46, 139, 87, 0.3);
    color: #16A34A;
}

.pill-ready .status-dot[b-zkatq4q5m4] {
    background-color: #16A34A;
}

.pill-failed[b-zkatq4q5m4] {
    background-color: #FEF2F2;
    border-color: #DC2626;
    color: #DC2626;
}

.pill-failed .status-dot[b-zkatq4q5m4] {
    background-color: #DC2626;
}

/* ===== Dismiss Button ===== */

.dismiss-btn[b-zkatq4q5m4] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    padding: 0;
    border: none;
    border-radius: 0.25rem;
    background: transparent;
    color: #9CA3AF;
    cursor: pointer;
    transition: color 150ms;
}

.dismiss-btn:hover[b-zkatq4q5m4] {
    color: #6B7280;
}

/* ===== Progress Bar ===== */

.progress-bar-track[b-zkatq4q5m4] {
    height: 4px;
    margin: 0 1rem;
    border-radius: 2px;
    overflow: hidden;
    transition: background-color 300ms;
}

.track-uploading[b-zkatq4q5m4] {
    background-color: rgba(124, 110, 224, 0.15);
}

.track-extracting[b-zkatq4q5m4] {
    background-color: rgba(232, 168, 56, 0.15);
}

.track-processing[b-zkatq4q5m4] {
    background-color: rgba(232, 168, 56, 0.15);
}

.track-ready[b-zkatq4q5m4] {
    background-color: rgba(46, 139, 87, 0.15);
}

.track-failed[b-zkatq4q5m4] {
    background-color: rgba(220, 74, 58, 0.15);
}

.progress-bar-fill[b-zkatq4q5m4] {
    height: 100%;
    border-radius: 2px;
    transition: width 400ms ease, background-color 300ms;
}

.fill-uploading[b-zkatq4q5m4] {
    background-color: #7C6EE0;
}

.fill-extracting[b-zkatq4q5m4] {
    background-color: #D97706;
}

.fill-processing[b-zkatq4q5m4] {
    background-color: #D97706;
}

.fill-ready[b-zkatq4q5m4] {
    background-color: #16A34A;
}

.fill-failed[b-zkatq4q5m4] {
    background-color: #DC2626;
}

/* ===== Collapsible Body ===== */

.upload-card-body[b-zkatq4q5m4] {
    display: grid;
    grid-template-rows: 1fr;
    transition: grid-template-rows 300ms ease;
}

.upload-card-body.collapsed[b-zkatq4q5m4] {
    grid-template-rows: 0fr;
}

.upload-card-body-inner[b-zkatq4q5m4] {
    overflow: hidden;
}

/* ===== Step List ===== */

.step-list[b-zkatq4q5m4] {
    list-style: none;
    margin: 0;
    padding: 0.75rem 1rem 0.875rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.step-item[b-zkatq4q5m4] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.8125rem;
}

.step-dot[b-zkatq4q5m4] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    flex-shrink: 0;
}

.step-complete .step-dot[b-zkatq4q5m4] {
    background-color: #16A34A;
}

.step-complete .step-text[b-zkatq4q5m4] {
    color: #16A34A;
}

.step-active .step-dot[b-zkatq4q5m4] {
    background-color: #D97706;
}

.step-active .step-text[b-zkatq4q5m4] {
    color: #D97706;
}

.step-pending .step-dot[b-zkatq4q5m4] {
    background-color: #9CA3AF;
}

.step-pending .step-text[b-zkatq4q5m4] {
    color: #9CA3AF;
}

.step-failed .step-dot[b-zkatq4q5m4] {
    background-color: #DC2626;
}

.step-failed .step-text[b-zkatq4q5m4] {
    color: #DC2626;
}
/* /Components/Shared/PackageFlagButton.razor.rz.scp.css */
/* Flag banner (package page; lives in the ~320px sidebar, so it stacks
   vertically and wraps long notes instead of overflowing horizontally). */
.flag-banner[b-vbfq1jnnao] {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.5rem;
    background: #FFFBEB;
    border: 1px solid #FCD34D;
    border-radius: 8px;
    padding: 0.75rem 1rem;
    margin: 0.75rem 0;
    color: #92400E;
}

.flag-banner-text[b-vbfq1jnnao] {
    min-width: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.4rem;
    font-size: 0.875rem;
    line-height: 1.4;
    overflow-wrap: anywhere;
}

.flag-banner-icon[b-vbfq1jnnao] {
    font-size: 1rem;
    line-height: 1;
}

.flag-banner-actor[b-vbfq1jnnao] {
    font-weight: 600;
}

.flag-banner-note[b-vbfq1jnnao] {
    color: #78350F;
    overflow-wrap: anywhere;
}

.flag-banner-resolve[b-vbfq1jnnao] {
    flex-shrink: 0;
    align-self: flex-end;
}

/* Compact grid rendering */
.pkg-flag-chip[b-vbfq1jnnao] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    border: 1px solid #FCD34D;
    background: #FFFBEB;
    color: #92400E;
    border-radius: 999px;
    padding: 0.1rem 0.5rem;
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
}

.pkg-flag-chip-actionable[b-vbfq1jnnao] {
    cursor: pointer;
}

.pkg-flag-icon-btn[b-vbfq1jnnao] {
    border: 1px solid var(--evie-border);
    background: transparent;
    color: var(--evie-text-muted);
    border-radius: 6px;
    padding: 0.15rem 0.45rem;
    font-size: 0.9rem;
    cursor: pointer;
    line-height: 1;
}

.pkg-flag-icon-btn:hover[b-vbfq1jnnao] {
    color: #92400E;
    border-color: #FCD34D;
    background: #FFFBEB;
}

.pkg-flag-error[b-vbfq1jnnao] {
    color: var(--evie-coral, #c0392b);
    font-size: 0.8125rem;
    margin-top: 0.375rem;
}

/* Note modal (self-contained copy of the Review modal styling) */
.modal-overlay[b-vbfq1jnnao] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 400;
}

.modal-card[b-vbfq1jnnao] {
    background: #FFFFFF;
    border-radius: 10px;
    padding: 1.5rem;
    width: min(520px, 90vw);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.modal-title[b-vbfq1jnnao] {
    margin: 0;
    font-size: 1.125rem;
    font-weight: 600;
    color: #1A1A1A;
}

.modal-sub[b-vbfq1jnnao] {
    margin: 0;
    font-size: 0.875rem;
    color: #4B5563;
    line-height: 1.5;
}

.flag-note-input[b-vbfq1jnnao] {
    width: 100%;
    border: 1px solid #D1D5DB;
    border-radius: 6px;
    padding: 0.6rem 0.75rem;
    font-family: var(--font-sans);
    font-size: 0.875rem;
    color: #1A1A1A;
    resize: vertical;
    min-height: 4.5rem;
}

.flag-note-input:focus[b-vbfq1jnnao] {
    outline: none;
    border-color: #C06820;
    box-shadow: 0 0 0 3px rgba(192, 104, 32, 0.15);
}

.modal-actions[b-vbfq1jnnao] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 0.25rem;
}
/* /Components/Shared/PackageHistorySection.razor.rz.scp.css */
.history[b-62tx6fpimz] {
    padding-top: 0.75rem;
    border-top: 1px solid rgba(128, 128, 128, 0.2);
}

.history-summary[b-62tx6fpimz] {
    cursor: pointer;
    font-weight: 500;
    font-size: 0.9rem;
    opacity: 0.85;
    user-select: none;
    list-style: none;
}

/* Custom disclosure caret (hide the native marker). */
.history-summary[b-62tx6fpimz]::-webkit-details-marker { display: none; }
.history-summary[b-62tx6fpimz]::before {
    content: "\25B8";
    display: inline-block;
    margin-right: 0.45rem;
    font-size: 0.75em;
    transition: transform 0.15s ease;
}
.history[open] .history-summary[b-62tx6fpimz]::before { transform: rotate(90deg); }

.history-empty[b-62tx6fpimz] {
    opacity: 0.6;
    font-size: 0.85rem;
    padding: 0.5rem 0 0.25rem;
}

.history-list[b-62tx6fpimz] {
    list-style: none;
    margin: 0.6rem 0 0;
    padding: 0;
}

.history-item[b-62tx6fpimz] {
    display: flex;
    gap: 0.6rem;
    padding: 0.4rem 0;
}

.history-dot[b-62tx6fpimz] {
    flex: 0 0 auto;
    width: 7px;
    height: 7px;
    margin-top: 0.4rem;
    border-radius: 50%;
    background: currentColor;
    opacity: 0.35;
}

.history-body[b-62tx6fpimz] { flex: 1 1 auto; min-width: 0; }

.history-line[b-62tx6fpimz] {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    align-items: baseline;
}

.history-label[b-62tx6fpimz] { font-size: 0.88rem; font-weight: 500; }

.history-time[b-62tx6fpimz] {
    flex: 0 0 auto;
    font-size: 0.78rem;
    opacity: 0.6;
    white-space: nowrap;
}

.history-meta[b-62tx6fpimz] {
    font-size: 0.8rem;
    opacity: 0.65;
    word-break: break-word;
}
/* /Components/Shared/SearchableDropdown.razor.rz.scp.css */
/* Inline "click to change" combobox chrome. Generalized from the Order Entry
   review page's ship-to / candidate-part pickers. */
.sdd[b-p3nkuuc27b] {
    position: relative;
    display: inline-block;
    vertical-align: baseline;
}

/* The value rendered as an inline combobox: dashed underline + caret signal
   it's editable; subtle hover confirms it. Inherits the surrounding text's
   font/colour so it still reads as the value. Kept as display:inline so the
   label sits on the sentence baseline. */
.sdd-trigger-inline[b-p3nkuuc27b] {
    display: inline;
    font: inherit;
    color: inherit;
    background: transparent;
    border: none;
    border-radius: 3px;
    padding: 0 0.15rem;
    margin: 0;
    cursor: pointer;
}

.sdd-trigger-label[b-p3nkuuc27b] {
    border-bottom: 1px dashed currentColor;
}

.sdd-trigger-inline:hover[b-p3nkuuc27b] {
    background: rgba(0, 0, 0, 0.06);
}

.sdd-trigger-inline:hover .sdd-trigger-label[b-p3nkuuc27b] {
    border-bottom-style: solid;
}

/* Boxed variant: a select-like control for form contexts (AP modal fields,
   side panels) — full width, bordered, value left / chevron right. The inline
   variant above stays untouched for Order Entry's mid-sentence pickers. */
.sdd:has(> .sdd-trigger-boxed)[b-p3nkuuc27b] {
    display: block;
    width: 100%;
}

.sdd-trigger-boxed[b-p3nkuuc27b] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    width: 100%;
    min-width: 0;
    border: 1.5px solid var(--evie-border, #D6D3CE);
    border-radius: 6px;
    padding: 9px 12px;
    font: inherit;
    font-size: 13px;
    color: var(--evie-text, #2A2A2A);
    background: var(--evie-surface, #FFFFFF);
    text-align: left;
    cursor: pointer;
    transition: border-color 180ms, box-shadow 180ms;
}

.sdd-trigger-boxed:hover[b-p3nkuuc27b] {
    border-color: var(--evie-text-dim, #9CA3AF);
}

.sdd.open > .sdd-trigger-boxed[b-p3nkuuc27b] {
    border-color: var(--evie-primary, #C06820);
    box-shadow: 0 0 0 3px rgba(192, 104, 32, 0.1);
}

.sdd-trigger-boxed .sdd-trigger-label[b-p3nkuuc27b] {
    border-bottom: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sdd-trigger-boxed .sdd-chevron[b-p3nkuuc27b] {
    flex: 0 0 auto;
}

.sdd-chevron[b-p3nkuuc27b] {
    width: 0.8em;
    height: 0.8em;
    margin-left: 0.15rem;
    vertical-align: -0.08em;
    transition: transform 0.15s ease;
}

.sdd-chevron.open[b-p3nkuuc27b] {
    transform: rotate(180deg);
}

/* The menu is position:fixed and placed by JS (dropdown-interop.js) relative to
   the trigger, so it escapes any clipping ancestor — robust even inside a
   1-2 row overflow:hidden panel. Starts hidden until JS places it (no flash),
   above the backdrop. */
.sdd-menu[b-p3nkuuc27b] {
    position: fixed;
    top: 0;
    left: 0;
    visibility: hidden;
    z-index: 2000;
    min-width: 20rem;
    max-width: 32rem;
    max-height: 16rem;
    overflow-y: auto;
    background: #FFFFFF;
    border: 1px solid #E5E5E5;
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    padding: 0.25rem;
}

/* Full-viewport outside-click catcher; sits just below the menu. */
.sdd-backdrop[b-p3nkuuc27b] {
    position: fixed;
    inset: 0;
    z-index: 19;
}

/* Search box pinned to the top of the menu while the options scroll. */
.sdd-search[b-p3nkuuc27b] {
    position: sticky;
    top: 0;
    z-index: 1;
    width: 100%;
    box-sizing: border-box;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    color: #1F2937;
    background: #FFFFFF;
    border: 1px solid #E5E5E5;
    border-radius: 4px;
    padding: 0.35rem 0.5rem;
    margin-bottom: 0.25rem;
    outline: none;
}

.sdd-search:focus[b-p3nkuuc27b] {
    border-color: #C06820;
}

.sdd-status[b-p3nkuuc27b] {
    padding: 0.5rem 0.625rem;
    font-size: 0.75rem;
    color: #6B6B6B;
}

.sdd-option[b-p3nkuuc27b] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    color: #1F2937;
    background: transparent;
    border: none;
    border-radius: 4px;
    padding: 0.4rem 0.625rem;
    cursor: pointer;
    text-align: left;
}

.sdd-option:hover[b-p3nkuuc27b] {
    background: #F5F5F5;
}

.sdd-option.active[b-p3nkuuc27b] {
    background: #FFF5EE;
    color: #C06820;
}

/* Row internals are rendered by the caller's ItemTemplate (parent scope), so
   they're reached with ::deep. Standard classes: sdd-option-main / -text /
   -addr for a two-line row, sdd-option-badge for a trailing tag. */
.sdd-option[b-p3nkuuc27b]  .sdd-option-main {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.0625rem;
}

.sdd-option[b-p3nkuuc27b]  .sdd-option-text {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sdd-option[b-p3nkuuc27b]  .sdd-option-addr {
    font-size: 0.6875rem;
    color: #9CA3AF;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sdd-option.active[b-p3nkuuc27b]  .sdd-option-addr {
    color: #C0996F;
}

.sdd-option[b-p3nkuuc27b]  .sdd-option-badge {
    flex: 0 0 auto;
    font-size: 0.625rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #6B7280;
    background: #F0F0F0;
    border-radius: 999px;
    padding: 0.0625rem 0.375rem;
}
/* /Components/Shared/UserMenu.razor.rz.scp.css */
.user-menu[b-q37a68p337] {
    position: relative;
}

.user-menu-btn[b-q37a68p337] {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, 0.15);
    color: #FFFFFF;
    display: flex;
    align-items: center;
    justify-content: center;
    border: none;
    cursor: pointer;
    transition: background-color 150ms;
}

.user-menu-btn:hover[b-q37a68p337] {
    background-color: rgba(255, 255, 255, 0.25);
}

.user-menu-btn:focus-visible[b-q37a68p337] {
    outline: none;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5);
}

.user-dropdown[b-q37a68p337] {
    position: absolute;
    right: 0;
    top: calc(100% + 0.5rem);
    width: 14rem;
    background-color: #FFFFFF;
    border: 1px solid #E5E5E5;
    border-radius: 0.75rem;
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
    z-index: 50;
    overflow: hidden;
}

.user-menu-backdrop[b-q37a68p337] {
    position: fixed;
    inset: 0;
    z-index: 49;
}

.user-dropdown-header[b-q37a68p337] {
    padding: 0.75rem 1rem;
    border-bottom: 1px solid #E5E5E5;
}

.user-dropdown-email[b-q37a68p337] {
    font-size: 0.875rem;
    font-weight: 600;
    color: #1f2937;
    word-break: break-all;
}

.user-dropdown-role[b-q37a68p337] {
    margin-top: 0.125rem;
    font-size: 0.75rem;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.user-dropdown-company[b-q37a68p337] {
    margin-top: 0.375rem;
    font-size: 0.75rem;
    color: #6b7280;
}

/* Working in someone else's company: state it plainly rather than colouring it
   as a problem (brand spec — coral is for genuine issues). */
.user-dropdown-company.is-switched[b-q37a68p337] {
    color: #1f2937;
    font-weight: 600;
}

.user-dropdown-item[b-q37a68p337] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.75rem 1rem;
    font-size: 0.875rem;
    color: #1f2937;
    text-decoration: none;
    cursor: pointer;
    transition: background-color 150ms;
}

.user-dropdown-item:hover[b-q37a68p337] {
    background-color: #f3f4f6;
}

.user-dropdown-item svg[b-q37a68p337] {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

.user-dropdown-signout[b-q37a68p337] {
    color: #b91c1c;
}
/* /Components/Shared/ValidationIssuesSection.razor.rz.scp.css */
.validation-list[b-ai1hg57myx] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.validation-item[b-ai1hg57myx] {
    border: 1px solid var(--evie-border);
    border-left-width: 3px;
    border-radius: 0.375rem;
    padding: 0.5rem 0.625rem;
    background: var(--evie-surface);
}

/* Critical = coral; Warning = amber (matches the rest of the app). */
.validation-critical[b-ai1hg57myx] {
    border-left-color: var(--evie-coral, #c0392b);
}

.validation-warning[b-ai1hg57myx] {
    border-left-color: #FCD34D;
}

.validation-item-top[b-ai1hg57myx] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.25rem;
}

/* Consequence note when criticals exist: they gate the stamp button below. */
.validation-block-hint[b-ai1hg57myx] {
    margin-top: 0.5rem;
    font-size: 0.6875rem;
    color: var(--evie-text-dim);
}

.validation-badge[b-ai1hg57myx] {
    font-size: 0.625rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.0625rem 0.375rem;
    border-radius: 999px;
}

.validation-critical .validation-badge[b-ai1hg57myx] {
    color: var(--evie-coral, #c0392b);
    background: var(--evie-coral-muted, #fdecea);
}

.validation-warning .validation-badge[b-ai1hg57myx] {
    color: #92400E;
    background: #FFFBEB;
}

/* Info: attention-only, never gates — quiet gray (no color, per the design
   system's "pending has no color" rule). */
.validation-info[b-ai1hg57myx] {
    border-left-color: var(--evie-border);
}

.validation-info .validation-badge[b-ai1hg57myx] {
    color: var(--evie-text-muted);
    background: var(--evie-surface-raised, #F1F5F9);
}

/* Warning acknowledgement checkbox — required before stamping. */
.validation-ack[b-ai1hg57myx] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    margin-top: 0.375rem;
    font-size: 0.6875rem;
    color: var(--evie-text-muted);
    cursor: pointer;
}

.validation-ack input[b-ai1hg57myx] {
    cursor: pointer;
}

.validation-line[b-ai1hg57myx] {
    font-size: 0.6875rem;
    color: var(--evie-text-muted);
}

.validation-msg[b-ai1hg57myx] {
    font-size: 0.8125rem;
    color: var(--evie-text);
    line-height: 1.35;
}

.validation-ea[b-ai1hg57myx] {
    margin-top: 0.25rem;
    font-size: 0.6875rem;
    color: var(--evie-text-muted);
}

.validation-ea .mono[b-ai1hg57myx] {
    font-family: var(--font-mono, monospace);
    color: var(--evie-text);
}

/* Grouped card: expander toggle + collapsed per-line detail rows. Block so it
   sits on its own line, above the ack checkbox. */
.validation-expand[b-ai1hg57myx] {
    display: block;
    margin-top: 0.375rem;
    background: none;
    border: none;
    padding: 0;
    font-size: 0.6875rem;
    color: var(--evie-text-muted);
    cursor: pointer;
    text-decoration: underline;
}

.validation-expand:hover[b-ai1hg57myx] {
    color: var(--evie-text);
}

.validation-group-detail[b-ai1hg57myx] {
    margin-top: 0.375rem;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.validation-group-row[b-ai1hg57myx] {
    font-size: 0.6875rem;
    color: var(--evie-text-muted);
    line-height: 1.35;
    padding-left: 0.5rem;
    border-left: 2px solid var(--evie-border);
}
