/* /Components/Common/ContactPopover.razor.rz.scp.css */
/* ContactPopover — inline contact card.
   Lives inside the row's `-info` column. Collapsed state has zero height
   and zero padding so it takes no visual space; on parent-row hover
   (rule lives in the host's CSS via ::deep) the card animates open with
   height + opacity + padding + margin transitions for a clean reveal.

   Brand alignment: navy `#001F57` for icons + accent border, off-white
   gradient surface so the card reads as elevated against the row's flat
   background. */

.contact-card[b-kcu1m7oyru] {
    /* ── Collapsed state (default) ───────────────────────────────────── */
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    margin-top: 0;
    padding: 0 12px;            /* keeps horizontal padding so transition
                                   feels uniform when expanding */

    /* ── Card visual styling (visible on expansion) ──────────────────── */
    background: linear-gradient(180deg, #ffffff 0%, #f6f9ff 100%);
    border: 1px solid rgba(0, 31, 87, 0.14);
    border-radius: 8px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);

    display: flex;
    flex-direction: column;
    gap: 5px;
    width: 100%;

    /* Match the rest of the page's hover easing (cubic-bezier(0.16,1,.3,1)
       is the brand "smooth-out" curve used elsewhere in the wizard +
       org-card animations). */
    transition:
        max-height 0.28s cubic-bezier(0.16, 1, 0.3, 1),
        opacity    0.20s cubic-bezier(0.16, 1, 0.3, 1),
        margin-top 0.22s cubic-bezier(0.16, 1, 0.3, 1),
        padding    0.22s cubic-bezier(0.16, 1, 0.3, 1);
}

/* One row inside the card: icon | LABEL | value */
.contact-line[b-kcu1m7oyru] {
    display: grid;
    grid-template-columns: 16px 50px 1fr;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    line-height: 1.35;
    color: #1e293b;
    min-width: 0;     /* lets the value column ellipsis correctly */
}

/* Brand-navy icon. `currentColor` lets the SVG inherit. */
.contact-icon[b-kcu1m7oyru] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    color: #001F57;     /* OnePortal brand primary */
    flex-shrink: 0;
}

/* "PHONE" / "EMAIL" — small all-caps eyebrow */
.contact-label[b-kcu1m7oyru] {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #64748b;
    font-weight: 700;
}

.contact-value[b-kcu1m7oyru] {
    color: #0f172a;
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* "Not available" — muted + italic so it reads as absent data, not as a
   real value. Same treatment whether the missing field is phone or email. */
.contact-value.is-missing[b-kcu1m7oyru] {
    color: #94a3b8;
    font-style: italic;
    font-weight: 500;
}
/* /Components/Common/DonutChart.razor.rz.scp.css */
.donut-chart-container[b-fn9nqlsxca] {
    background-color: transparent;
    border-radius: 8px;
    padding: 0;
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 300px;
}

.chart-title[b-fn9nqlsxca] {
    font-size: 18px;
    font-weight: 700;
    color: #141414;
    margin: 0 0 15px 0;
    text-align: center;
    display: block;
    visibility: visible;
    opacity: 1;
}

.chart-wrapper[b-fn9nqlsxca] {
    flex: 1;
    position: relative;
    min-height: 200px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.donut-chart-canvas[b-fn9nqlsxca] {
    max-width: 100%;
    max-height: 100%;
}

.chart-legend[b-fn9nqlsxca] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 15px;
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px solid var(--border-primary, #e5e7eb);
}

.legend-item[b-fn9nqlsxca] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
}

.legend-color[b-fn9nqlsxca] {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

.legend-label[b-fn9nqlsxca] {
    color: #141414;
    font-weight: 500;
}

/* /Components/Common/PasskeySetupWizard.razor.rz.scp.css */
/* Passkey Setup Wizard Styles */
.passkey-wizard-overlay[b-qx04fcn8ja] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    backdrop-filter: blur(4px);
}

.passkey-wizard[b-qx04fcn8ja] {
    background: white;
    border-radius: 16px;
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    max-width: 500px;
    width: 90%;
    max-height: 90vh;
    overflow: hidden;
    animation: slideIn-b-qx04fcn8ja 0.3s ease-out;
}

@keyframes slideIn-b-qx04fcn8ja {
    from {
        opacity: 0;
        transform: translateY(-20px) scale(0.95);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

.passkey-wizard-header[b-qx04fcn8ja] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.5rem;
    border-bottom: 1px solid #e5e7eb;
    background: #f9fafb;
}

.wizard-title[b-qx04fcn8ja] {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.title-icon[b-qx04fcn8ja] {
    width: 48px;
    height: 48px;
    background: linear-gradient(135deg, #3b82f6, #1d4ed8);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
}

.title-text h3[b-qx04fcn8ja] {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 600;
    color: #111827;
}

.title-text p[b-qx04fcn8ja] {
    margin: 0.25rem 0 0 0;
    font-size: 0.875rem;
    color: #6b7280;
}

.wizard-close[b-qx04fcn8ja] {
    background: none;
    border: none;
    color: #6b7280;
    padding: 0.5rem;
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.wizard-close:hover[b-qx04fcn8ja] {
    background: #e5e7eb;
    color: #374151;
}

.passkey-wizard-body[b-qx04fcn8ja] {
    padding: 2rem;
    max-height: 60vh;
    overflow-y: auto;
}

.wizard-step[b-qx04fcn8ja] {
    text-align: center;
}

.step-icon[b-qx04fcn8ja] {
    margin: 0 auto 1.5rem;
    width: 80px;
    height: 80px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f3f4f6;
    color: #6b7280;
}

.step-icon.success[b-qx04fcn8ja] {
    background: #dcfce7;
    color: #16a34a;
}

.step-icon.error[b-qx04fcn8ja] {
    background: #fef2f2;
    color: #dc2626;
}

.step-spinner[b-qx04fcn8ja] {
    margin: 0 auto 1.5rem;
    width: 80px;
    height: 80px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.spinner[b-qx04fcn8ja] {
    width: 40px;
    height: 40px;
    border: 3px solid #e5e7eb;
    border-top: 3px solid #3b82f6;
    border-radius: 50%;
    animation: spin-b-qx04fcn8ja 1s linear infinite;
}

.spinner-sm[b-qx04fcn8ja] {
    width: 16px;
    height: 16px;
    border: 2px solid transparent;
    border-top: 2px solid currentColor;
    border-radius: 50%;
    animation: spin-b-qx04fcn8ja 1s linear infinite;
    display: inline-block;
    margin-right: 0.5rem;
}

@keyframes spin-b-qx04fcn8ja {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.wizard-step h4[b-qx04fcn8ja] {
    margin: 0 0 1rem 0;
    font-size: 1.5rem;
    font-weight: 600;
    color: #111827;
}

.step-description[b-qx04fcn8ja] {
    margin: 0 0 2rem 0;
    color: #6b7280;
    line-height: 1.6;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
}

.benefits-grid[b-qx04fcn8ja] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    margin: 2rem 0;
    text-align: left;
}

.benefit-item[b-qx04fcn8ja] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem;
    background: #f9fafb;
    border-radius: 12px;
    border: 1px solid #e5e7eb;
}

.benefit-icon[b-qx04fcn8ja] {
    width: 40px;
    height: 40px;
    background: #dbeafe;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #3b82f6;
    flex-shrink: 0;
}

.benefit-text[b-qx04fcn8ja] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.benefit-text strong[b-qx04fcn8ja] {
    font-weight: 600;
    color: #111827;
}

.benefit-text span[b-qx04fcn8ja] {
    font-size: 0.875rem;
    color: #6b7280;
}

.input-group[b-qx04fcn8ja] {
    text-align: left;
    margin: 2rem 0;
}

.input-group label[b-qx04fcn8ja] {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: 500;
    color: #374151;
}

.form-input[b-qx04fcn8ja] {
    width: 100%;
    padding: 0.75rem 1rem;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    font-size: 1rem;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.form-input:focus[b-qx04fcn8ja] {
    outline: none;
    border-color: #3b82f6;
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
}

.input-hint[b-qx04fcn8ja] {
    margin-top: 0.5rem;
    font-size: 0.875rem;
    color: #6b7280;
}

.device-prompt[b-qx04fcn8ja] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 1.5rem;
    background: #f0f9ff;
    border: 1px solid #bae6fd;
    border-radius: 12px;
    margin: 2rem 0;
}

.prompt-icon[b-qx04fcn8ja] {
    color: #0284c7;
}

.device-prompt p[b-qx04fcn8ja] {
    margin: 0;
    color: #0c4a6e;
    font-weight: 500;
}

.success-details[b-qx04fcn8ja] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin: 2rem 0;
    text-align: left;
}

.detail-item[b-qx04fcn8ja] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem;
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    border-radius: 8px;
    color: #166534;
}

.detail-item svg[b-qx04fcn8ja] {
    color: #16a34a;
    flex-shrink: 0;
}

.wizard-actions[b-qx04fcn8ja] {
    display: flex;
    gap: 1rem;
    justify-content: center;
    margin-top: 2rem;
}

.btn[b-qx04fcn8ja] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1.5rem;
    border-radius: 8px;
    font-weight: 500;
    text-decoration: none;
    border: none;
    cursor: pointer;
    transition: all 0.2s ease;
    font-size: 1rem;
}

.btn:disabled[b-qx04fcn8ja] {
    opacity: 0.5;
    cursor: not-allowed;
}

.btn-primary[b-qx04fcn8ja] {
    background: #3b82f6;
    color: white;
}

.btn-primary:hover:not(:disabled)[b-qx04fcn8ja] {
    background: #2563eb;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(30, 64, 175, 0.4);
}

.btn-secondary[b-qx04fcn8ja] {
    background: #f3f4f6;
    color: #374151;
    border: 1px solid #d1d5db;
}

.btn-secondary:hover:not(:disabled)[b-qx04fcn8ja] {
    background: #e5e7eb;
    border-color: #9ca3af;
}

/* Responsive Design */
@media (max-width: 640px) {
    .passkey-wizard[b-qx04fcn8ja] {
        width: 95%;
        margin: 1rem;
    }
    
    .passkey-wizard-header[b-qx04fcn8ja] {
        padding: 1rem;
    }
    
    .passkey-wizard-body[b-qx04fcn8ja] {
        padding: 1.5rem;
    }
    
    .wizard-actions[b-qx04fcn8ja] {
        flex-direction: column;
    }
    
    .btn[b-qx04fcn8ja] {
        width: 100%;
        justify-content: center;
    }
    
    .benefits-grid[b-qx04fcn8ja] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Common/ProfileImageModal.razor.rz.scp.css */
/* Profile Image Modal — themed via /wwwroot/css/themes.css vars.
   Scoped by Blazor CSS isolation to ProfileImageModal.razor only. */

.pi-modal-backdrop[b-p62sjgkjkd] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2200;
    animation: piFade-b-p62sjgkjkd 0.18s ease;
}

@keyframes piFade-b-p62sjgkjkd { from { opacity: 0; } to { opacity: 1; } }

.pi-modal[b-p62sjgkjkd] {
    width: min(440px, 92vw);
    max-height: 92vh;
    overflow-y: auto;
    background-color: var(--card-bg);
    border: 1px solid var(--card-border);
    border-radius: 16px;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.06),
        0 12px 32px rgba(15, 23, 42, 0.18),
        0 24px 56px rgba(15, 23, 42, 0.24);
    display: flex;
    flex-direction: column;
    color: var(--text-primary);
    animation: piIn-b-p62sjgkjkd 0.24s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes piIn-b-p62sjgkjkd {
    from { opacity: 0; transform: scale(0.96) translateY(6px); }
    to   { opacity: 1; transform: scale(1) translateY(0); }
}

.pi-modal-hd[b-p62sjgkjkd] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 18px 22px;
    border-bottom: 1px solid var(--border-primary);
}

.pi-modal-hd h3[b-p62sjgkjkd] {
    margin: 0;
    font-size: 17px;
    font-weight: 700;
    color: var(--text-primary);
}

.pi-icon[b-p62sjgkjkd] {
    width: 32px;
    height: 32px;
    border: none;
    background: transparent;
    border-radius: 8px;
    color: var(--text-secondary);
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.pi-icon:hover[b-p62sjgkjkd] {
    background: var(--bg-secondary);
    color: var(--text-primary);
}

.pi-modal-body[b-p62sjgkjkd] {
    padding: 24px 22px 8px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

/* Circular preview — 160px, gradient ring around the image to match the
   premium feel of the org-chart avatars elsewhere in the app. */
.pi-preview-wrap[b-p62sjgkjkd] {
    padding: 4px;
    border-radius: 50%;
    background: linear-gradient(135deg, #3b82f6 0%, #6366f1 50%, #8b5cf6 100%);
    box-shadow: 0 6px 20px rgba(99, 102, 241, 0.22);
}

.pi-preview[b-p62sjgkjkd] {
    width: 160px;
    height: 160px;
    border-radius: 50%;
    background: var(--bg-tertiary);
    border: 4px solid var(--card-bg);
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--text-secondary);
    user-select: none;
}

.pi-preview img[b-p62sjgkjkd] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.pi-initials[b-p62sjgkjkd] {
    font-size: 56px;
    font-weight: 700;
    color: var(--text-primary);
    letter-spacing: 0.5px;
}

.pi-hint[b-p62sjgkjkd] {
    font-size: 12px;
    color: var(--text-secondary);
    margin: 4px 0 8px;
    text-align: center;
}

.pi-actions[b-p62sjgkjkd] {
    display: flex;
    gap: 10px;
    justify-content: center;
    flex-wrap: wrap;
    width: 100%;
    margin-bottom: 8px;
}

.pi-alert[b-p62sjgkjkd] {
    width: 100%;
    padding: 10px 14px;
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.4;
    text-align: center;
}

.pi-alert-error[b-p62sjgkjkd] {
    background-color: rgba(239, 68, 68, 0.10);
    color: #991b1b;
    border: 1px solid rgba(239, 68, 68, 0.25);
}

.pi-modal-ft[b-p62sjgkjkd] {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 22px;
    border-top: 1px solid var(--border-primary);
    background-color: var(--bg-primary);
}

/* Buttons — same family as the Divisions admin page so the look is consistent
   across all admin modals. */

.pi-btn[b-p62sjgkjkd] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 9px 16px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 13px;
    cursor: pointer;
    border: 1px solid transparent;
    transition: transform 0.15s cubic-bezier(0.16, 1, 0.3, 1),
                background 0.15s ease,
                box-shadow 0.15s ease;
    line-height: 1.2;
    white-space: nowrap;
}

.pi-btn:disabled[b-p62sjgkjkd] { cursor: not-allowed; opacity: 0.55; }

.pi-btn-primary[b-p62sjgkjkd] {
    background: linear-gradient(135deg, #3b82f6 0%, #6366f1 100%);
    color: #ffffff;
    box-shadow: 0 2px 8px rgba(30, 64, 175, 0.32);
}

.pi-btn-primary:hover:not(:disabled)[b-p62sjgkjkd] {
    transform: translateY(-1px);
    box-shadow: 0 4px 14px rgba(30, 64, 175, 0.42);
}

.pi-btn-outline[b-p62sjgkjkd] {
    background: transparent;
    color: var(--text-primary);
    border-color: var(--border-primary);
}

.pi-btn-outline:hover:not(:disabled)[b-p62sjgkjkd] {
    background-color: var(--bg-secondary);
}

.pi-btn-danger-outline[b-p62sjgkjkd] {
    background: transparent;
    color: var(--error);
    border-color: var(--error);
}

.pi-btn-danger-outline:hover:not(:disabled)[b-p62sjgkjkd] {
    background-color: var(--error);
    color: #ffffff;
}

/* The InputFile is hidden but its parent <label> is the visible button — make
   the whole label clickable so the click target matches the styled button. */
.pi-file-btn[b-p62sjgkjkd] {
    cursor: pointer;
    user-select: none;
}

.pi-file-btn:has(input:disabled)[b-p62sjgkjkd] {
    cursor: not-allowed;
    opacity: 0.55;
}

@media (max-width: 480px) {
    .pi-modal[b-p62sjgkjkd] { width: 95vw; }
    .pi-preview-wrap[b-p62sjgkjkd] { padding: 3px; }
    .pi-preview[b-p62sjgkjkd] { width: 140px; height: 140px; }
    .pi-initials[b-p62sjgkjkd] { font-size: 48px; }
}
/* /Components/Common/SearchableSelect.razor.rz.scp.css */
.autocomplete-container[b-257ktroxdd] {
    position: relative;
    width: 100%;
}

.autocomplete-input[b-257ktroxdd] {
    border: 1px solid var(--input-border, #d1d5db);
    border-radius: 8px;
    padding: 10px 14px;
    font-size: 14px;
    color: var(--text-primary);
    background: var(--card-bg, #fff);
    outline: none;
    width: 100%;
    box-sizing: border-box;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.autocomplete-input:focus[b-257ktroxdd] {
    border-color: var(--input-focus, #3b82f6);
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
}

.autocomplete-input:disabled[b-257ktroxdd] {
    background: var(--bg-primary, #f9fafb);
    color: var(--text-secondary, #9ca3af);
    cursor: not-allowed;
    opacity: 0.7;
}

.autocomplete-dropdown[b-257ktroxdd] {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    background: var(--card-bg, #fff);
    border: 1px solid var(--border-primary, #e5e7eb);
    border-radius: 8px;
    max-height: 240px;
    overflow-y: auto;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
    z-index: 9999;
}

.autocomplete-item[b-257ktroxdd] {
    padding: 10px 14px;
    cursor: pointer;
    border-bottom: 1px solid var(--border-primary, #f3f4f6);
    transition: background 0.12s;
}

.autocomplete-item:last-child[b-257ktroxdd] { border-bottom: none; }

.autocomplete-item:hover[b-257ktroxdd],
.autocomplete-item.highlighted[b-257ktroxdd] {
    background: var(--bg-primary, #f0f7ff);
}

.autocomplete-item.no-results[b-257ktroxdd] {
    color: var(--text-secondary, #9ca3af);
    cursor: default;
    font-style: italic;
}

.autocomplete-item .user-name[b-257ktroxdd] {
    font-weight: 600;
    color: var(--text-primary);
    font-size: 14px;
    margin-bottom: 2px;
}

.autocomplete-item .user-email[b-257ktroxdd] {
    font-size: 12px;
    color: var(--text-secondary, #6b7280);
}
/* /Components/Common/SideImagePanel.razor.rz.scp.css */
/* ─────────────────────────────────────────────────────────────────────────
   SideImagePanel — premium enterprise-style image surface.
   In rotation mode, two stacked slides cross-fade with a slow Ken-Burns
   zoom (1.00 → 1.05) for a calm, cinematic, professional feel. A fixed
   dark navy gradient overlay sits above the slides for type legibility.
   ───────────────────────────────────────────────────────────────────────── */

.side-image-panel[b-rthomh1yqb] {
    width: 100%;
    height: 100%;
    position: relative;
}

    .side-image-panel .overlay[b-rthomh1yqb] {
        position: absolute;
        inset: 0;
        display: grid;
        place-items: center;
        pointer-events: none;
        z-index: 3;
    }

/* ── Cross-fade rotation (when ImageUrl2 is set) ──────────────────────── */
.side-image-panel.is-rotating[b-rthomh1yqb] {
    overflow: hidden;
    background-color: #000814;
}

    .side-image-panel.is-rotating .slide[b-rthomh1yqb] {
        position: absolute;
        inset: 0;
        background-size: cover;
        background-repeat: no-repeat;
        background-position: center center;
        transform-origin: center center;
        will-change: opacity, transform;
        animation: onep-side-fade-zoom-b-rthomh1yqb var(--onep-side-cycle, 12s) ease-in-out infinite;
        z-index: 1;
    }

    .side-image-panel.is-rotating .slide-b[b-rthomh1yqb] {
        /* Half-cycle offset so the second slide peaks while the first fades */
        animation-delay: calc(var(--onep-side-cycle, 12s) / -2);
    }

    /* Fixed dark navy gradient — sits above the slides, below ChildContent.
       Sets the enterprise tone (calm, secure) AND gives text-on-image
       enough contrast without darkening the photo too much. */
    .side-image-panel.is-rotating .slide-overlay[b-rthomh1yqb] {
        position: absolute;
        inset: 0;
        pointer-events: none;
        z-index: 2;
        background: linear-gradient(
            135deg,
            rgba(0, 18, 54, 0.55)  0%,
            rgba(0, 31, 87, 0.30) 50%,
            rgba(0, 18, 54, 0.65) 100%
        );
    }

/* Cross-fade + slow zoom keyframe.
   12s cycle (CycleSeconds=6 × 2):
     0–45%   visible, zooming  scale(1.00) → scale(1.05)
     45–50%  fade out          opacity 1 → 0   (scale held at 1.05)
     50–95%  hidden, reset     scale resets quietly to 1.00
     95–100% fade in           opacity 0 → 1
   The second slide carries a half-cycle (-6s) delay so it peaks while
   the first fades, producing a smooth cross-fade rather than a flash. */
@keyframes onep-side-fade-zoom-b-rthomh1yqb {
    0% {
        opacity: 1;
        transform: scale(1.00);
    }
    45% {
        opacity: 1;
        transform: scale(1.05);
    }
    50% {
        opacity: 0;
        transform: scale(1.05);
    }
    95% {
        opacity: 0;
        transform: scale(1.00);
    }
    100% {
        opacity: 1;
        transform: scale(1.00);
    }
}

/* ── 3-slide rotation (when ImageUrl3 is also set) ────────────────────────
   Each slide is visible ~1/3 of the cycle; the three slides are offset by a
   third so one fades in as the previous fades out. Cycle = CycleSeconds × 3
   (the component sets --onep-side-cycle accordingly, e.g. 6 s × 3 = 18 s). */
.side-image-panel.is-rotating-3 .slide[b-rthomh1yqb] {
    animation-name: onep-side-fade-zoom-3-b-rthomh1yqb;
}
    .side-image-panel.is-rotating-3 .slide-b[b-rthomh1yqb] {
        animation-delay: calc(var(--onep-side-cycle, 18s) / -3);
    }
    .side-image-panel.is-rotating-3 .slide-c[b-rthomh1yqb] {
        animation-delay: calc(var(--onep-side-cycle, 18s) * -2 / 3);
    }

@keyframes onep-side-fade-zoom-3-b-rthomh1yqb {
    0%   { opacity: 1; transform: scale(1.00); }
    28%  { opacity: 1; transform: scale(1.05); }   /* visible, zooming */
    33%  { opacity: 0; transform: scale(1.05); }   /* faded out */
    95%  { opacity: 0; transform: scale(1.00); }   /* hidden, reset */
    100% { opacity: 1; transform: scale(1.00); }   /* fade back in */
}

/* Honour users who prefer reduced motion — pin to the first slide, no zoom. */
@media (prefers-reduced-motion: reduce) {
    .side-image-panel.is-rotating .slide[b-rthomh1yqb] {
        animation: none;
        transform: none;
    }
    .side-image-panel.is-rotating .slide-b[b-rthomh1yqb],
    .side-image-panel.is-rotating-3 .slide-c[b-rthomh1yqb] {
        opacity: 0;
    }
}
/* /Components/Events/EventCalendar.razor.rz.scp.css */
/* Calendar - Scoped styles for EventCalendar component */
/* Matches Dashboard/index.html reference design exactly */

.tp-cal[b-xfbid27wm0] {
    width: 300px;
    height: 230px;
    background: rgba(255, 255, 255, 1);
    border-radius: 24.249px;
    box-shadow: 0px 3.2332632541656494px 20px 0px rgba(0, 9, 26, 0.10000000149011612);
    padding: 16px 19px 14px;
    display: grid;
    grid-template-rows: auto 1fr;
    gap: 8px;
    overflow: hidden;
    position: relative;
    box-sizing: border-box;
}

.tp-cal-nav[b-xfbid27wm0] {
    display: grid;
    grid-template-columns: 60px 1fr 60px;
    align-items: center;
}

.tp-cal-pill[b-xfbid27wm0] {
    justify-self: start;
    background: rgba(242, 242, 242, 0.8);
    color: rgba(134, 134, 134, 1);
    border: none;
    border-radius: 40.416px;
    padding: 5.658px 12.125px;
    font-family: "Ubuntu", "Inter", sans-serif;
    font-weight: 400;
    font-size: 9.487px;
    font-style: normal;
    line-height: normal;
    cursor: pointer;
    opacity: 0.8;
    margin: 0;
    outline: none;
    box-shadow: none;
}

.tp-cal-pill:hover[b-xfbid27wm0] {
    opacity: 1;
}

.tp-cal-nav .tp-cal-pill:last-child[b-xfbid27wm0] {
    justify-self: end;
}

.tp-cal-month[b-xfbid27wm0] {
    margin: 0;
    justify-self: center;
    font-family: "Ubuntu", "Inter", sans-serif;
    font-weight: 500;
    font-size: 11.385px;
    font-style: normal;
    line-height: normal;
    color: rgba(51, 51, 51, 1);
    text-align: center;
}

.tp-cal-grid[b-xfbid27wm0] {
    display: grid;
    grid-template-rows: auto repeat(5, 1fr);
    gap: 6px;
}

.tp-cal-dow[b-xfbid27wm0],
.tp-cal-row[b-xfbid27wm0] {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    column-gap: 14px;
    row-gap: 0;
}

.tp-cal-dow .dow[b-xfbid27wm0] {
    text-align: center;
    font-family: "Ubuntu", "Inter", sans-serif;
    font-weight: 500;
    font-size: 10.508px;
    font-style: normal;
    line-height: normal;
    color: rgba(54, 54, 54, 1);
    display: block;
}

.tp-cal-row .date[b-xfbid27wm0] {
    position: relative;
    text-align: center;
    font-family: "Ubuntu", "Inter", sans-serif;
    font-weight: 500;
    font-size: 8.083px;
    font-style: normal;
    line-height: normal;
    color: rgba(54, 54, 54, 1);
    padding-top: 6px;
    z-index: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    box-sizing: border-box;
}

.tp-cal-row .date.muted[b-xfbid27wm0] {
    color: #9A9A9A;
}

.tp-cal-row .date.has-dot[b-xfbid27wm0] {
    color: rgba(242, 242, 242, 1);
    font-weight: 700;
    font-style: normal;
    text-shadow: none;
    padding-top: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    z-index: 1;
    height: 21px;
    min-height: 21px;
}

.tp-cal-row .date.has-dot .dot[b-xfbid27wm0] {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 21px;
    height: 21px;
    border-radius: 50%;
    background: #FF6A00;
    z-index: -1;
    margin: 0;
    padding: 0;
}

/* Event tooltip styles */
.event-tooltip[b-xfbid27wm0] {
    background: rgba(0, 0, 0, 0.85);
    color: white;
    padding: 8px 12px;
    border-radius: 6px;
    font-size: 12px;
    font-family: "Ubuntu", "Inter", sans-serif;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    pointer-events: none;
    z-index: 1000;
}

.tooltip-content[b-xfbid27wm0] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.tooltip-event[b-xfbid27wm0] {
    white-space: nowrap;
}

/* Dark Mode support */
@media (prefers-color-scheme: dark) {
    .tp-cal[b-xfbid27wm0] {
        background: var(--card-bg, #0f172a);
    }
}

body.dark .tp-cal[b-xfbid27wm0],
[data-theme="dark"] .tp-cal[b-xfbid27wm0],
.theme-dark .tp-cal[b-xfbid27wm0] {
    background: var(--card-bg, #0f172a);
}

/* /Components/Events/EventForm.razor.rz.scp.css */
/* UI-Rebuild Phase 6: tokens instead of hardcoded light colors so the form
   reads correctly in dark mode. Buttons come from the ui.css design system
   (the old scoped .btn overrides fought it). */
.event-form[b-mypcj2e79v] {
    display: flex;
    flex-direction: column;
    gap: 20px;
    padding: var(--space-2) 0 0;
}

.form-field[b-mypcj2e79v] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.form-field label[b-mypcj2e79v] {
    font-weight: 500;
    color: var(--text-heading);
    font-size: var(--text-label-size);
}

.required[b-mypcj2e79v] {
    color: var(--color-danger);
}

.form-input[b-mypcj2e79v] {
    padding: 10px 12px;
    border: 1.5px solid var(--color-border);
    border-radius: var(--radius-control);
    font-size: 14px;
    background: var(--color-surface-card);
    color: var(--text-heading);
}

.form-input:focus[b-mypcj2e79v] {
    outline: none;
    border-color: var(--color-accent-fg);
    box-shadow: var(--focus-ring);
}

.form-actions[b-mypcj2e79v] {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    margin-top: 10px;
}
/* /Components/Portal/PortalContainer.razor.rz.scp.css */
/*
   PortalContainer is a singleton mounted at App.razor level. It overlays the
   viewport with all open portal iframes; only the active one is shown.

   The host is fixed-positioned to fill the viewport area beneath the OnePortal
   page chrome. When the user is NOT on a /portal/{code} route, the host hides
   itself entirely so it doesn't paint over the dashboard.
*/
.portal-iframe-host[b-gsw7tct6rw] {
    position: fixed;
    /* Sit beneath the PortalHeader (rendered by PortalPage). 48px is a safe
       default; tune in the page's own stylesheet if your header is taller. */
    top: 52px; /* UI-Rebuild: height of the new .pchrome tab strip */
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 10;
    background: var(--bg-primary, #ffffff);
    overflow: hidden;
}

/* Full-viewport when no header — applied dynamically when route changes
   put the iframe in a fullscreen layout (no PortalPage chrome). */
.portal-iframe-host.fullscreen[b-gsw7tct6rw] {
    top: 0;
}

.portal-iframe-host.visible[b-gsw7tct6rw] {
    display: block;
}

.portal-iframe-host.hidden[b-gsw7tct6rw] {
    display: none;
}

.portal-iframe[b-gsw7tct6rw] {
    width: 100%;
    height: 100%;
    border: none;
}

/* Active vs inactive — the inline style attribute does the real toggling so
   that even mid-render the right iframe is the one painted. These classes
   are kept for any future styling hooks (e.g. fade transitions). */
.portal-iframe.active[b-gsw7tct6rw] {
    visibility: visible;
}

.portal-iframe.inactive[b-gsw7tct6rw] {
    visibility: hidden;
}

/* Empty / error / loading overlays sit on top of the iframe layer. */
.portal-empty-state[b-gsw7tct6rw],
.portal-loading-state[b-gsw7tct6rw],
.portal-error-state[b-gsw7tct6rw] {
    position: absolute;
    inset: 0;
    z-index: 20;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: var(--bg-primary, #ffffff);
    text-align: center;
    padding: 2rem;
}

.portal-empty-state h3[b-gsw7tct6rw],
.portal-error-state h3[b-gsw7tct6rw] {
    margin: 1rem 0 0.5rem;
    font-size: 1.25rem;
    color: var(--text-primary, #333);
}

.portal-empty-state p[b-gsw7tct6rw],
.portal-error-state p[b-gsw7tct6rw] {
    margin: 0 0 1rem;
    color: var(--text-secondary, #666);
}

.error-icon[b-gsw7tct6rw] {
    color: var(--error-color, #dc3545);
    margin-bottom: 1rem;
}

.error-actions[b-gsw7tct6rw] {
    display: flex;
    gap: 1rem;
}

.btn[b-gsw7tct6rw] {
    padding: 0.5rem 1.5rem;
    border-radius: 0.375rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
    border: 1px solid transparent;
}

.btn-primary[b-gsw7tct6rw] {
    background-color: var(--primary-color, #007bff);
    color: white;
}

.btn-primary:hover[b-gsw7tct6rw] {
    background-color: var(--primary-hover, #0056b3);
}

.btn-outline[b-gsw7tct6rw] {
    background-color: transparent;
    border-color: var(--border-color, #dee2e6);
    color: var(--text-primary, #333);
}

.btn-outline:hover[b-gsw7tct6rw] {
    background-color: var(--bg-secondary, #f8f9fa);
}
/* /Components/Portal/PortalHeader.razor.rz.scp.css */
/* ─────────────────────────────────────────────────────────────────────────
   PortalHeader — the navy chrome strip above the iframe of a launched
   portal. Premium-grade so the user always feels the OnePortal product
   surface even when the body content is a separate downstream app.
   ───────────────────────────────────────────────────────────────────────── */

.portal-header-container[b-uklohwh6iq] {
    background: linear-gradient(135deg, #001F57 0%, #00296B 55%, #0a3380 100%) !important;
    color: #ffffff !important;
    padding: 12px 22px !important;
    position: relative;
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.06) inset,
                0 6px 22px rgba(0, 18, 54, 0.22) !important;
    overflow: hidden;
    font-family: 'Ubuntu', 'Segoe UI', 'Inter', system-ui, sans-serif;
    border-bottom: 0 !important;
}

/* Decorative ambient glow — soft, top-right */
.portal-header-container[b-uklohwh6iq]::before {
    content: '';
    position: absolute;
    top: -60%;
    right: -10%;
    width: 320px;
    height: 320px;
    background: radial-gradient(circle, rgba(201, 169, 97, 0.18) 0%, transparent 65%);
    pointer-events: none;
}

/* Thin gold accent rule along the bottom edge */
.portal-header-container[b-uklohwh6iq]::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(201, 169, 97, 0.0) 12%,
        rgba(201, 169, 97, 0.85) 50%,
        rgba(201, 169, 97, 0.0) 88%,
        transparent 100%);
}

.portal-header-content[b-uklohwh6iq] {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    position: relative;
    z-index: 1;
}

.portal-header-info[b-uklohwh6iq] {
    display: flex;
    align-items: center;
    gap: 14px;
    flex: 1;
    min-width: 0;
}

/* Corporate LFZ wordmark — appears before the per-portal icon chip on
   every portal launcher. Constrained height; width is intrinsic so the
   logo proportions stay correct regardless of which portal is loaded. */
.portal-lfz-mark[b-uklohwh6iq] {
    height: 36px;
    width: auto;
    flex-shrink: 0;
    display: block;
    margin-right: 4px;
    user-select: none;
}

/* Frosted-glass icon chip on navy */
.portal-header-icon[b-uklohwh6iq] {
    width: 42px;
    height: 42px;
    flex: 0 0 42px;
    border-radius: 11px;
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.18) 0%, rgba(255, 255, 255, 0.06) 100%);
    border: 1px solid rgba(255, 255, 255, 0.16);
    color: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);
}

.portal-header-icon i[b-uklohwh6iq] { font-size: 19px; color: #ffffff; }

.portal-header-text[b-uklohwh6iq] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

/* Eyebrow + breadcrumb hidden: single bold portal name is the only label */
.portal-header-eyebrow[b-uklohwh6iq],
.portal-breadcrumb[b-uklohwh6iq] { display: none !important; }

.portal-header-title[b-uklohwh6iq] {
    margin: 0;
    font-size: 20px;
    font-weight: 800;
    color: #ffffff;
    line-height: 1.1;
    letter-spacing: 0.005em;
}

/* Live-status pill */
.portal-status-chip[b-uklohwh6iq] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border-radius: 999px;
    background: rgba(16, 185, 129, 0.16);
    border: 1px solid rgba(16, 185, 129, 0.32);
    color: #6EE7B7;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    flex-shrink: 0;
    margin-left: 8px;
}

.portal-status-dot[b-uklohwh6iq] {
    width: 7px;
    height: 7px;
    border-radius: 999px;
    background: #10B981;
    box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.5);
    animation: onep-pulse-b-uklohwh6iq 2s ease-in-out infinite;
}

@keyframes onep-pulse-b-uklohwh6iq {
    0%, 100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.55); }
    50%      { box-shadow: 0 0 0 6px rgba(16, 185, 129, 0); }
}

/* Action icon buttons */
.portal-header-actions[b-uklohwh6iq] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.btn-icon[b-uklohwh6iq] {
    width: 34px;
    height: 34px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.10);
    color: rgba(255, 255, 255, 0.86);
    padding: 0;
    cursor: pointer;
    border-radius: 9px;
    transition: background 150ms ease, color 150ms ease, transform 150ms ease;
    display: flex;
    align-items: center;
    justify-content: center;
}

.btn-icon:hover[b-uklohwh6iq] {
    background: rgba(255, 255, 255, 0.16);
    color: #ffffff;
    transform: translateY(-1px);
}

.btn-icon:active[b-uklohwh6iq] { transform: translateY(0); }

.btn-icon svg[b-uklohwh6iq] { width: 16px; height: 16px; }

.btn-icon--close:hover[b-uklohwh6iq] {
    background: rgba(239, 68, 68, 0.85);
    border-color: rgba(239, 68, 68, 0.85);
    color: #ffffff;
}

@media (max-width: 768px) {
    .portal-header-container[b-uklohwh6iq] { padding: 10px 14px; }
    .portal-lfz-mark[b-uklohwh6iq] { height: 30px; }
    .portal-header-icon[b-uklohwh6iq] { width: 36px; height: 36px; flex: 0 0 36px; border-radius: 9px; }
    .portal-header-title[b-uklohwh6iq] { font-size: 17px; }
    .portal-status-chip[b-uklohwh6iq] { display: none; }
    .btn-icon[b-uklohwh6iq] { width: 30px; height: 30px; }
}
/* /Pages/AddEnterpriseUsers.razor.rz.scp.css */
/* ENT-01 Part B — Add Enterprise Users.
   All colors flow from /wwwroot/css/themes.css CSS variables, so toggling
   .dark-theme on <body> swaps the palette automatically. Mirrors the
   layout/table/panel conventions of ManageTenants.razor.css. */

/* ── Layout ──────────────────────────────────────────────────────────────── */

.employee-dashboard-container[b-rjvr0m1y4s] {
    display: flex;
    min-height: 100vh;
    min-height: 100dvh;
    background-color: var(--bg-primary);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.sidebar[b-rjvr0m1y4s] {
    width: 280px;
    background-color: var(--bg-sidebar);
    color: var(--text-sidebar);
    position: fixed;
    height: 100vh;
    height: 100dvh;
    left: 0;
    top: 0;
    z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary);
}

.main-content[b-rjvr0m1y4s] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary);
    min-height: 100vh;
    min-height: 100dvh;
    overflow-y: auto;
    overflow-x: hidden;
}

.employee-details-section[b-rjvr0m1y4s] {
    padding: 30px 40px;
    background-color: var(--bg-primary);
}

.section-header[b-rjvr0m1y4s] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 24px;
    gap: 16px;
}

.section-title[b-rjvr0m1y4s] {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0;
}

.section-subtitle[b-rjvr0m1y4s] {
    margin: 6px 0 0;
    font-size: 14px;
    color: var(--text-secondary);
}

.action-bar[b-rjvr0m1y4s] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.search-box[b-rjvr0m1y4s] {
    position: relative;
    display: flex;
    align-items: center;
}

.search-input[b-rjvr0m1y4s] {
    padding: 10px 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    width: 280px;
    outline: none;
}

.search-input:focus[b-rjvr0m1y4s] {
    border-color: var(--input-focus);
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.15);
}

.search-input[b-rjvr0m1y4s]::placeholder {
    color: var(--input-placeholder);
}

/* ── Buttons ─────────────────────────────────────────────────────────────── */

.btn[b-rjvr0m1y4s] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s ease;
    border: 1px solid transparent;
    white-space: nowrap;
}

.btn-primary[b-rjvr0m1y4s] {
    background-color: var(--btn-primary-bg);
    color: var(--btn-primary-text);
}

.btn-primary:hover[b-rjvr0m1y4s] {
    background-color: var(--btn-primary-hover);
    transform: translateY(-1px);
}

.btn-outline[b-rjvr0m1y4s] {
    background-color: var(--btn-secondary-bg);
    color: var(--btn-secondary-text);
    border-color: var(--btn-secondary-border);
}

.btn-outline:hover[b-rjvr0m1y4s] {
    background-color: var(--btn-secondary-hover);
}

/* ── Table ───────────────────────────────────────────────────────────────── */

.employee-table-section[b-rjvr0m1y4s] {
    background-color: var(--card-bg);
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid var(--card-border);
    box-shadow: var(--card-shadow);
    margin-bottom: 24px;
}

.employee-table[b-rjvr0m1y4s] {
    width: 100%;
    border-collapse: collapse;
}

.employee-table thead[b-rjvr0m1y4s] {
    background-color: var(--bg-secondary);
}

.employee-table th[b-rjvr0m1y4s] {
    padding: 16px;
    text-align: left;
    font-weight: 600;
    font-size: 14px;
    color: var(--text-secondary);
    border-bottom: 2px solid var(--border-primary);
}

.employee-table tbody tr[b-rjvr0m1y4s] {
    border-bottom: 1px solid var(--border-primary);
    transition: background-color 0.2s ease;
}

.employee-table tbody tr:hover[b-rjvr0m1y4s] {
    background-color: var(--bg-secondary);
}

.employee-table td[b-rjvr0m1y4s] {
    padding: 16px;
    font-size: 14px;
    color: var(--text-primary);
}

.status-badge[b-rjvr0m1y4s] {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 9999px;
    font-size: 12px;
    font-weight: 600;
}

.status-active[b-rjvr0m1y4s] {
    background: var(--success-bg);
    color: var(--success);
}

.status-inactive[b-rjvr0m1y4s] {
    background: var(--bg-tertiary);
    color: var(--text-muted);
}

.btn-icon[b-rjvr0m1y4s] {
    background: transparent;
    border: 1px solid var(--border-primary);
    color: var(--text-secondary);
    padding: 6px 12px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    margin-right: 0.5rem;
}

.btn-icon:hover[b-rjvr0m1y4s] {
    background: var(--bg-secondary);
    color: var(--text-primary);
}

.btn-icon.btn-danger[b-rjvr0m1y4s] {
    color: var(--error);
    border-color: var(--error);
}

.btn-icon.btn-danger:hover[b-rjvr0m1y4s] {
    background: var(--error-bg);
}

.actions-col[b-rjvr0m1y4s] {
    text-align: right;
    white-space: nowrap;
}

.empty[b-rjvr0m1y4s] {
    text-align: center;
    color: var(--text-muted);
    padding: 2rem;
}

.loading-state[b-rjvr0m1y4s],
.error-state[b-rjvr0m1y4s] {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--text-secondary);
}

/* ── Right-slide edit panel ──────────────────────────────────────────────── */

.edit-panel-overlay[b-rjvr0m1y4s] {
    position: fixed;
    inset: 0;
    background-color: rgba(15, 23, 42, 0.45);
    z-index: 2000;
    display: flex;
    justify-content: flex-end;
    animation: fadeIn-b-rjvr0m1y4s 0.2s ease;
}

.edit-panel[b-rjvr0m1y4s] {
    width: 480px;
    max-width: 100%;
    background-color: var(--card-bg);
    color: var(--text-primary);
    height: 100vh;
    height: 100dvh;
    display: flex;
    flex-direction: column;
    box-shadow: var(--shadow-xl);
    animation: slideIn-b-rjvr0m1y4s 0.2s ease;
}

.edit-panel-header[b-rjvr0m1y4s] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 24px;
    border-bottom: 1px solid var(--border-primary);
}

.edit-panel-header h3[b-rjvr0m1y4s] {
    margin: 0;
    color: var(--text-primary);
    font-size: 18px;
}

.close-btn[b-rjvr0m1y4s] {
    background: transparent;
    border: none;
    color: var(--text-muted);
    font-size: 24px;
    cursor: pointer;
    line-height: 1;
}

.close-btn:hover[b-rjvr0m1y4s] {
    color: var(--text-primary);
}

.edit-panel-body[b-rjvr0m1y4s] {
    flex: 1;
    padding: 20px 24px;
    overflow-y: auto;
}

.edit-panel-footer[b-rjvr0m1y4s] {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    padding: 16px 24px;
    border-top: 1px solid var(--border-primary);
}

@keyframes fadeIn-b-rjvr0m1y4s {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes slideIn-b-rjvr0m1y4s {
    from { transform: translateX(100%); }
    to { transform: translateX(0); }
}

/* ── Form helpers ────────────────────────────────────────────────────────── */

.form-label[b-rjvr0m1y4s] {
    display: block;
    margin: 1rem 0 0.25rem;
    font-weight: 500;
    color: var(--text-primary);
}

.form-input[b-rjvr0m1y4s] {
    display: block;
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    margin-top: 0.25rem;
    box-sizing: border-box;
}

.form-input:focus[b-rjvr0m1y4s] {
    outline: none;
    border-color: var(--input-focus);
    box-shadow: 0 0 0 2px rgba(30, 64, 175, 0.15);
}

.form-input:disabled[b-rjvr0m1y4s] {
    background-color: var(--bg-tertiary);
    color: var(--text-muted);
    cursor: not-allowed;
}

.form-hint[b-rjvr0m1y4s] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8rem;
    color: var(--text-muted);
}

.form-checkbox[b-rjvr0m1y4s] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 1.5rem 0 0.5rem;
    font-weight: 500;
    color: var(--text-primary);
}

.login-status[b-rjvr0m1y4s] {
    margin-top: 1rem;
    font-size: 14px;
    color: var(--text-secondary);
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.required[b-rjvr0m1y4s] {
    color: var(--error);
}

.alert[b-rjvr0m1y4s] {
    padding: 0.75rem 1rem;
    border-radius: 8px;
    margin-bottom: 1rem;
    font-size: 0.9rem;
}

.alert-error[b-rjvr0m1y4s] {
    background: var(--error-bg);
    border: 1px solid var(--error);
    color: var(--error);
}

/* ── Responsive ──────────────────────────────────────────────────────────── */

@media (max-width: 1200px) {
    .sidebar[b-rjvr0m1y4s] { width: 250px; }
    .main-content[b-rjvr0m1y4s] { margin-left: 250px; }
}

@media (max-width: 768px) {
    .employee-dashboard-container[b-rjvr0m1y4s] {
        flex-direction: column;
    }
    .sidebar[b-rjvr0m1y4s] {
        position: relative;
        width: 100%;
        height: 0;
        min-height: 0;
        overflow: visible;
        background: transparent;
        border: 0;
    }
    .main-content[b-rjvr0m1y4s] {
        margin-left: 0;
    }
    .employee-details-section[b-rjvr0m1y4s] {
        padding: 20px 16px;
    }
    .section-header[b-rjvr0m1y4s] {
        flex-direction: column;
        align-items: flex-start;
        gap: 16px;
    }
    .action-bar[b-rjvr0m1y4s] {
        width: 100%;
        flex-wrap: wrap;
    }
    .search-box[b-rjvr0m1y4s] {
        flex: 1 1 auto;
        min-width: 0;
    }
    .search-input[b-rjvr0m1y4s] {
        width: 100%;
    }
    .employee-table-section[b-rjvr0m1y4s] {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .employee-table[b-rjvr0m1y4s] {
        min-width: 720px;
        font-size: 13px;
    }
    .employee-table th[b-rjvr0m1y4s],
    .employee-table td[b-rjvr0m1y4s] {
        padding: 12px 10px;
        white-space: nowrap;
    }
}

@media (max-width: 600px) {
    .section-title[b-rjvr0m1y4s] { font-size: 20px; }
}

@media (max-width: 480px) {
    .employee-details-section[b-rjvr0m1y4s] {
        padding: 16px 12px;
    }
    .btn-icon[b-rjvr0m1y4s] {
        min-width: 44px;
        min-height: 44px;
        padding: 6px 10px;
    }
    .edit-panel[b-rjvr0m1y4s] {
        width: 100% !important;
        max-width: none;
        height: 100%;
        border-radius: 0;
    }
}


/* UI-Rebuild Phase 6: pagination buttons were unstyled (browser default
   ButtonFace grey — unreadable in dark mode). Mirrors AllSystemUsers. */
.pagination[b-rjvr0m1y4s] { display: flex; align-items: center; gap: 12px; margin-top: 16px; }
.pagination-btn[b-rjvr0m1y4s] {
    background-color: var(--btn-primary-bg);
    color: var(--btn-primary-text);
    border: none; padding: 10px 20px; border-radius: 8px;
    cursor: pointer; font-weight: 600; font-size: 14px;
}
.pagination-btn:hover:not(:disabled)[b-rjvr0m1y4s] { background-color: var(--btn-primary-hover); }
.pagination-btn:disabled[b-rjvr0m1y4s] {
    background-color: var(--bg-tertiary);
    color: var(--text-muted);
    cursor: not-allowed; opacity: 0.6;
}
.pagination-info[b-rjvr0m1y4s] { color: var(--text-secondary); font-size: 14px; }
/* /Pages/AdminRoleEditor.razor.rz.scp.css */
/* Phase-5 RBAC: AdminRoleEditor — same shell as AdminRoles, plus the
   permission-matrix grid styling. Responsive ladder mirrors AdminRoles. */

.employee-dashboard-container[b-kwanvzr8h3] {
    display: flex;
    min-height: 100vh;
    min-height: 100dvh;
    background-color: var(--bg-primary);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.sidebar[b-kwanvzr8h3] {
    width: 280px;
    background-color: var(--bg-sidebar);
    color: var(--text-sidebar);
    position: fixed;
    height: 100vh;
    height: 100dvh;
    left: 0; top: 0; z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary);
}

.main-content[b-kwanvzr8h3] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary);
    min-height: 100vh;
    min-height: 100dvh;
    overflow-y: auto;
    overflow-x: hidden;
}

.employee-details-section[b-kwanvzr8h3] { padding: 30px 40px; }

.back-link[b-kwanvzr8h3] {
    display: inline-block;
    color: var(--heading, #001F57);
    font-weight: 600;
    text-decoration: none;
    margin-bottom: 8px;
    font-size: 14px;
}
.back-link:hover[b-kwanvzr8h3] { text-decoration: underline; }

.section-title[b-kwanvzr8h3] {
    font-size: 24px; font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 8px 0;
}
.section-title .role-code[b-kwanvzr8h3] {
    font-size: 14px; color: var(--text-muted);
    font-weight: 500; margin-left: 8px;
}

.tabs[b-kwanvzr8h3] {
    display: flex; gap: 4px;
    border-bottom: 1px solid var(--border-primary);
    margin: 22px 0 14px;
}
.tab[b-kwanvzr8h3] {
    padding: 10px 16px; background: transparent;
    border: 0; border-bottom: 2px solid transparent;
    cursor: pointer; font-weight: 600; color: var(--text-muted);
}
.tab.active[b-kwanvzr8h3] {
    border-bottom-color: var(--accent-primary, #001F57);
    color: var(--text-primary);
}

.permission-matrix-info[b-kwanvzr8h3] {
    background: var(--bg-secondary, #eef4ff);
    border: 1px solid var(--border-primary, #c7d8f5);
    border-radius: 8px;
    padding: 12px 14px;
    color: var(--text-secondary, #1e3a6b);
    font-size: 13.5px;
    margin: 12px 0 18px;
}

.employee-table-section[b-kwanvzr8h3] {
    background: var(--card-bg);
    border-radius: 12px;
    border: 1px solid var(--border-primary);
    overflow: hidden;
}

.employee-table[b-kwanvzr8h3] { width: 100%; border-collapse: collapse; }
.employee-table th[b-kwanvzr8h3], .employee-table td[b-kwanvzr8h3] {
    padding: 14px 16px; text-align: left;
    border-bottom: 1px solid var(--border-primary);
}
.employee-table th[b-kwanvzr8h3] {
    background: var(--bg-secondary); font-weight: 700;
    font-size: 13px; color: var(--text-secondary);
}
.permission-matrix .check-col[b-kwanvzr8h3] { text-align: center; width: 80px; }
.permission-matrix input[type="checkbox"][b-kwanvzr8h3] { width: 18px; height: 18px; cursor: pointer; }
.permission-matrix .module-code[b-kwanvzr8h3] {
    display: block; color: var(--text-muted);
    font-size: 11px; font-family: monospace;
}

.action-row[b-kwanvzr8h3] {
    display: flex; align-items: center; gap: 14px;
    margin-top: 20px;
}
.btn[b-kwanvzr8h3] { padding: 10px 18px; border-radius: 8px; cursor: pointer; font-weight: 600; }
.btn-primary[b-kwanvzr8h3] { background: #001F57; color: white; border: 1px solid #001F57; }

.alert[b-kwanvzr8h3] { padding: 10px 14px; border-radius: 8px; font-size: 13px; }
.alert-error[b-kwanvzr8h3] { background: var(--error-bg, #fff5f5); border: 1px solid var(--border-primary, #f5c4c4); color: var(--error, #b3261e); }
.alert-info[b-kwanvzr8h3] { background: var(--bg-secondary, #eef4ff); border: 1px solid var(--border-primary, #c7d8f5); color: var(--text-secondary, #1e3a6b); }

.loading-state[b-kwanvzr8h3], .error-state[b-kwanvzr8h3] {
    text-align: center; padding: 3rem 1rem;
    color: var(--text-secondary);
}

/* Responsive ladder (mirrors AdminRoles + ManageTenants) */
@media (max-width: 1200px) {
    .sidebar[b-kwanvzr8h3] { width: 250px; }
    .main-content[b-kwanvzr8h3] { margin-left: 250px; }
}
@media (max-width: 768px) {
    .employee-dashboard-container[b-kwanvzr8h3] { flex-direction: column; }
    .sidebar[b-kwanvzr8h3] {
        position: relative; width: 100%; height: 0;
        min-height: 0; overflow: visible;
        background: transparent; border: 0;
    }
    .main-content[b-kwanvzr8h3] { margin-left: 0; }
    .employee-details-section[b-kwanvzr8h3] { padding: 20px 16px; }
    .employee-table-section[b-kwanvzr8h3] { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .permission-matrix[b-kwanvzr8h3] { min-width: 540px; font-size: 13px; }
    .permission-matrix th[b-kwanvzr8h3], .permission-matrix td[b-kwanvzr8h3] { padding: 12px 10px; }
}
@media (max-width: 600px) { .section-title[b-kwanvzr8h3] { font-size: 20px; } }
@media (max-width: 480px) {
    .employee-details-section[b-kwanvzr8h3] { padding: 16px 12px; }
    .btn[b-kwanvzr8h3] { min-height: 44px; }
    .permission-matrix .check-col[b-kwanvzr8h3] { width: 56px; }
    .permission-matrix input[type="checkbox"][b-kwanvzr8h3] { width: 22px; height: 22px; }  /* easier tap */
}

/* Phase-Item-4: typeahead row at the top of the Users tab. The dropdown
   list is absolutely positioned so it overlays the table below rather
   than pushing it down — matches the standard typeahead UX. */
.assign-row[b-kwanvzr8h3] {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin: 16px 0 12px;
    flex-wrap: wrap;
}

.assign-search[b-kwanvzr8h3] {
    position: relative;
    flex: 1 1 300px;
    min-width: 220px;
}

.assign-search .form-input[b-kwanvzr8h3] {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--border-primary);
    border-radius: 8px;
    font-size: 14px;
    background: var(--card-bg, #ffffff);
    color: var(--text-primary, #141414);
}

.assign-search-results[b-kwanvzr8h3] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    max-height: 280px;
    overflow-y: auto;
    background: var(--card-bg, white);
    border: 1px solid var(--border-primary);
    border-radius: 8px;
    box-shadow: var(--shadow-lg, 0 6px 20px rgba(15, 23, 42, 0.12));
    z-index: 20;
}

.assign-search-item[b-kwanvzr8h3] {
    padding: 8px 12px;
    cursor: pointer;
    font-size: 14px;
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-primary);
}
.assign-search-item:last-child[b-kwanvzr8h3] { border-bottom: none; }
.assign-search-item:hover[b-kwanvzr8h3],
.assign-search-item.selected[b-kwanvzr8h3] {
    background: var(--bg-secondary, #eef4ff);
    color: var(--heading, #001F57);
}

.assign-primary-toggle[b-kwanvzr8h3] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 0;
    font-size: 14px;
    cursor: pointer;
    color: var(--text-primary);
    white-space: nowrap;
}

.assign-primary-toggle input[type="checkbox"][b-kwanvzr8h3] {
    width: 18px;
    height: 18px;
    cursor: pointer;
    accent-color: #001F57;
}

.row-revoked[b-kwanvzr8h3] {
    opacity: 0.55;
    background: var(--bg-secondary, #f8fafc);
}

@media (max-width: 600px) {
    .assign-row[b-kwanvzr8h3] { flex-direction: column; align-items: stretch; }
    .assign-primary-toggle[b-kwanvzr8h3] { padding: 4px 0; }
    .assign-row .btn-primary[b-kwanvzr8h3] { width: 100%; min-height: 44px; }
}
/* /Pages/AdminRoles.razor.rz.scp.css */
/* Phase-5 RBAC: AdminRoles page styles. Mirrors the layout shell and
   responsive ladder shipped in ManageTenants.razor.css to keep the admin
   surface visually consistent. Tokens come from /wwwroot/css/themes.css. */

.employee-dashboard-container[b-2crxhibcrp] {
    display: flex;
    min-height: 100vh;
    min-height: 100dvh;
    background-color: var(--bg-primary);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.sidebar[b-2crxhibcrp] {
    width: 280px;
    background-color: var(--bg-sidebar);
    color: var(--text-sidebar);
    position: fixed;
    height: 100vh;
    height: 100dvh;
    left: 0;
    top: 0;
    z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary);
}

.main-content[b-2crxhibcrp] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary);
    min-height: 100vh;
    min-height: 100dvh;
    overflow-y: auto;
    overflow-x: hidden;
}

.employee-details-section[b-2crxhibcrp] { padding: 30px 40px; }

.section-header[b-2crxhibcrp] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 24px;
}

.section-title[b-2crxhibcrp] {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 30px 0;
}

.action-bar[b-2crxhibcrp] { display: flex; align-items: center; gap: 12px; }
.search-box[b-2crxhibcrp] { position: relative; display: flex; align-items: center; }
.search-input[b-2crxhibcrp] {
    padding: 10px 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    width: 250px;
    outline: none;
}

.btn[b-2crxhibcrp] { padding: 10px 16px; border-radius: 8px; cursor: pointer; font-weight: 600; }
.btn-primary[b-2crxhibcrp] { background: #001F57; color: white; border: 1px solid #001F57; }
.btn-outline[b-2crxhibcrp] { background: transparent; color: var(--text-primary); border: 1px solid var(--border-primary); }
.btn-icon[b-2crxhibcrp] { padding: 6px 10px; border: 1px solid var(--border-primary); background: transparent; border-radius: 6px; cursor: pointer; }

.employee-table-section[b-2crxhibcrp] {
    background: var(--card-bg);
    border-radius: 12px;
    border: 1px solid var(--border-primary);
    overflow: hidden;
}

.employee-table[b-2crxhibcrp] { width: 100%; border-collapse: collapse; }
.employee-table th[b-2crxhibcrp], .employee-table td[b-2crxhibcrp] { padding: 14px 16px; text-align: left; border-bottom: 1px solid var(--border-primary); }
.employee-table th[b-2crxhibcrp] { background: var(--bg-secondary); font-weight: 700; font-size: 13px; color: var(--text-secondary); }
.employee-table td.empty[b-2crxhibcrp] { text-align: center; color: var(--text-muted); padding: 32px; }
.employee-table .actions-col[b-2crxhibcrp] { text-align: right; width: 1%; white-space: nowrap; }

.status-badge[b-2crxhibcrp] { padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; }
.status-active[b-2crxhibcrp] { background: #d4edda; color: #155724; }
.status-inactive[b-2crxhibcrp] { background: #f8d7da; color: #721c24; }

/* ── Edit panel (modal-ish slide-in, mirrors ManageTenants pattern) ─────── */
.edit-panel-overlay[b-2crxhibcrp] {
    position: fixed; inset: 0;
    background: rgba(15,23,42,0.45);
    z-index: 2000;
    display: flex; justify-content: flex-end;
    animation: fadeIn-b-2crxhibcrp 0.18s ease;
}
.edit-panel[b-2crxhibcrp] {
    width: min(420px, 100%);
    background: var(--card-bg);
    height: 100%;
    box-shadow: var(--shadow-xl);
    display: flex; flex-direction: column;
    animation: slideIn-b-2crxhibcrp 0.22s ease;
}
@keyframes fadeIn-b-2crxhibcrp { from { opacity:0 } to { opacity:1 } }
@keyframes slideIn-b-2crxhibcrp { from { transform: translateX(100%) } to { transform: translateX(0) } }

.edit-panel-header[b-2crxhibcrp] {
    padding: 16px 20px; border-bottom: 1px solid var(--border-primary);
    display: flex; justify-content: space-between; align-items: center;
}
.edit-panel-header h3[b-2crxhibcrp] { margin: 0; font-size: 17px; }
.close-btn[b-2crxhibcrp] { background: transparent; border: 0; font-size: 24px; cursor: pointer; color: var(--text-muted); }
.edit-panel-body[b-2crxhibcrp] { padding: 20px; flex: 1; overflow-y: auto; }
.edit-panel-footer[b-2crxhibcrp] { padding: 14px 20px; border-top: 1px solid var(--border-primary); display: flex; justify-content: flex-end; gap: 12px; }

.form-label[b-2crxhibcrp] { display: block; margin-bottom: 14px; font-size: 13px; color: var(--text-secondary); font-weight: 600; }
.form-label .required[b-2crxhibcrp] { color: #c62828; }
.form-input[b-2crxhibcrp] {
    display: block; width: 100%; margin-top: 6px;
    padding: 10px 12px; border: 1px solid var(--input-border); border-radius: 8px;
    background: var(--input-bg); color: var(--text-primary); font-size: 14px;
    box-sizing: border-box;
}
.form-hint[b-2crxhibcrp] { display: block; margin-top: 4px; font-size: 12px; color: var(--text-muted); }

.alert[b-2crxhibcrp] { padding: 10px 14px; border-radius: 8px; font-size: 13px; }
.alert-error[b-2crxhibcrp] { background: #fff5f5; border: 1px solid #f5c4c4; color: #b3261e; }

.loading-state[b-2crxhibcrp], .error-state[b-2crxhibcrp] { text-align: center; padding: 3rem 1rem; color: var(--text-secondary); }

/* ── Responsive ladder — mirrors ManageTenants.razor.css lines 510-end ──── */
@media (max-width: 1200px) {
    .sidebar[b-2crxhibcrp] { width: 250px; }
    .main-content[b-2crxhibcrp] { margin-left: 250px; }
}
@media (max-width: 768px) {
    .employee-dashboard-container[b-2crxhibcrp] { flex-direction: column; }
    .sidebar[b-2crxhibcrp] {
        position: relative; width: 100%; height: 0;
        min-height: 0; overflow: visible;
        background: transparent; border: 0;
    }
    .main-content[b-2crxhibcrp] { margin-left: 0; }
    .employee-details-section[b-2crxhibcrp] { padding: 20px 16px; }
    .section-header[b-2crxhibcrp] { flex-direction: column; align-items: flex-start; gap: 16px; }
    .action-bar[b-2crxhibcrp] { width: 100%; flex-wrap: wrap; }
    .search-box[b-2crxhibcrp] { flex: 1 1 auto; min-width: 0; }
    .search-input[b-2crxhibcrp] { width: 100%; }
    .employee-table-section[b-2crxhibcrp] { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .employee-table[b-2crxhibcrp] { min-width: 640px; font-size: 13px; }
    .employee-table th[b-2crxhibcrp], .employee-table td[b-2crxhibcrp] { padding: 12px 10px; white-space: nowrap; }
}
@media (max-width: 600px) {
    .section-title[b-2crxhibcrp] { font-size: 20px; }
}
@media (max-width: 480px) {
    .employee-details-section[b-2crxhibcrp] { padding: 16px 12px; }
    .btn-icon[b-2crxhibcrp] { min-width: 44px; min-height: 44px; padding: 6px 10px; }
    .edit-panel[b-2crxhibcrp] { width: 100% !important; max-width: none; height: 100%; border-radius: 0; }
    .form-input[b-2crxhibcrp] { font-size: 16px; }  /* prevents iOS focus zoom */
    .edit-panel-footer[b-2crxhibcrp] { flex-direction: column-reverse; }
    .edit-panel-footer .btn[b-2crxhibcrp] { width: 100%; }
}
/* /Pages/AllSystemUsers.razor.rz.scp.css */
/* All colors flow from /wwwroot/css/themes.css CSS variables.
   Light theme renders white card / dark text by default; .dark-theme on the
   <body> swaps every var(--*) value to the dark palette automatically.
   The table header retains a fixed navy background to match the brand bar. */

/* Main Container */
.employee-dashboard-container[b-2rr1fw78hq] {
    display: flex;
    min-height: 100vh;
    background-color: var(--bg-primary);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

/* Sidebar */
.sidebar[b-2rr1fw78hq] {
    width: 280px;
    background-color: var(--bg-sidebar);
    color: var(--text-sidebar);
    position: fixed;
    height: 100vh;
    left: 0;
    top: 0;
    z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary);
}

/* Main Content Area */
.main-content[b-2rr1fw78hq] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary);
    min-height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
}

.section-title[b-2rr1fw78hq] {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 30px 0;
}

/* Employee Details Section */
.employee-details-section[b-2rr1fw78hq] {
    padding: 30px 40px;
    background-color: var(--bg-primary);
}

.section-header[b-2rr1fw78hq] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 24px;
}

.action-bar[b-2rr1fw78hq] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.search-box[b-2rr1fw78hq] {
    position: relative;
    display: flex;
    align-items: center;
}

.search-icon[b-2rr1fw78hq] {
    position: absolute;
    left: 12px;
    pointer-events: none;
}

.search-input[b-2rr1fw78hq] {
    padding: 10px 12px 10px 40px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    width: 250px;
    outline: none;
}

.search-input:focus[b-2rr1fw78hq] {
    border-color: var(--input-focus);
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
}

.search-input[b-2rr1fw78hq]::placeholder {
    color: var(--input-placeholder);
}

.btn-export[b-2rr1fw78hq],
.btn-create[b-2rr1fw78hq] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s ease;
    border: none;
}

.btn-export[b-2rr1fw78hq] {
    background-color: var(--success);
    color: #ffffff;
}

.btn-export:hover[b-2rr1fw78hq] {
    background-color: #059669;
    transform: translateY(-1px);
}

.btn-create[b-2rr1fw78hq] {
    background-color: var(--btn-primary-bg);
    color: var(--btn-primary-text);
}

.btn-create:hover[b-2rr1fw78hq] {
    background-color: var(--btn-primary-hover);
    transform: translateY(-1px);
}

/* Filters Row */
.filters-row[b-2rr1fw78hq] {
    display: flex;
    gap: 16px;
    margin-bottom: 24px;
    flex-wrap: wrap;
}

.filter-select[b-2rr1fw78hq] {
    flex: 1;
    min-width: 180px;
    padding: 10px 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    outline: none;
    cursor: pointer;
    transition: all 0.2s ease;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    font-weight: 500;
}

.filter-select:focus[b-2rr1fw78hq] {
    border-color: var(--input-focus);
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
}

.filter-select option[b-2rr1fw78hq] {
    background-color: var(--input-bg);
    color: var(--text-primary);
    padding: 8px;
}

.filter-select[b-2rr1fw78hq]::-ms-expand {
    display: none;
}

/* Table Container */
.table-container[b-2rr1fw78hq] {
    background-color: var(--card-bg);
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid var(--card-border);
    box-shadow: var(--card-shadow);
    margin-bottom: 24px;
}

.employee-table[b-2rr1fw78hq] {
    width: 100%;
    border-collapse: collapse;
}

/* Header keeps the brand-navy bar regardless of theme — anchors the table
   visually and matches the page chrome. White text against navy is intentional
   and theme-independent. */
.employee-table thead[b-2rr1fw78hq] {
    background-color: var(--accent-dark);
}

.employee-table th[b-2rr1fw78hq] {
    padding: 16px;
    text-align: left;
    font-weight: 600;
    font-size: 14px;
    color: #ffffff;
    border-bottom: 2px solid var(--accent-dark);
}

.employee-table tbody tr[b-2rr1fw78hq] {
    border-bottom: 1px solid var(--border-primary);
    transition: background-color 0.2s ease;
}

.employee-table tbody tr:hover[b-2rr1fw78hq] {
    background-color: var(--bg-secondary);
}

.employee-table td[b-2rr1fw78hq] {
    padding: 16px;
    font-size: 14px;
    color: var(--text-primary);
}

.employee-link[b-2rr1fw78hq] {
    color: var(--accent-primary);
    text-decoration: none;
    font-weight: 500;
    transition: color 0.2s ease;
}

.employee-link:hover[b-2rr1fw78hq] {
    color: var(--accent-hover);
    text-decoration: underline;
}

.action-buttons[b-2rr1fw78hq] {
    display: flex;
    gap: 8px;
    align-items: center;
}

.action-btn[b-2rr1fw78hq] {
    background: none;
    border: none;
    color: var(--text-tertiary);
    cursor: pointer;
    padding: 6px;
    border-radius: 4px;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
}

.action-btn:hover[b-2rr1fw78hq] {
    background-color: var(--bg-secondary);
    color: var(--text-primary);
}

.action-btn.delete-btn:hover[b-2rr1fw78hq] {
    background-color: var(--error);
    color: #ffffff;
}

/* Pagination */
.pagination[b-2rr1fw78hq] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 0;
}

.pagination-btn[b-2rr1fw78hq] {
    background-color: var(--btn-primary-bg);
    color: var(--btn-primary-text);
    border: none;
    padding: 10px 20px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: 600;
    font-size: 14px;
    transition: all 0.2s ease;
}

.pagination-btn:hover:not(:disabled)[b-2rr1fw78hq] {
    background-color: var(--btn-primary-hover);
    transform: translateY(-1px);
}

.pagination-btn:disabled[b-2rr1fw78hq] {
    background-color: var(--bg-tertiary);
    color: var(--text-muted);
    cursor: not-allowed;
    opacity: 0.6;
}

.pagination-info[b-2rr1fw78hq] {
    color: var(--text-secondary);
    font-size: 14px;
    font-weight: 500;
}

/* Loading and Empty States */
.loading-message[b-2rr1fw78hq],
.no-data-message[b-2rr1fw78hq] {
    padding: 40px;
    text-align: center;
    color: var(--text-muted);
    font-size: 16px;
}

/* Responsive Design */
@media (max-width: 1200px) {
    .sidebar[b-2rr1fw78hq] {
        width: 250px;
    }
    
    .main-content[b-2rr1fw78hq] {
        margin-left: 250px;
    }
    
    .filters-row[b-2rr1fw78hq] {
        flex-direction: column;
    }
    
    .filter-select[b-2rr1fw78hq] {
        width: 100%;
    }
}

@media (max-width: 768px) {
    .employee-dashboard-container[b-2rr1fw78hq] {
        flex-direction: column;
    }

    /* See Dashboard.razor.css for the rationale: the wrapper must collapse
       to zero so SharedHeader anchors at top: 0. PortalSidebar's internal
       elements remain visible via their own fixed positioning at this
       breakpoint, so functionality is unaffected. */
    .sidebar[b-2rr1fw78hq] {
        position: relative;
        width: 100%;
        height: 0;
        min-height: 0;
        overflow: visible;
        background: transparent;
        border: 0;
    }
    
    .main-content[b-2rr1fw78hq] {
        margin-left: 0;
    }
    
    .section-header[b-2rr1fw78hq] {
        flex-direction: column;
        align-items: flex-start;
        gap: 16px;
    }
    
    .action-bar[b-2rr1fw78hq] {
        width: 100%;
        flex-wrap: wrap;
    }
    
    .search-input[b-2rr1fw78hq] {
        width: 100%;
    }
    
    .employee-details-section[b-2rr1fw78hq] {
        padding: 20px;
    }
    
    /* Tables on mobile: enable horizontal scroll inside the container so the
       7-column employee table stays readable. Without overflow-x:auto the
       columns squash unreadably or the entire page scrolls horizontally. */
    .table-container[b-2rr1fw78hq] {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .employee-table[b-2rr1fw78hq] {
        font-size: 12px;
        min-width: 720px;   /* keep columns wide enough to read */
    }

    .employee-table th[b-2rr1fw78hq],
    .employee-table td[b-2rr1fw78hq] {
        padding: 12px 8px;
        white-space: nowrap;
    }
}

@media (max-width: 480px) {
    .employee-details-section[b-2rr1fw78hq] {
        padding: 16px;
    }

    .section-title[b-2rr1fw78hq] {
        font-size: 20px;
    }

    .pagination[b-2rr1fw78hq] {
        flex-direction: column;
        gap: 12px;
    }

    /* WCAG-friendly touch target on row action buttons (Edit / Toggle /
       Reset Password). Icon buttons on touch screens need 44×44 to be
       comfortably tappable; previously these were ~28×28. */
    .btn-icon[b-2rr1fw78hq],
    .actions-col .btn-icon[b-2rr1fw78hq] {
        min-width: 44px;
        min-height: 44px;
        padding: 6px 10px;
    }

    /* Pagination pill buttons get the same minimum target. */
    .pagination button[b-2rr1fw78hq] {
        min-height: 44px;
    }
}

/* ── Inactive-user row styling ───────────────────────────────────────────────
   Soft-deleted (IsActive=false) rows are faded with a strikethrough on the
   name + a small "Inactive" pill so admins can tell at a glance whether the
   row's toggle button will deactivate or reactivate. */
.row-inactive[b-2rr1fw78hq] {
    background-color: #f8fafc;
    color: #6b7280;
}

.row-inactive td[b-2rr1fw78hq] {
    color: #6b7280;
}

.row-inactive .employee-link[b-2rr1fw78hq] {
    color: #6b7280;
    text-decoration: line-through;
}

.inactive-badge[b-2rr1fw78hq] {
    display: inline-block;
    margin-left: 8px;
    padding: 2px 8px;
    border-radius: 999px;
    background-color: #fee2e2;
    color: #991b1b;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    vertical-align: middle;
}

/* Reactivate button — green check icon. Distinct from the red Deactivate
   power-icon button (which keeps the existing .delete-btn styling). */
.activate-btn[b-2rr1fw78hq] {
    color: #15803d;
}

.activate-btn:hover[b-2rr1fw78hq] {
    background-color: rgba(34, 197, 94, 0.10);
    color: #166534;
}

/* /Pages/CasualStaff.razor.rz.scp.css */
/* All colors flow from /wwwroot/css/themes.css CSS variables. */

/* ── Layout ──────────────────────────────────────────────────────────────── */

.employee-dashboard-container[b-eruy1vnpqb] {
    display: flex;
    min-height: 100vh;
    background-color: var(--bg-primary);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.sidebar[b-eruy1vnpqb] {
    width: 280px;
    background-color: var(--bg-sidebar);
    color: var(--text-sidebar);
    position: fixed;
    height: 100vh;
    left: 0;
    top: 0;
    z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary);
}

.main-content[b-eruy1vnpqb] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary);
    min-height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
}

.employee-details-section[b-eruy1vnpqb] {
    padding: 30px 40px;
    background-color: var(--bg-primary);
}

.section-header[b-eruy1vnpqb] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 24px;
}

.section-title[b-eruy1vnpqb] {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 30px 0;
}

.action-bar[b-eruy1vnpqb] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.search-box[b-eruy1vnpqb] {
    position: relative;
    display: flex;
    align-items: center;
}

.search-input[b-eruy1vnpqb] {
    padding: 10px 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    width: 250px;
    outline: none;
}

.search-input:focus[b-eruy1vnpqb] {
    border-color: var(--input-focus);
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.15);
}

.search-input[b-eruy1vnpqb]::placeholder {
    color: var(--input-placeholder);
}

.filter-select[b-eruy1vnpqb] {
    padding: 10px 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    outline: none;
    cursor: pointer;
    font-weight: 500;
}

.btn[b-eruy1vnpqb] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s ease;
    border: 1px solid transparent;
}

.btn-primary[b-eruy1vnpqb] {
    background-color: var(--btn-primary-bg);
    color: var(--btn-primary-text);
}

.btn-primary:hover[b-eruy1vnpqb] {
    background-color: var(--btn-primary-hover);
    transform: translateY(-1px);
}

.btn-outline[b-eruy1vnpqb] {
    background-color: var(--btn-secondary-bg);
    color: var(--btn-secondary-text);
    border-color: var(--btn-secondary-border);
}

.btn-outline:hover[b-eruy1vnpqb] {
    background-color: var(--btn-secondary-hover);
}

.employee-table-section[b-eruy1vnpqb] {
    background-color: var(--card-bg);
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid var(--card-border);
    box-shadow: var(--card-shadow);
    margin-bottom: 24px;
}

.employee-table[b-eruy1vnpqb] {
    width: 100%;
    border-collapse: collapse;
}

.employee-table thead[b-eruy1vnpqb] {
    background-color: var(--bg-secondary);
}

.employee-table th[b-eruy1vnpqb] {
    padding: 16px;
    text-align: left;
    font-weight: 600;
    font-size: 14px;
    color: var(--text-secondary);
    border-bottom: 2px solid var(--border-primary);
}

.employee-table tbody tr[b-eruy1vnpqb] {
    border-bottom: 1px solid var(--border-primary);
    transition: background-color 0.2s ease;
}

.employee-table tbody tr:hover[b-eruy1vnpqb] {
    background-color: var(--bg-secondary);
}

.employee-table td[b-eruy1vnpqb] {
    padding: 16px;
    font-size: 14px;
    color: var(--text-primary);
}

/* ── Right-slide edit panel ──────────────────────────────────────────────── */

.edit-panel-overlay[b-eruy1vnpqb] {
    position: fixed;
    inset: 0;
    background-color: rgba(15, 23, 42, 0.45);
    z-index: 2000;
    display: flex;
    justify-content: flex-end;
    animation: fadeIn-b-eruy1vnpqb 0.2s ease;
}

.edit-panel[b-eruy1vnpqb] {
    width: 640px;
    max-width: 100%;
    background-color: var(--card-bg);
    color: var(--text-primary);
    height: 100vh;
    display: flex;
    flex-direction: column;
    box-shadow: var(--shadow-xl);
    animation: slideIn-b-eruy1vnpqb 0.2s ease;
}

.edit-panel-header[b-eruy1vnpqb] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 24px;
    border-bottom: 1px solid var(--border-primary);
}

.edit-panel-header h3[b-eruy1vnpqb] {
    margin: 0;
    color: var(--text-primary);
    font-size: 18px;
}

.close-btn[b-eruy1vnpqb] {
    background: transparent;
    border: none;
    color: var(--text-muted);
    font-size: 24px;
    cursor: pointer;
    line-height: 1;
}

.close-btn:hover[b-eruy1vnpqb] {
    color: var(--text-primary);
}

.edit-panel-body[b-eruy1vnpqb] {
    flex: 1;
    padding: 20px 24px;
    overflow-y: auto;
}

.edit-panel-footer[b-eruy1vnpqb] {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    padding: 16px 24px;
    border-top: 1px solid var(--border-primary);
}

@keyframes fadeIn-b-eruy1vnpqb {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes slideIn-b-eruy1vnpqb {
    from { transform: translateX(100%); }
    to { transform: translateX(0); }
}

/* ── Form helpers ────────────────────────────────────────────────────────── */

.form-grid[b-eruy1vnpqb] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem 1rem;
}

.form-label[b-eruy1vnpqb] {
    display: block;
    font-weight: 500;
    color: var(--text-primary);
    margin-top: 0.25rem;
}

.form-label-wide[b-eruy1vnpqb] {
    grid-column: 1 / -1;
}

.form-input[b-eruy1vnpqb] {
    display: block;
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    margin-top: 0.25rem;
}

.form-input:focus[b-eruy1vnpqb] {
    outline: none;
    border-color: var(--input-focus);
    box-shadow: 0 0 0 2px rgba(30, 64, 175, 0.15);
}

.form-hint[b-eruy1vnpqb] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8rem;
    color: var(--text-muted);
}

.form-checkbox[b-eruy1vnpqb] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 1.5rem 0 0.5rem;
    font-weight: 500;
    color: var(--text-primary);
}

.required[b-eruy1vnpqb] {
    color: var(--error);
}

.alert[b-eruy1vnpqb] {
    padding: 0.75rem 1rem;
    border-radius: 8px;
    margin-bottom: 1rem;
    font-size: 0.9rem;
}

.alert-error[b-eruy1vnpqb] {
    background: var(--error-bg);
    border: 1px solid var(--error);
    color: var(--error);
}

.status-badge[b-eruy1vnpqb] {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 9999px;
    font-size: 12px;
    font-weight: 600;
}

.status-active[b-eruy1vnpqb] {
    background: var(--success-bg);
    color: var(--success);
}

.status-inactive[b-eruy1vnpqb] {
    background: var(--bg-tertiary);
    color: var(--text-muted);
}

.status-terminated[b-eruy1vnpqb] {
    background: var(--error-bg);
    color: var(--error);
}

/* CAU-Staff: section headers inside the (now multi-section) edit panel. */
.form-section-title[b-eruy1vnpqb] {
    grid-column: 1 / -1;
    margin: 1.25rem 0 0.25rem;
    padding-bottom: 0.35rem;
    border-bottom: 1px solid var(--border-primary);
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-secondary);
}
.form-section-title:first-child[b-eruy1vnpqb] {
    margin-top: 0;
}

.btn-icon[b-eruy1vnpqb] {
    background: transparent;
    border: 1px solid var(--border-primary);
    color: var(--text-secondary);
    padding: 6px 12px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    margin-right: 0.5rem;
}

.btn-icon:hover[b-eruy1vnpqb] {
    background: var(--bg-secondary);
    color: var(--text-primary);
}

.btn-icon.btn-danger[b-eruy1vnpqb] {
    color: var(--error);
    border-color: var(--error);
}

.btn-icon.btn-danger:hover[b-eruy1vnpqb] {
    background: var(--error-bg);
}

.actions-col[b-eruy1vnpqb] {
    text-align: right;
    white-space: nowrap;
}

.empty[b-eruy1vnpqb] {
    text-align: center;
    color: var(--text-muted);
    padding: 2rem;
}

.loading-state[b-eruy1vnpqb],
.error-state[b-eruy1vnpqb] {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--text-secondary);
}

.pagination[b-eruy1vnpqb] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 16px;
    color: var(--text-secondary);
}
/* /Pages/ChangePassword.razor.rz.scp.css */
/* ===== ONE PORTAL – Reset Password (CSS isolation) ===== */

/* reset sizing */
*[b-ruffuwzfbz], *[b-ruffuwzfbz]::before, *[b-ruffuwzfbz]::after {
    box-sizing: border-box;
}

/* layout: mirror the login page */
.reset-shell[b-ruffuwzfbz] {
    --primary: #001F57;
    --heading: #292929;
    --sub: #585858;
    --placeholder: #C9D3E0;
    --border: #254a76;
    --input-h: 55px;
    --input-r: 16px;
    --content-w: 480px;

    display: grid;
    grid-template-columns: 55% 45%;
    min-height: 100vh;
    width: 100%;
}

.reset-left[b-ruffuwzfbz] {
    position: relative;
    background: #0b1b33;
}

.reset-img[b-ruffuwzfbz] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.reset-right[b-ruffuwzfbz] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 40px 56px;
    gap: 16px;
}

.reset-right h1[b-ruffuwzfbz] {
    margin: 0 0 10px;
    color: var(--heading);
    font-weight: 800;
    font-size: clamp(24px, 3vw, 32px);
}

/* Subtle "← Back to Home" affordance shown above the heading when the
   user reached this page voluntarily (avatar dropdown). Hidden in the
   forced-change flow, where the user must complete the change before
   navigating away. Brand-navy mirrors the input focus halo so the
   visual story stays coherent across the form. */
.back-link[b-ruffuwzfbz] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    width: max-content;
    margin-bottom: 6px;
    padding: 4px 2px;
    color: var(--primary);
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    background: transparent;
    border: 0;
    cursor: pointer;
    transition: color 0.15s ease, transform 0.15s ease;
}

.back-link:hover[b-ruffuwzfbz] {
    color: #002b78;
    transform: translateX(-2px);
    text-decoration: underline;
}

.back-link:focus-visible[b-ruffuwzfbz] {
    outline: 2px solid var(--primary);
    outline-offset: 2px;
    border-radius: 4px;
}

.back-link i[b-ruffuwzfbz] {
    font-size: 16px;
    line-height: 1;
}

/* fields */
.field[b-ruffuwzfbz] {
    width: min(var(--content-w), 100%);
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 10px;
}

.field label[b-ruffuwzfbz] {
    font-size: 13px;
    font-weight: 700;
    color: #222;
    letter-spacing: .2px;
}

/* base input style — clean white surface, brand-navy focus halo. */
.input[b-ruffuwzfbz] {
    width: 100%;
    height: var(--input-h);
    padding: 0 18px;
    border: 1px solid #cbd5e1;          /* slate-300 */
    border-radius: var(--input-r);
    font-size: 15px;
    outline: none;
    background: #ffffff;
    color: #1e293b;                      /* slate-800 */
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.input[b-ruffuwzfbz]::placeholder {
    color: #94a3b8;                      /* slate-400 — readable on white */
}

.input:focus[b-ruffuwzfbz] {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(0, 31, 87, 0.12);
}

/* validation colors */
.input.valid[b-ruffuwzfbz] {
    border-color: #2e7d32;
}
.input.invalid[b-ruffuwzfbz] {
    border-color: #c62828;
}
.input.modified[b-ruffuwzfbz] {
    box-shadow: inset 0 0 0 1px rgba(0,0,0,.05);
}

/* password toggle */
.password .password-wrap[b-ruffuwzfbz] {
    position: relative;
    width: min(var(--content-w), 100%);
}
.password .password-wrap .input[b-ruffuwzfbz] {
    width: 100%;
    padding-right: 46px;
}
.password .toggle[b-ruffuwzfbz] {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 100%;
    border: 0;
    background: transparent;
    cursor: pointer;
    line-height: 0;
    color: #8aa0b9;
    z-index: 1;
}
.password .toggle:hover[b-ruffuwzfbz] {
    color: #ffffff;
}
.password .toggle i[b-ruffuwzfbz] {
    font-size: 20px;
    line-height: 1;
}

/* forgot/OK/error alignment */
.ok-message[b-ruffuwzfbz],
.error-message[b-ruffuwzfbz],
.validation-message[b-ruffuwzfbz] {
    font-size: 12px;
    margin-top: 6px;
}

.ok-message[b-ruffuwzfbz] {
    color: #0a7a2f;
}
.error-message[b-ruffuwzfbz] {
    color: #c62828;
}

/* button */
.btn.primary[b-ruffuwzfbz] {
    width: min(var(--content-w), 100%);
    height: var(--input-h);
    border-radius: 22px;
    border: 0;
    background: var(--primary);
    color: #fff;
    font-size: 20px;
    font-weight: 800;
    margin-top: 22px;
    cursor: pointer;
}

.btn.primary:hover[b-ruffuwzfbz] {
    filter: brightness(1.05);
}
.btn.primary:active[b-ruffuwzfbz] {
    transform: translateY(1px);
}
.btn.primary[disabled][b-ruffuwzfbz] {
    opacity: .7;
    cursor: not-allowed;
}

/* ── Responsive ladder ──────────────────────────────────────────────────
   ChangePassword reuses the .reset-shell selectors (the form's structure
   is identical to ResetPassword). SideImagePanel hide + 100dvh fallback
   are global (wwwroot/css/app.css). */

@media (max-width: 960px) {
    .reset-shell[b-ruffuwzfbz] {
        grid-template-columns: 1fr;
    }
    .reset-right[b-ruffuwzfbz] {
        padding: 28px 22px;
    }
}

@media (max-width: 600px) {
    .reset-right[b-ruffuwzfbz] {
        padding: 24px 16px;
    }
}

@media (max-width: 480px) {
    .reset-right[b-ruffuwzfbz] {
        padding: 20px 14px;
        gap: 12px;
    }
    .input[b-ruffuwzfbz],
    .form-control[b-ruffuwzfbz] {
        font-size: 16px;
    }
    .btn.primary[b-ruffuwzfbz] {
        width: 100%;
    }
    .pw-checks[b-ruffuwzfbz] {
        grid-template-columns: 1fr;
    }
    /* The "← Back to Home" link can crowd the heading on tiny phones —
       drop it onto its own line with a touch-friendly hit area. */
    .back-link[b-ruffuwzfbz] {
        margin-bottom: 10px;
        padding: 8px 4px;
        min-height: 36px;
    }
}
/* === Password strength meter === */
.pw-meter-wrap[b-ruffuwzfbz] {
    width: min(var(--content-w), 100%);
    margin-top: 8px;
}

.pw-meter[b-ruffuwzfbz] {
    --pct: 0;
    height: 8px;
    width: 100%;
    border-radius: 9999px;
    background: #2b3e57;
    overflow: hidden;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
}

    .pw-meter .bar[b-ruffuwzfbz] {
        height: 100%;
        width: calc(var(--pct) * 1%);
        background: linear-gradient(90deg, #c62828 0%, #f9a825 50%, #2e7d32 100%);
        transition: width .25s ease;
    }

.pw-label[b-ruffuwzfbz] {
    margin-top: 6px;
    font-size: 12px;
    color: #222;
    font-weight: 700;
    letter-spacing: .2px;
}

.pw-checks[b-ruffuwzfbz] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px 14px;
    margin-top: 8px;
    font-size: 12px;
    color: #333;
}

    .pw-checks .ok[b-ruffuwzfbz] {
        color: #2e7d32;
        font-weight: 700;
    }

    .pw-checks .bad[b-ruffuwzfbz] {
        color: #c62828;
        font-weight: 600;
    }

    .pw-checks .dot[b-ruffuwzfbz] {
        display: inline-block;
        width: 8px;
        height: 8px;
        border-radius: 50%;
        margin-right: 6px;
        background: currentColor;
        vertical-align: middle;
    }

/* Heads-up banner shown above the form. Tells the user the post-change MFA
   wizard is coming so the redirect doesn't feel abrupt. */
.mfa-notice[b-ruffuwzfbz] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    margin: 12px 0 18px;
    background: #eef4ff;
    border: 1px solid #c7d8f5;
    border-radius: 10px;
    color: #1e3a6b;
    font-size: 13.5px;
    line-height: 1.45;
}

.mfa-notice i[b-ruffuwzfbz] {
    color: #2553a3;
    font-size: 16px;
    margin-top: 1px;
    flex: 0 0 auto;
}

/* Persistent server-error banner shown when the API rejects a submit
   (e.g. PASSWORD_REUSED, PASSWORD_TOO_SIMILAR_TO_PREVIOUS, expired
   session). Sits between the form fields and the submit button so the
   user can't miss it. Subtle red — matches the .invalid border colour
   on the inputs themselves so the visual story is consistent. */
.api-error-banner[b-ruffuwzfbz] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    margin: 14px 0 10px;
    background: #fff5f5;
    border: 1px solid #f5c4c4;
    border-radius: 10px;
    color: #b3261e;            /* MD3 error-on-error-container */
    font-size: 13.5px;
    line-height: 1.45;
    font-weight: 500;
    /* Subtle slide-in so the banner is noticed when it first renders. */
    animation: errorBannerIn-b-ruffuwzfbz 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.api-error-banner svg[b-ruffuwzfbz] {
    color: #c62828;
    flex: 0 0 auto;
    margin-top: 1px;
}

@keyframes errorBannerIn-b-ruffuwzfbz {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}
/* /Pages/Divisions.razor.rz.scp.css */
/* Divisions admin page styling — themed via /wwwroot/css/themes.css vars.
   Blazor CSS isolation scopes every selector here to Divisions.razor only. */

/* ── Layout shell ────────────────────────────────────────────────────── */

.employee-dashboard-container[b-l7fo983w5b] {
    display: flex;
    min-height: 100vh;
    background-color: var(--bg-primary);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.sidebar[b-l7fo983w5b] {
    width: 280px;
    background-color: var(--bg-sidebar);
    color: var(--text-sidebar);
    position: fixed;
    height: 100vh;
    left: 0;
    top: 0;
    z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary);
}

.main-content[b-l7fo983w5b] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary);
    min-height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
}

.section-title[b-l7fo983w5b] {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 24px 0;
}

.employee-details-section[b-l7fo983w5b] {
    padding: 30px 40px;
    background-color: var(--bg-primary);
}

.section-header[b-l7fo983w5b] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
}

.action-bar[b-l7fo983w5b] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.muted[b-l7fo983w5b] {
    color: var(--text-secondary);
    font-size: 14px;
    margin: 0 0 24px 0;
    line-height: 1.5;
}

/* ── Main table ──────────────────────────────────────────────────────── */

.table-container[b-l7fo983w5b] {
    background-color: var(--card-bg);
    border-radius: 12px;
    /* overflow-x clips horizontal scroll on narrow viewports; overflow-y must
       stay 'visible' so the .org-tree popover can render outside the row
       without being chopped at the table edge. */
    overflow-x: auto;
    overflow-y: visible;
    border: 1px solid var(--card-border);
    box-shadow: var(--card-shadow);
    margin-bottom: 24px;
}

.employee-table[b-l7fo983w5b] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

.employee-table thead[b-l7fo983w5b] {
    background-color: var(--accent-dark);
}

.employee-table th[b-l7fo983w5b] {
    padding: 14px 16px;
    text-align: left;
    font-weight: 600;
    font-size: 13px;
    color: #ffffff;
    border-bottom: 2px solid var(--accent-dark);
}

.employee-table tbody tr[b-l7fo983w5b] {
    border-bottom: 1px solid var(--border-primary);
    transition: background-color 0.2s ease;
}

.employee-table tbody tr:hover[b-l7fo983w5b] {
    background-color: var(--bg-secondary);
}

.employee-table td[b-l7fo983w5b] {
    padding: 14px 16px;
    font-size: 14px;
    color: var(--text-primary);
    vertical-align: top;
}

/* Two-line "head" cell. */
.head-name[b-l7fo983w5b]  { font-weight: 600; color: var(--text-primary); }
.head-meta[b-l7fo983w5b]  { color: var(--text-secondary); font-size: 13px; margin-top: 2px; }
.head-empty[b-l7fo983w5b] { color: var(--text-muted); font-style: italic; }

.actions-col[b-l7fo983w5b] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}

/* ── Icon action buttons (Edit / Update head / Delete head) ────────────
   Replaces the text-label buttons with compact 32×32 icon affordances.
   Tooltip is provided by the native `title` attribute (consistent with
   the existing `title="Bulk-reassign HOD"` pattern elsewhere on the page).
   Each variant gets its own brand-aligned hover colour so the meaning is
   reinforced visually:
     • edit   → neutral slate (no destructive intent)
     • update → brand navy (stable / configuration action)
     • delete → red (destructive — same as the old btn-danger-outline)
*/
.icon-btn[b-l7fo983w5b] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    padding: 0;
    background: var(--card-bg);
    border: 1px solid var(--border-primary);
    border-radius: 8px;
    color: var(--text-secondary);
    cursor: pointer;
    transition:
        background 0.15s ease,
        border-color 0.15s ease,
        color 0.15s ease,
        transform 0.12s ease,
        box-shadow 0.15s ease;
}

.icon-btn:hover:not(:disabled)[b-l7fo983w5b] {
    transform: translateY(-1px);
    box-shadow: 0 2px 6px rgba(15, 23, 42, 0.08);
}

.icon-btn:active:not(:disabled)[b-l7fo983w5b] {
    transform: translateY(0);
}

.icon-btn:disabled[b-l7fo983w5b] {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Edit — neutral. */
.icon-btn-edit:hover:not(:disabled)[b-l7fo983w5b] {
    color: #1e293b;
    border-color: #94a3b8;
    background: #f8fafc;
}

/* Update division head — brand navy (stable/info accent). */
.icon-btn-update:hover:not(:disabled)[b-l7fo983w5b] {
    color: #ffffff;
    background: var(--accent-primary, #001F57);
    border-color: var(--accent-primary, #001F57);
}

/* Delete head — destructive. */
.icon-btn-delete:hover:not(:disabled)[b-l7fo983w5b] {
    color: #ffffff;
    background: var(--error, #dc2626);
    border-color: var(--error, #dc2626);
}

/* Department-count chip + Manage link in the count column. */
.badge-count[b-l7fo983w5b] {
    display: inline-block;
    min-width: 28px;
    text-align: center;
    padding: 2px 10px;
    border-radius: 999px;
    background-color: var(--bg-tertiary);
    color: var(--text-primary);
    font-weight: 600;
    font-size: 13px;
    margin-right: 6px;
}

.btn-link[b-l7fo983w5b] {
    background: none;
    border: none;
    color: var(--accent-primary);
    font-weight: 600;
    cursor: pointer;
    padding: 0;
    font-size: 13px;
}

.btn-link:hover[b-l7fo983w5b] { color: var(--accent-hover); text-decoration: underline; }

/* Status pill — shared across divisions and departments. */
.status-badge[b-l7fo983w5b] {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.4;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.status-active[b-l7fo983w5b]   { background-color: #dcfce7; color: #166534; }
.status-inactive[b-l7fo983w5b] { background-color: #fee2e2; color: #991b1b; }

/* Inactive row dimming — applied to both top-level and dept tables. */
.row-inactive[b-l7fo983w5b] { background-color: var(--bg-secondary); }
.row-inactive td[b-l7fo983w5b] { color: var(--text-muted); }

/* ════════════════════════════════════════════════════════════════════════
   Org-chart visualisation
   ────────────────────────────────────────────────────────────────────────
   Two surfaces, designed as one system:

   1. .org-card  — the hover popover. Material-3-inspired surface with
                   tonal elevation, an avatar with deterministic gradient,
                   stat pills, and a stagger-animated department list.
                   "View full org chart" CTA promotes to:

   2. .zoom-card — the click-zoom full visualisation. Backdrop-blurred
                   overlay, centered tree (Division → Head → Departments)
                   with pure-CSS connectors and stagger-animated nodes.

   Easing curve cubic-bezier(0.16, 1, 0.3, 1) is Material 3's "emphasized
   decelerate" — it produces the slow-then-snap feeling that makes Google's
   surfaces feel alive without bouncing.
   ════════════════════════════════════════════════════════════════════════ */

/* ── Cell trigger ──────────────────────────────────────────────────── */

.division-cell[b-l7fo983w5b] {
    position: relative;
    cursor: default;
}

.division-cell-inner[b-l7fo983w5b] {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.division-cell-name[b-l7fo983w5b] { font-weight: 700; }

.division-cell-hint[b-l7fo983w5b] {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.7px;
    color: var(--text-muted);
    background: var(--bg-tertiary);
    padding: 3px 8px;
    border-radius: 999px;
    opacity: 0;
    transform: translateY(2px);
    transition: opacity 0.18s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}

.division-cell:hover .division-cell-hint[b-l7fo983w5b] {
    opacity: 1;
    transform: translateY(0);
    color: var(--accent-dark);
    background: rgba(0, 31, 87, 0.08);
}

/* ── .org-card hover popover ──────────────────────────────────────── */

.org-card[b-l7fo983w5b] {
    /* Hidden until parent :hover. We use opacity + visibility (not display)
       so the entrance animation has frames to interpolate over. */
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateY(-4px) scale(0.98);
    transform-origin: top left;
    transition: opacity 0.20s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.20s cubic-bezier(0.16, 1, 0.3, 1),
                visibility 0.20s;

    position: absolute;
    top: calc(100% - 2px);     /* slight overlap kills the cursor-gap glitch */
    left: 0;
    z-index: 50;
    width: 360px;
    padding: 18px 18px 16px;

    /* Material-3 surface: layered shadow + subtle tinted border. */
    background: linear-gradient(180deg, var(--card-bg) 0%, var(--card-bg) 100%);
    border: 1px solid var(--card-border);
    border-radius: 16px;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.06),
        0 8px 24px rgba(15, 23, 42, 0.10),
        0 24px 56px rgba(15, 23, 42, 0.12);

    color: var(--text-primary);
    font-size: 13px;
    line-height: 1.45;
}

/* Soft conic-gradient glow behind the card — the tiny touch that makes
   it feel premium without being loud. Sits behind everything. */
.org-card-glow[b-l7fo983w5b] {
    position: absolute;
    inset: -1px;
    border-radius: 16px;
    pointer-events: none;
    background: radial-gradient(130% 90% at 0% 0%, rgba(0, 31, 87, 0.06) 0%, transparent 58%);
    z-index: 0;
}

.org-card > *[b-l7fo983w5b] { position: relative; z-index: 1; }

/* Tail pointer back at the trigger cell. */
.org-card[b-l7fo983w5b]::before {
    content: "";
    position: absolute;
    top: -6px;
    left: 24px;
    width: 12px;
    height: 12px;
    background: var(--card-bg);
    border-top: 1px solid var(--card-border);
    border-left: 1px solid var(--card-border);
    transform: rotate(45deg);
    z-index: 0;
}

.division-cell:hover .org-card[b-l7fo983w5b] {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0) scale(1);
}

/* Header — eyebrow label + division name, status pill on the right. */
.org-card-header[b-l7fo983w5b] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--border-primary);
    margin-bottom: 14px;
}

.org-card-eyebrow[b-l7fo983w5b] {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: var(--text-secondary);
    margin-bottom: 4px;
}

.org-card-title[b-l7fo983w5b] {
    font-size: 17px;
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1.25;
}

.org-card-status[b-l7fo983w5b] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    padding: 4px 10px;
    border-radius: 999px;
    flex-shrink: 0;
}

.org-card-status.is-active[b-l7fo983w5b]   { color: #166534; background-color: rgba(34, 197, 94, 0.14); }
.org-card-status.is-inactive[b-l7fo983w5b] { color: #991b1b; background-color: rgba(239, 68, 68, 0.14); }

.org-card-status-dot[b-l7fo983w5b] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
    box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.45);
}

.org-card-status.is-active .org-card-status-dot[b-l7fo983w5b] {
    animation: orgPulse-b-l7fo983w5b 2.4s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes orgPulse-b-l7fo983w5b {
    0%, 100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.55); }
    50%      { box-shadow: 0 0 0 6px rgba(34, 197, 94, 0); }
}

/* Stat pills row */
.org-card-stats[b-l7fo983w5b] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    margin-bottom: 16px;
}

.org-stat[b-l7fo983w5b] {
    text-align: center;
    padding: 10px 4px 8px;
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    border-radius: 10px;
    transition: transform 0.18s cubic-bezier(0.16, 1, 0.3, 1),
                background 0.18s ease;
}

.org-stat:hover[b-l7fo983w5b] {
    transform: translateY(-1px);
    background: var(--bg-tertiary);
}

.org-stat-num[b-l7fo983w5b] {
    font-size: 18px;
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1;
    font-variant-numeric: tabular-nums;
}

.org-stat-label[b-l7fo983w5b] {
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    color: var(--text-secondary);
    margin-top: 4px;
}

/* Section blocks (Head, Departments). */
.org-card-section[b-l7fo983w5b] { margin-bottom: 14px; }
.org-card-section:last-of-type[b-l7fo983w5b] { margin-bottom: 12px; }

.org-card-section-label[b-l7fo983w5b] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--text-secondary);
    margin-bottom: 8px;
}

.org-section-count[b-l7fo983w5b] {
    font-size: 11px;
    font-weight: 700;
    color: var(--accent-dark);
    background: rgba(0, 31, 87, 0.08);
    padding: 1px 8px;
    border-radius: 999px;
    letter-spacing: 0.3px;
}

/* Person row — avatar + info. Reused in zoom modal too. */
.org-person[b-l7fo983w5b] {
    display: flex;
    gap: 12px;
    align-items: center;
    padding: 10px;
    background: var(--bg-secondary);
    border-radius: 12px;
    border: 1px solid var(--border-primary);
}

.org-person-vacant[b-l7fo983w5b] {
    background: transparent;
    border-style: dashed;
}

.org-person-info[b-l7fo983w5b] { flex: 1; min-width: 0; }
.org-person-name[b-l7fo983w5b] { font-weight: 600; color: var(--text-primary); margin-bottom: 2px; }
.org-person-meta[b-l7fo983w5b] { font-size: 12px; color: var(--text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Avatar — circular gradient surface with 2-letter monogram. data-tone
   indexes one of six palette pairs so the same person always reads with
   the same swatch. */
.org-avatar[b-l7fo983w5b] {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    position: relative;   /* lets a profile photo overlay the initials */
    overflow: hidden;     /* clips the photo to the circle */
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: #ffffff;
    font-weight: 700;
    font-size: 14px;
    letter-spacing: 0.3px;
    user-select: none;
    box-shadow:
        0 0 0 2px var(--card-bg),
        0 2px 6px rgba(15, 23, 42, 0.18);
    background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
}

.org-avatar[data-tone="0"][b-l7fo983w5b] { background: linear-gradient(135deg, #3b82f6 0%, #6366f1 100%); }
.org-avatar[data-tone="1"][b-l7fo983w5b] { background: linear-gradient(135deg, #8b5cf6 0%, #ec4899 100%); }
.org-avatar[data-tone="2"][b-l7fo983w5b] { background: linear-gradient(135deg, #14b8a6 0%, #06b6d4 100%); }
.org-avatar[data-tone="3"][b-l7fo983w5b] { background: linear-gradient(135deg, #f59e0b 0%, #ef4444 100%); }
.org-avatar[data-tone="4"][b-l7fo983w5b] { background: linear-gradient(135deg, #10b981 0%, #84cc16 100%); }
.org-avatar[data-tone="5"][b-l7fo983w5b] { background: linear-gradient(135deg, #6366f1 0%, #0ea5e9 100%); }

.org-avatar-vacant[b-l7fo983w5b] {
    background: linear-gradient(135deg, #cbd5e1 0%, #94a3b8 100%);
    color: #475569;
}

/* Department list — staggered fade-in driven by --i style var. */
.org-dept-list[b-l7fo983w5b] {
    list-style: none;
    margin: 0;
    padding: 0;
    border-top: 1px dashed var(--border-primary);
}

.org-dept-item[b-l7fo983w5b] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 4px;
    border-bottom: 1px dashed var(--border-primary);
    /* Stagger keyed off custom property --i (set inline per row). */
    opacity: 0;
    transform: translateX(-4px);
    animation: orgDeptIn-b-l7fo983w5b 0.32s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: calc(120ms + (var(--i, 0) * 40ms));
}

/* Re-trigger animation each time the popover opens by tying it to :hover. */
.division-cell:hover .org-dept-item[b-l7fo983w5b] { animation-play-state: running; }

@keyframes orgDeptIn-b-l7fo983w5b {
    to { opacity: 1; transform: translateX(0); }
}

.org-dept-dot[b-l7fo983w5b] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--accent-primary);
    flex-shrink: 0;
}

.org-dept-name[b-l7fo983w5b] { font-size: 13px; color: var(--text-primary); }

.org-empty[b-l7fo983w5b] {
    color: var(--text-muted);
    font-style: italic;
    padding: 8px 4px;
}

.org-more[b-l7fo983w5b] {
    margin-top: 8px;
    text-align: center;
    font-size: 11px;
    color: var(--text-secondary);
    font-style: italic;
}

/* ── Subordinate-divisions list ──────────────────────────────────────
   Shown inside the apex (CEO Office) card to surface the division
   heads who report up. Each row mirrors a mini "person card": small
   avatar (gradient-toned per user) + division name on top + head name
   beneath. Stagger animation matches the departments list above. */
.org-sub-list[b-l7fo983w5b] {
    list-style: none;
    margin: 6px 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.org-sub-item[b-l7fo983w5b] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    border-radius: 10px;
    opacity: 0;
    transform: translateX(-4px);
    /* Same easing the dept list uses, with a small base delay so the
       sections paint sequentially when the org-card opens. */
    animation: orgSubIn-b-l7fo983w5b 0.30s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: calc(120ms + (var(--i, 0) * 28ms));
    transition: background 0.15s ease, border-color 0.15s ease;
}

.org-sub-item:hover[b-l7fo983w5b] {
    background: var(--card-bg);
    border-color: rgba(0, 31, 87, 0.25);
}

.org-sub-avatar[b-l7fo983w5b] {
    /* Borrow the standard org-avatar look but slightly smaller. */
    width: 32px;
    height: 32px;
    font-size: 11px;
    flex-shrink: 0;
}

.org-sub-info[b-l7fo983w5b] { flex: 1; min-width: 0; }

.org-sub-name[b-l7fo983w5b] {
    font-weight: 600;
    color: var(--text-primary);
    font-size: 13px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.org-sub-meta[b-l7fo983w5b] {
    color: var(--text-secondary);
    font-size: 11.5px;
    margin-top: 1px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.org-sub-meta-vacant[b-l7fo983w5b] {
    color: var(--text-muted);
    font-style: italic;
}

@keyframes orgSubIn-b-l7fo983w5b {
    to { opacity: 1; transform: translateX(0); }
}

/* Zoom CTA — primary affordance to open the full chart. */
.org-zoom-cta[b-l7fo983w5b] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    margin-top: 6px;
    padding: 10px 14px;
    background: linear-gradient(135deg, var(--accent-dark) 0%, var(--accent-primary) 100%);
    color: #ffffff;
    border: none;
    border-radius: 10px;
    font-weight: 600;
    font-size: 13px;
    letter-spacing: 0.2px;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(0, 31, 87, 0.28);
    transition: transform 0.15s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.15s ease;
}

.org-zoom-cta:hover[b-l7fo983w5b] {
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(0, 31, 87, 0.40);
}

.org-zoom-cta:active[b-l7fo983w5b] { transform: translateY(0); }

/* ════════════════════════════════════════════════════════════════════════
   Zoom modal — full org chart visualisation
   ════════════════════════════════════════════════════════════════════════ */

.zoom-overlay[b-l7fo983w5b] {
    position: fixed;
    inset: 0;
    z-index: 2500;     /* above edit-panel-overlay (2000) */
    background: rgba(15, 23, 42, 0.55);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 32px;
    animation: zoomFade-b-l7fo983w5b 0.18s ease;
}

@keyframes zoomFade-b-l7fo983w5b { from { opacity: 0; } to { opacity: 1; } }

.zoom-card[b-l7fo983w5b] {
    position: relative;
    width: min(1080px, 95vw);
    max-height: 92vh;
    overflow-y: auto;
    background: var(--card-bg);
    border-radius: 24px;
    border: 1px solid var(--card-border);
    box-shadow:
        0 4px 12px rgba(15, 23, 42, 0.12),
        0 24px 64px rgba(15, 23, 42, 0.28);
    animation: zoomIn-b-l7fo983w5b 0.32s cubic-bezier(0.16, 1, 0.3, 1);
    padding: 32px;
}

@keyframes zoomIn-b-l7fo983w5b {
    from { opacity: 0; transform: scale(0.94) translateY(8px); }
    to   { opacity: 1; transform: scale(1) translateY(0); }
}

.zoom-card-header[b-l7fo983w5b] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    padding-bottom: 24px;
    border-bottom: 1px solid var(--border-primary);
    margin-bottom: 32px;
}

.zoom-eyebrow[b-l7fo983w5b] {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 1.4px;
    text-transform: uppercase;
    color: var(--accent-primary);
    margin-bottom: 6px;
}

.zoom-title[b-l7fo983w5b] {
    font-size: 28px;
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1.15;
}

.zoom-close[b-l7fo983w5b] {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 1px solid var(--border-primary);
    background: var(--bg-secondary);
    color: var(--text-secondary);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s ease, color 0.15s ease, transform 0.15s cubic-bezier(0.16, 1, 0.3, 1);
}

.zoom-close:hover[b-l7fo983w5b] {
    background: var(--bg-tertiary);
    color: var(--text-primary);
    transform: rotate(90deg);
}

/* The tree itself — vertical flow with pure-CSS connectors. Each .zoom-node
   stamps in with a stagger driven by --i and the keyframe below. */

.zoom-tree[b-l7fo983w5b] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 24px;
}

@keyframes zoomNodeIn-b-l7fo983w5b {
    to { opacity: 1; transform: translateY(0) scale(1); }
}

/* Department fan-out — connector forks to a grid of cards. */
.zoom-fanout[b-l7fo983w5b] {
    width: 100%;
    position: relative;
    padding-top: 30px;
    opacity: 0;
    animation: zoomNodeIn-b-l7fo983w5b 0.36s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: calc(var(--i, 0) * 70ms);
}

/* Spine stub dropping from the Head node into the departments section, so the
   fan-out reads as a continuation of the tree rather than a detached block. */
.zoom-fanout[b-l7fo983w5b]::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 2px;
    height: 22px;
    background: linear-gradient(180deg, var(--accent-primary) 0%, var(--border-primary) 100%);
    border-radius: 2px;
}

.zoom-dept-grid[b-l7fo983w5b] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 14px;
}

.zoom-dept-card[b-l7fo983w5b] {
    position: relative;
    background: var(--card-bg);
    border: 1px solid var(--card-border);
    border-radius: 14px;
    padding: 18px;
    overflow: hidden;
    transition: transform 0.18s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.18s ease,
                border-color 0.18s ease;

    opacity: 0;
    transform: translateY(8px);
    animation: zoomNodeIn-b-l7fo983w5b 0.32s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: calc(var(--i, 0) * 50ms);
}

/* Brand-navy top accent — wipes in on hover for a crisp, enterprise tell. */
.zoom-dept-card[b-l7fo983w5b]::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg, var(--accent-dark), var(--accent-primary));
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.24s cubic-bezier(0.16, 1, 0.3, 1);
}

.zoom-dept-card:hover[b-l7fo983w5b] {
    transform: translateY(-3px);
    border-color: var(--accent-primary);
    box-shadow: 0 10px 28px rgba(0, 31, 87, 0.12);
}

.zoom-dept-card:hover[b-l7fo983w5b]::before { transform: scaleX(1); }

.zoom-dept-card.is-inactive[b-l7fo983w5b] {
    opacity: 0.6;
    background: var(--bg-secondary);
}

.zoom-dept-status[b-l7fo983w5b] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.6px;
    text-transform: uppercase;
    color: var(--text-secondary);
    margin-bottom: 10px;
}

.zoom-dept-dot[b-l7fo983w5b] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #22c55e;
    box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.20);
}

.zoom-dept-card.is-inactive .zoom-dept-dot[b-l7fo983w5b] {
    background: var(--text-muted);
    box-shadow: 0 0 0 3px rgba(148, 163, 184, 0.20);
}

.zoom-dept-name[b-l7fo983w5b] {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
    line-height: 1.3;
    margin-bottom: 4px;
}

/* ════════════════════════════════════════════════════════════════════════
   Microsoft-style hierarchy view — apex person + bus connector + report cards.
   Compact + brand-navy. ohc- = OnePortal hierarchy chart (prefixed so it never
   clashes with the .zoom-* surfaces). Reuses the zoomNodeIn keyframe.
   ════════════════════════════════════════════════════════════════════════ */

/* Shared avatar — a photo overlays the initials/smiley; a missing or broken
   photo (onerror hides the <img>) falls back to the gradient + initials. */
.ohc-ava[b-l7fo983w5b] {
    position: relative;
    overflow: hidden;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    color: #ffffff;
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.2px;
    user-select: none;
    background: linear-gradient(135deg, #3b82f6 0%, #6366f1 100%);
}
.ohc-ava[data-tone="0"][b-l7fo983w5b] { background: linear-gradient(135deg, #3b82f6 0%, #6366f1 100%); }
.ohc-ava[data-tone="1"][b-l7fo983w5b] { background: linear-gradient(135deg, #10b981 0%, #059669 100%); }
.ohc-ava[data-tone="2"][b-l7fo983w5b] { background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); }
.ohc-ava[data-tone="3"][b-l7fo983w5b] { background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%); }
.ohc-ava[data-tone="4"][b-l7fo983w5b] { background: linear-gradient(135deg, #ec4899 0%, #db2777 100%); }
.ohc-ava[data-tone="5"][b-l7fo983w5b] { background: linear-gradient(135deg, #0ea5e9 0%, #0284c7 100%); }
.ohc-apex.is-vacant .ohc-ava-apex[b-l7fo983w5b],
.ohc-card .ohc-ava[data-tone="0"]:has(.ohc-smiley)[b-l7fo983w5b] { background: linear-gradient(135deg, #e2e8f0, #cbd5e1); }

/* Profile-photo overlay — fills the circle; object-fit keeps it un-stretched. */
.ohc-ava-img[b-l7fo983w5b] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}
.ohc-smiley[b-l7fo983w5b] { width: 58%; height: 58%; color: rgba(255, 255, 255, 0.9); }
.ohc-apex.is-vacant .ohc-smiley[b-l7fo983w5b],
.ohc-card .ohc-ava .ohc-smiley[b-l7fo983w5b] { color: #64748b; }

/* Apex person node (the head / CEO sits atop), brand navy. */
.ohc-apex[b-l7fo983w5b] {
    width: fit-content;
    max-width: 100%;
    margin: 0 auto;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 13px 20px 13px 14px;
    border-radius: 16px;
    background: linear-gradient(135deg, #002a78 0%, #001f57 55%, #00153d 100%);
    color: #ffffff;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 10px 26px rgba(0, 31, 87, 0.28);
    opacity: 0;
    transform: translateY(6px);
    animation: zoomNodeIn-b-l7fo983w5b 0.34s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.ohc-ava-apex[b-l7fo983w5b] { width: 50px; height: 50px; font-size: 17px; box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.16); }
.ohc-apex-info[b-l7fo983w5b] { min-width: 0; }
.ohc-apex-name[b-l7fo983w5b] { font-size: 16px; font-weight: 700; letter-spacing: -0.2px; line-height: 1.2; }
.ohc-apex-role[b-l7fo983w5b] { font-size: 12px; color: rgba(255, 255, 255, 0.78); margin-top: 2px; }
.ohc-apex-contact[b-l7fo983w5b] { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 7px; }
.ohc-chip[b-l7fo983w5b] {
    font-size: 11px;
    color: rgba(255, 255, 255, 0.92);
    background: rgba(255, 255, 255, 0.10);
    border: 1px solid rgba(255, 255, 255, 0.14);
    padding: 2px 9px;
    border-radius: 999px;
    white-space: nowrap;
}

/* Bus connector — trunk + horizontal rail with a centre junction node. */
.ohc-trunk[b-l7fo983w5b] { width: 2px; height: 26px; margin: 0 auto; background: linear-gradient(180deg, var(--accent-dark), var(--accent-primary)); border-radius: 2px; }
.ohc-rail-wrap[b-l7fo983w5b] { position: relative; width: 86%; height: 2px; margin: 0 auto; }
.ohc-rail[b-l7fo983w5b] { width: 100%; height: 2px; background: var(--border-primary); border-radius: 2px; }
.ohc-rail-wrap[b-l7fo983w5b]::before {
    content: "";
    position: absolute;
    top: -3px; left: 50%;
    transform: translateX(-50%);
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--card-bg);
    box-shadow: 0 0 0 2px var(--accent-primary);
}

/* Section label pill (reused by "direct reports" and "Departments"). */
.ohc-label[b-l7fo983w5b] {
    width: fit-content;
    margin: 22px auto 18px;
    padding: 6px 16px;
    border-radius: 999px;
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: var(--accent-dark);
}

/* Direct-report cards. */
.ohc-grid[b-l7fo983w5b] { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; width: 100%; }
.ohc-card[b-l7fo983w5b] {
    position: relative;
    display: flex;
    align-items: center;
    gap: 11px;
    text-align: left;
    width: 100%;
    background: var(--card-bg);
    border: 1px solid var(--card-border);
    border-radius: 13px;
    padding: 11px 14px 11px 26px;
    cursor: pointer;
    overflow: hidden;
    font-family: inherit;
    transition: transform 0.18s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.18s ease, border-color 0.18s ease;
    opacity: 0;
    transform: translateY(8px);
    animation: zoomNodeIn-b-l7fo983w5b 0.30s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: calc(var(--i, 0) * 45ms);
}
.ohc-card[b-l7fo983w5b]::before {
    content: "";
    position: absolute;
    top: 0; left: 0; bottom: 0;
    width: 3px;
    background: linear-gradient(180deg, var(--accent-dark), var(--accent-primary));
    transform: scaleY(0);
    transform-origin: top;
    transition: transform 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}
.ohc-card:hover[b-l7fo983w5b] { transform: translateY(-2px); border-color: var(--accent-primary); box-shadow: 0 9px 24px rgba(0, 31, 87, 0.12); }
.ohc-card:hover[b-l7fo983w5b]::before { transform: scaleY(1); }
.ohc-card-exp[b-l7fo983w5b] {
    position: absolute;
    left: 7px; top: 50%;
    transform: translateY(-50%);
    width: 15px; height: 15px;
    border-radius: 50%;
    border: 1.5px solid var(--border-primary);
    color: var(--accent-primary);
    display: flex; align-items: center; justify-content: center;
    font-size: 10px; line-height: 1;
    background: var(--card-bg);
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.ohc-card:hover .ohc-card-exp[b-l7fo983w5b] { background: var(--accent-primary); border-color: var(--accent-primary); color: #ffffff; }
.ohc-card-info[b-l7fo983w5b] { min-width: 0; display: flex; flex-direction: column; }
.ohc-name[b-l7fo983w5b]  { font-size: 13px; font-weight: 700; color: var(--text-primary); line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ohc-title[b-l7fo983w5b] { font-size: 11px; font-weight: 600; color: var(--accent-primary); margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ohc-meta[b-l7fo983w5b]  { font-size: 10.5px; color: var(--text-muted); margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

@media (max-width: 768px) {
    .ohc-grid[b-l7fo983w5b] { grid-template-columns: 1fr; }
}

/* ── Department card: HOD line (eager-loaded) ───────────────────────────── */
.ohc-ava-sm[b-l7fo983w5b] { width: 30px; height: 30px; font-size: 11px; }
.ohc-dc-hod[b-l7fo983w5b] { display: flex; align-items: center; gap: 9px; margin-top: 11px; }
.ohc-dc-hod-info[b-l7fo983w5b] { min-width: 0; display: flex; flex-direction: column; }
.ohc-dc-hod-name[b-l7fo983w5b] { font-size: 12.5px; font-weight: 700; color: var(--text-primary); line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ohc-dc-hod-title[b-l7fo983w5b] { font-size: 10px; font-weight: 600; color: var(--accent-primary); text-transform: uppercase; letter-spacing: 0.4px; margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ohc-dc-hodmuted[b-l7fo983w5b] { margin-top: 11px; font-size: 11.5px; color: var(--text-muted); font-style: italic; }

/* ── Department team — ONE centered, landscape panel (replaces the per-card
   anchored popover). Fixed + viewport-centered; wide grid of people for a
   clean glance. No HOD section (the head shows on the card). ────────────── */
.ohc-team-pop[b-l7fo983w5b] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(880px, calc(100vw - 48px));
    max-height: 82vh;
    overflow-y: auto;
    z-index: 3000;
    background: var(--card-bg);
    border: 1px solid var(--card-border);
    border-radius: 18px;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.18), 0 30px 80px rgba(15, 23, 42, 0.34);
    padding: 22px 24px;
    animation: ohcTeamPopIn-b-l7fo983w5b 0.20s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes ohcTeamPopIn-b-l7fo983w5b {
    from { opacity: 0; transform: translate(-50%, -50%) scale(0.97); }
    to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
.ohc-team-head[b-l7fo983w5b] { padding-bottom: 14px; border-bottom: 1px solid var(--border-primary); margin-bottom: 16px; }
.ohc-team-eyebrow[b-l7fo983w5b] { font-size: 10px; font-weight: 700; letter-spacing: 1.2px; text-transform: uppercase; color: var(--accent-primary); }
.ohc-team-title[b-l7fo983w5b] { font-size: 19px; font-weight: 700; color: var(--text-primary); margin-top: 3px; line-height: 1.2; }
.ohc-team-count[b-l7fo983w5b] { font-size: 12px; color: var(--text-muted); margin-top: 3px; }
.ohc-team-grid[b-l7fo983w5b] { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px; align-items: start; }
.ohc-team-member[b-l7fo983w5b] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 9px 11px;
    border: 1px solid var(--border-primary);
    border-radius: 10px;
    background: var(--card-bg);
    transition: background 0.12s ease, border-color 0.12s ease;
}
.ohc-team-member:hover[b-l7fo983w5b] { background: var(--bg-secondary); border-color: var(--accent-primary); }
.ohc-team-member-info[b-l7fo983w5b] { min-width: 0; display: flex; flex-direction: column; }
.ohc-team-member-name[b-l7fo983w5b] { font-size: 13px; font-weight: 600; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ohc-team-member-title[b-l7fo983w5b] { font-size: 11px; color: var(--text-secondary); margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ohc-team-tag[b-l7fo983w5b] { display: inline-block; margin-left: 6px; font-size: 9px; font-weight: 800; letter-spacing: 0.5px; color: var(--accent-dark); background: rgba(0, 31, 87, 0.10); padding: 1px 6px; border-radius: 4px; vertical-align: middle; }

/* Email + phone reveal on member hover (reuses the shared ContactPopover, which
   is collapsed by default; ::deep reaches into the child component to expand it). */
.ohc-team-member:hover[b-l7fo983w5b]  .contact-card {
    max-height: 88px;
    opacity: 1;
    margin-top: 6px;
    padding: 8px 10px;
}

@media (max-width: 768px) {
    .ohc-team-pop[b-l7fo983w5b] { width: calc(100vw - 28px); padding: 18px; }
    .ohc-team-grid[b-l7fo983w5b] { grid-template-columns: 1fr; }
}

/* ════════════════════════════════════════════════════════════════════════
   Department drill-down popover (hover inside zoom modal)
   ────────────────────────────────────────────────────────────────────────
   Anchored below each .zoom-dept-card. On mouseenter the wrapper sets a
   .is-hovered class + lifts the card subtly; the .dept-drill panel slides
   in with the same emphasised-decelerate easing as the rest of the system.
   z-index 60 sits above sibling cards but below the zoom modal close
   button (which lives at zoom-card root above the tree).
   ════════════════════════════════════════════════════════════════════════ */

.zoom-dept-wrapper[b-l7fo983w5b] {
    position: relative;
}

/* Card lifts a bit when its wrapper is hovered, signalling that hover does
   something — pairs with the "Hover for team" hint at the bottom of the card. */
.zoom-dept-wrapper.is-hovered .zoom-dept-card[b-l7fo983w5b] {
    transform: translateY(-3px);
    border-color: var(--accent-primary);
    box-shadow:
        0 1px 3px rgba(15, 23, 42, 0.08),
        0 12px 28px rgba(0, 31, 87, 0.18);
}

.zoom-dept-wrapper.is-hovered .zoom-dept-card[b-l7fo983w5b]::before { transform: scaleX(1); }

.zoom-dept-hint[b-l7fo983w5b] {
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px dashed var(--border-primary);
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.3px;
    color: var(--text-muted);
    transition: color 0.15s ease;
}

.zoom-dept-wrapper.is-hovered .zoom-dept-hint[b-l7fo983w5b] {
    color: var(--accent-primary);
}

/* Empty / fallback */
.dept-drill-empty[b-l7fo983w5b] {
    padding: 12px;
    text-align: center;
    color: var(--text-muted);
    font-style: italic;
    font-size: 12px;
    background: var(--bg-secondary);
    border-radius: 10px;
    border: 1px dashed var(--border-primary);
}

/* Loading spinner — centered, branded ring */
.dept-drill-loading[b-l7fo983w5b] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 32px 16px;
    color: var(--text-secondary);
    font-size: 12px;
}

.dept-drill-spinner[b-l7fo983w5b] {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 3px solid rgba(0, 31, 87, 0.15);
    border-top-color: var(--accent-dark);
    animation: deptSpinnerRotate-b-l7fo983w5b 0.8s linear infinite;
}

@keyframes deptSpinnerRotate-b-l7fo983w5b {
    to { transform: rotate(360deg); }
}

.dept-drill-error[b-l7fo983w5b] {
    padding: 16px;
    text-align: center;
    color: #991b1b;
    background: rgba(239, 68, 68, 0.08);
    border: 1px solid rgba(239, 68, 68, 0.20);
    border-radius: 10px;
    font-size: 12px;
    font-weight: 600;
}

@media (max-width: 768px) {
    .org-card[b-l7fo983w5b] { width: min(320px, calc(100vw - 32px)); }
    .zoom-card[b-l7fo983w5b] { padding: 20px; border-radius: 18px; }
    .zoom-title[b-l7fo983w5b] { font-size: 22px; }
    .zoom-dept-grid[b-l7fo983w5b] { grid-template-columns: 1fr; }
}

/* ── Buttons (shared) ────────────────────────────────────────────────── */
/* Two button families: solid (primary / danger) and outline (secondary).
   All sized to align in narrow action columns. */

.btn[b-l7fo983w5b] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 7px 14px;
    border-radius: 6px;
    font-weight: 600;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.15s ease;
    border: 1px solid transparent;
    line-height: 1.2;
    white-space: nowrap;
}

.btn:disabled[b-l7fo983w5b] { cursor: not-allowed; opacity: 0.55; }

.btn-primary[b-l7fo983w5b]          { background-color: var(--btn-primary-bg); color: var(--btn-primary-text); }
.btn-primary:hover:not(:disabled)[b-l7fo983w5b] { background-color: var(--btn-primary-hover); transform: translateY(-1px); }

.btn-danger[b-l7fo983w5b]           { background-color: var(--error); color: #ffffff; border-color: var(--error); }
.btn-danger:hover:not(:disabled)[b-l7fo983w5b] { filter: brightness(0.92); }

.btn-outline[b-l7fo983w5b]          { background: transparent; color: var(--text-primary); border-color: var(--border-primary); }
.btn-outline:hover:not(:disabled)[b-l7fo983w5b] { background-color: var(--bg-secondary); }

.btn-danger-outline[b-l7fo983w5b]   { background: transparent; color: var(--error); border-color: var(--error); }
.btn-danger-outline:hover:not(:disabled)[b-l7fo983w5b] { background-color: var(--error); color: #ffffff; }

/* ── Modal scaffold (overlay + panel) ────────────────────────────────── */

.edit-panel-overlay[b-l7fo983w5b] {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: rgba(0, 0, 0, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2000;
    animation: fadeIn-b-l7fo983w5b 0.15s ease;
}

@keyframes fadeIn-b-l7fo983w5b { from { opacity: 0; } to { opacity: 1; } }

.edit-panel[b-l7fo983w5b] {
    background-color: var(--card-bg);
    border-radius: 12px;
    border: 1px solid var(--card-border);
    width: min(520px, 92vw);
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25);
    overflow: hidden;
}

.edit-panel-wide[b-l7fo983w5b] { width: min(840px, 95vw); }

.confirm-panel[b-l7fo983w5b] {
    background-color: var(--card-bg);
    border-radius: 12px;
    border: 1px solid var(--card-border);
    width: min(460px, 92vw);
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25);
    overflow: hidden;
}

.edit-panel-header[b-l7fo983w5b] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 18px 22px;
    border-bottom: 1px solid var(--border-primary);
    background-color: var(--bg-primary);
}

.edit-panel-header h3[b-l7fo983w5b] {
    margin: 0;
    font-size: 17px;
    font-weight: 700;
    color: var(--text-primary);
}

.close-btn[b-l7fo983w5b] {
    background: none;
    border: none;
    font-size: 26px;
    color: var(--text-secondary);
    cursor: pointer;
    line-height: 1;
    padding: 0 4px;
}

.close-btn:hover[b-l7fo983w5b] { color: var(--text-primary); }

.edit-panel-body[b-l7fo983w5b] {
    padding: 22px;
    overflow-y: auto;
    flex: 1;
}

.edit-panel-footer[b-l7fo983w5b] {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 22px;
    border-top: 1px solid var(--border-primary);
    background-color: var(--bg-primary);
}

/* ── Form controls ───────────────────────────────────────────────────── */

.form-label[b-l7fo983w5b] {
    display: block;
    font-weight: 600;
    font-size: 13px;
    color: var(--text-primary);
    margin-bottom: 14px;
}

.form-input[b-l7fo983w5b] {
    display: block;
    width: 100%;
    margin-top: 6px;
    padding: 9px 12px;
    border: 1px solid var(--input-border);
    border-radius: 6px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    box-sizing: border-box;
    outline: none;
    font-family: inherit;
}

.form-input:focus[b-l7fo983w5b] {
    border-color: var(--input-focus);
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.15);
}

.form-hint[b-l7fo983w5b] {
    display: block;
    margin-top: 4px;
    color: var(--text-secondary);
    font-size: 12px;
    font-weight: 400;
}

.form-checkbox[b-l7fo983w5b] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 500;
    color: var(--text-primary);
    font-size: 14px;
    margin-top: 4px;
}

.form-checkbox input[type="checkbox"][b-l7fo983w5b] { width: 16px; height: 16px; cursor: pointer; }

.required[b-l7fo983w5b] { color: var(--error); }

.alert[b-l7fo983w5b] {
    padding: 10px 14px;
    border-radius: 6px;
    margin-bottom: 14px;
    font-size: 13px;
    line-height: 1.4;
}

.alert-error[b-l7fo983w5b] {
    background-color: #fee2e2;
    color: #991b1b;
    border: 1px solid #fecaca;
}

/* ── Departments side-panel (master-detail) ──────────────────────────── */

.dept-toolbar[b-l7fo983w5b] {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 14px;
}

.dept-table[b-l7fo983w5b] {
    width: 100%;
    border-collapse: collapse;
    background-color: var(--card-bg);
    border: 1px solid var(--card-border);
    border-radius: 8px;
    overflow: hidden;
}

.dept-table thead[b-l7fo983w5b] {
    background-color: var(--bg-secondary);
}

.dept-table th[b-l7fo983w5b] {
    padding: 10px 14px;
    text-align: left;
    font-weight: 600;
    font-size: 12px;
    color: var(--text-primary);
    text-transform: uppercase;
    letter-spacing: 0.4px;
    border-bottom: 1px solid var(--border-primary);
}

.dept-table td[b-l7fo983w5b] {
    padding: 12px 14px;
    font-size: 13px;
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-primary);
    vertical-align: middle;
}

.dept-table tbody tr:last-child td[b-l7fo983w5b] { border-bottom: none; }

/* ── Set HOD modal — current-state summary block ──────────────────────
   Two-row "label : value" panel above the picker so the admin sees current
   HOD + member count before they pick the replacement. */
.hod-summary[b-l7fo983w5b] {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    border-radius: 10px;
    padding: 12px 14px;
    margin-bottom: 18px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.hod-summary-row[b-l7fo983w5b] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    font-size: 13px;
}

.hod-summary-label[b-l7fo983w5b] {
    color: var(--text-secondary);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    font-size: 11px;
}

.hod-summary-value[b-l7fo983w5b] {
    color: var(--text-primary);
    font-weight: 600;
    text-align: right;
}

/* ── Confirm modal extras ───────────────────────────────────────────── */

.confirm-detail[b-l7fo983w5b] {
    color: var(--text-secondary);
    font-size: 13px;
    margin-top: 8px;
    padding: 10px 12px;
    background-color: var(--bg-secondary);
    border-radius: 6px;
    border-left: 3px solid var(--accent-primary);
}

/* ── Empty / loading / error states ──────────────────────────────────── */

.loading-message[b-l7fo983w5b],
.no-data-message[b-l7fo983w5b] {
    padding: 40px;
    text-align: center;
    color: var(--text-muted);
    font-size: 15px;
}

.no-data-message p[b-l7fo983w5b] { margin: 0 0 12px 0; }

/* ── Responsive ──────────────────────────────────────────────────────── */

@media (max-width: 1200px) {
    .sidebar[b-l7fo983w5b] { width: 250px; }
    .main-content[b-l7fo983w5b] { margin-left: 250px; }
}

@media (max-width: 768px) {
    .employee-dashboard-container[b-l7fo983w5b] { flex-direction: column; }
    .sidebar[b-l7fo983w5b] { position: relative; width: 100%; height: auto; }
    .main-content[b-l7fo983w5b] { margin-left: 0; }
    .employee-details-section[b-l7fo983w5b] { padding: 20px; }

    .table-container[b-l7fo983w5b] { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .employee-table[b-l7fo983w5b] { font-size: 12px; min-width: 760px; }

    .actions-col[b-l7fo983w5b] { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 6px; }
    .actions-col .btn[b-l7fo983w5b] { width: 100%; }
    /* Icon buttons stay 34×34 — they're small enough to wrap nicely on
       narrow screens without becoming full-width strips. */
    .actions-col .icon-btn[b-l7fo983w5b] { width: 34px; }

    .edit-panel[b-l7fo983w5b], .edit-panel-wide[b-l7fo983w5b], .confirm-panel[b-l7fo983w5b] { width: 95vw; max-height: 95vh; }
}

/* ── Contact-card hover expansion (cross-component CSS isolation) ─────
   The card lives in ContactPopover.razor; this file owns the parent rows
   that trigger its expansion on hover. ::deep reaches across the Blazor
   scope-attribute boundary into the child component's `.contact-card`.

   The card sits INSIDE the row's `-info` column (added in Divisions.razor
   markup), starts collapsed (max-height 0, opacity 0, padding 0), and
   here we expand it on row hover. Because the card is in the row's own
   flex column, expansion grows the row vertically — no popover, no
   absolute positioning, no overlap with siblings.

   Hosts must allow vertical alignment to follow the growing content:
   `.dept-drill-member` and `.dept-drill-hod` are flex containers with
   `align-items: center`. We override to `align-items: flex-start` so the
   avatar stays anchored to the top while the info column grows downward
   smoothly during the expansion. */
.org-person[b-l7fo983w5b] {
    align-items: flex-start;
}.org-person:hover[b-l7fo983w5b]  .contact-card {
    /* Two contact lines × ~18px line-height + 5px gap + 16px padding
       fits comfortably under 80px. */
    max-height: 80px;
    opacity: 1;
    margin-top: 8px;
    padding: 8px 12px;
}
/* /Pages/Email2FA.razor.rz.scp.css */
/* ===== ONE PORTAL – Email 2FA (CSS isolation) ===== */

/* predictable sizing */
*[b-bbfaammrk2], *[b-bbfaammrk2]::before, *[b-bbfaammrk2]::after {
    box-sizing: border-box;
}

/* two‑column layout */
.twofa-shell[b-bbfaammrk2] {
    --primary: #001F57;
    --heading: #292929;
    --sub: #585858;
    --placeholder: #C9D3E0;
    --border: #254a76;
    --input-h: 55px;
    --input-r: 16px;
    --content-w: 520px;
    display: grid;
    grid-template-columns: 55% 45%;
    min-height: 100vh;
    width: 100%;
}

.twofa-left[b-bbfaammrk2] {
    position: relative;
    background: #0b1b33;
}

.twofa-img[b-bbfaammrk2] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.twofa-right[b-bbfaammrk2] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 40px 56px;
    gap: 16px;
}

    .twofa-right h1[b-bbfaammrk2] {
        margin: 0 0 6px;
        color: var(--heading);
        font-weight: 800;
        font-size: clamp(22px,3vw,32px);
    }

    .twofa-right p[b-bbfaammrk2] {
        margin: 0;
        color: var(--sub);
        font-size: 14px;
    }

/* OTP boxes wrapper */
.otp-boxes[b-bbfaammrk2] {
    display: flex;
    gap: 10px;
    margin-top: 12px;
    margin-bottom: 8px;
}

/* Plain white surface — matches every other auth input across the app. */
.otp-input[b-bbfaammrk2] {
    width: 50px;
    height: 50px;
    border: 1px solid #cbd5e1;          /* slate-300 */
    border-radius: 12px;
    background: #ffffff;
    color: #1e293b;                      /* slate-800 */
    font-size: 24px;
    font-weight: 600;
    text-align: center;
    outline: none;
    caret-color: transparent; /* hide caret */
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

    .otp-input:focus[b-bbfaammrk2] {
        border-color: var(--primary);
        box-shadow: 0 0 0 3px rgba(0, 31, 87, 0.12);
    }

/* link styling for resend */
.small-text[b-bbfaammrk2] {
    margin-top: 0;
    font-size: 12px;
    color: var(--sub);
}

    .small-text a[b-bbfaammrk2] {
        color: var(--primary);
        text-decoration: underline;
        cursor: pointer;
    }

        .small-text a:hover[b-bbfaammrk2] {
            text-decoration: none;
        }

/* button styling */
.btn.primary[b-bbfaammrk2] {
    width: min(var(--content-w),100%);
    height: var(--input-h);
    border-radius: 22px;
    border: 0;
    background: var(--primary);
    color: #fff;
    font-size: 20px;
    font-weight: 800;
    margin-top: 22px;
    cursor: pointer;
}

    .btn.primary:hover[b-bbfaammrk2] {
        filter: brightness(1.05);
    }

    .btn.primary:active[b-bbfaammrk2] {
        transform: translateY(1px);
    }

    .btn.primary[disabled][b-bbfaammrk2] {
        opacity: .7;
        cursor: not-allowed;
    }

/* timer display */
.timer-display[b-bbfaammrk2] {
    margin: 12px 0;
    text-align: center;
    font-size: 14px;
}

.timer-text[b-bbfaammrk2] {
    color: var(--sub);
}

.timer-countdown[b-bbfaammrk2] {
    color: var(--primary);
    font-weight: 700;
    font-family: 'Courier New', monospace;
    background: #f0f4f8;
    padding: 4px 8px;
    border-radius: 6px;
    margin-left: 4px;
}

.timer-expired[b-bbfaammrk2] {
    margin: 12px 0;
    text-align: center;
}

.expired-text[b-bbfaammrk2] {
    color: #c62828;
    font-weight: 600;
    font-size: 14px;
}

/* disabled OTP inputs */
.otp-input:disabled[b-bbfaammrk2] {
    background: #e0e0e0;
    color: #999;
    border-color: #ccc;
    cursor: not-allowed;
}

/* error message */
.error-message[b-bbfaammrk2] {
    margin-top: 12px;
    font-size: 13px;
    color: #c62828;
    font-weight: 600;
}

/* ── Responsive ladder ──────────────────────────────────────────────────
   SideImagePanel hide + 100dvh fallback are global. OTP cells shrink
   responsively below 480px so 6 boxes fit on a 320px iPhone SE. */

@media (max-width: 960px) {
    .twofa-shell[b-bbfaammrk2] {
        grid-template-columns: 1fr;
    }
    .twofa-right[b-bbfaammrk2] {
        padding: 28px 22px;
    }
}

@media (max-width: 600px) {
    .twofa-right[b-bbfaammrk2] {
        padding: 24px 16px;
    }
}

@media (max-width: 480px) {
    .twofa-right[b-bbfaammrk2] {
        padding: 20px 14px;
        gap: 12px;
    }
    .otp-boxes[b-bbfaammrk2] {
        justify-content: center;
        flex-wrap: wrap;
        gap: 8px;
    }
    .otp-input[b-bbfaammrk2] {
        width: clamp(40px, 12vw, 50px);
        height: clamp(44px, 13vw, 54px);
        font-size: clamp(18px, 5.5vw, 24px);
    }
    .btn.primary[b-bbfaammrk2] {
        width: 100%;
    }
}
/* /Pages/EmployeeDashboard.razor.rz.scp.css */
/* Main Container */
.employee-dashboard-container[b-s623m7ud53] {
    display: flex;
    min-height: 100vh;
    background-color: var(--bg-primary, #0F172A);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

/* Sidebar */
.sidebar[b-s623m7ud53] {
    width: 280px;
    background-color: var(--bg-sidebar, #1E293B);
    color: white;
    position: fixed;
    height: 100vh;
    left: 0;
    top: 0;
    z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary, #334155);
}

/* Main Content Area */
.main-content[b-s623m7ud53] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary, #0F172A);
    min-height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
}

/* Statistics Section */
.statistics-section[b-s623m7ud53] {
    padding: 30px 40px;
    background-color: var(--bg-primary, #0F172A);
}

.section-title[b-s623m7ud53] {
    font-size: 24px;
    font-weight: 700;
    color: #ffffff;
    margin: 0 0 30px 0;
}

.charts-grid[b-s623m7ud53] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    margin-bottom: 20px;
}

.chart-card[b-s623m7ud53] {
    background-color: var(--card-bg, #1E293B);
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    border: 1px solid var(--border-primary, #334155);
}

.see-less-btn[b-s623m7ud53] {
    background-color: #3B82F6;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: 600;
    font-size: 14px;
    transition: all 0.2s ease;
    margin-top: 20px;
}

.see-less-btn:hover[b-s623m7ud53] {
    background-color: #2563EB;
    transform: translateY(-1px);
}

/* Employee Details Section */
.employee-details-section[b-s623m7ud53] {
    padding: 30px 40px;
    background-color: var(--bg-primary, #0F172A);
}

.section-header[b-s623m7ud53] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 24px;
}

.action-bar[b-s623m7ud53] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.search-box[b-s623m7ud53] {
    position: relative;
    display: flex;
    align-items: center;
}

.search-icon[b-s623m7ud53] {
    position: absolute;
    left: 12px;
    pointer-events: none;
}

.search-input[b-s623m7ud53] {
    padding: 10px 12px 10px 40px;
    border: 1px solid var(--border-primary, #334155);
    border-radius: 8px;
    background-color: var(--card-bg, #ffffff);
    color: var(--text-primary, #141414);
    font-size: 14px;
    width: 250px;
    outline: none;
}

.search-input:focus[b-s623m7ud53] {
    border-color: #3B82F6;
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
}

.search-input[b-s623m7ud53]::placeholder {
    color: rgba(20, 20, 20, 0.45);
}

.btn-export[b-s623m7ud53],
.btn-create[b-s623m7ud53] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s ease;
    border: none;
}

.btn-export[b-s623m7ud53] {
    background-color: #10B981;
    color: white;
}

.btn-export:hover[b-s623m7ud53] {
    background-color: #059669;
    transform: translateY(-1px);
}

.btn-create[b-s623m7ud53] {
    background-color: #3B82F6;
    color: white;
}

.btn-create:hover[b-s623m7ud53] {
    background-color: #2563EB;
    transform: translateY(-1px);
}

/* Explicit Search button — sits beside the search input in the action bar.
   Matches btn-export/btn-create sizing for vertical alignment; navy palette
   reads as a primary affirmative action distinct from Export (green) and
   Create (blue). */
.btn-search[b-s623m7ud53] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s ease;
    border: none;
    background-color: #001f57;
    color: white;
}

.btn-search:hover:not(:disabled)[b-s623m7ud53] {
    background-color: #00184a;
    transform: translateY(-1px);
}

.btn-search:disabled[b-s623m7ud53] {
    opacity: 0.6;
    cursor: not-allowed;
}

/* Filters Row */
.filters-row[b-s623m7ud53] {
    display: flex;
    gap: 16px;
    margin-bottom: 24px;
    flex-wrap: wrap;
}

/* Each filter cell wraps a SearchableSelect so it claims the same horizontal
   space the old <select> did and keeps the row's flex layout stable. */
.filter-cell[b-s623m7ud53] {
    flex: 1;
    min-width: 180px;
}

[b-s623m7ud53] .filter-cell .autocomplete-container {
    width: 100%;
}

[b-s623m7ud53] .filter-cell .autocomplete-input {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--border-primary, #334155);
    border-radius: 8px;
    background-color: var(--card-bg, #ffffff);
    color: var(--text-primary, #141414);
    font-size: 14px;
    outline: none;
    font-weight: 500;
}

[b-s623m7ud53] .filter-cell .autocomplete-input:focus {
    border-color: #3B82F6;
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
}

.filter-select[b-s623m7ud53] {
    flex: 1;
    min-width: 180px;
    padding: 10px 12px;
    border: 1px solid var(--border-primary, #334155);
    border-radius: 8px;
    background-color: var(--card-bg, #ffffff) !important;
    color: var(--text-primary, #000000) !important;
    font-size: 14px;
    outline: none;
    cursor: pointer;
    transition: all 0.2s ease;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    font-weight: 500;
}

.filter-select:focus[b-s623m7ud53] {
    border-color: #3B82F6;
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
    color: #000000 !important;
}

.filter-select option[b-s623m7ud53] {
    background-color: var(--card-bg, #ffffff) !important;
    color: var(--text-primary, #000000) !important;
    padding: 8px;
}

.filter-select[b-s623m7ud53]::-ms-expand {
    display: none;
}

/* Ensure selected option text is visible */
.filter-select:invalid[b-s623m7ud53] {
    color: #000000 !important;
}

.filter-select:valid[b-s623m7ud53] {
    color: #000000 !important;
}

/* Table Container */
.table-container[b-s623m7ud53] {
    background-color: var(--card-bg, #1E293B);
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid var(--border-primary, #334155);
    margin-bottom: 24px;
}

.employee-table[b-s623m7ud53] {
    width: 100%;
    border-collapse: collapse;
}

.employee-table thead[b-s623m7ud53] {
    /* QA-01 #15: on-brand dark blue header */
    background-color: #001D4A;
}

.employee-table th[b-s623m7ud53] {
    padding: 16px;
    text-align: left;
    font-weight: 600;
    font-size: 14px;
    color: #ffffff;
    border-bottom: 2px solid var(--border-primary, #334155);
}

.employee-table tbody tr[b-s623m7ud53] {
    border-bottom: 1px solid var(--border-primary, #334155);
    transition: background-color 0.2s ease;
}

.employee-table tbody tr:hover[b-s623m7ud53] {
    /* QA-01 #13/#15: deeper, richer navy so the highlighted row reads clearly
       (the old #1E293B was too light). Keep row text/link readable on it. */
    background-color: #0A1F44;
}

.employee-table tbody tr:hover td[b-s623m7ud53] {
    color: #E2E8F0;
}

.employee-table tbody tr:hover .employee-link[b-s623m7ud53] {
    color: #93C5FD;
}

.employee-table td[b-s623m7ud53] {
    padding: 16px;
    font-size: 14px;
    color: #E2E8F0;
}

.employee-link[b-s623m7ud53] {
    color: #3B82F6;
    text-decoration: none;
    font-weight: 500;
    transition: color 0.2s ease;
}

.employee-link:hover[b-s623m7ud53] {
    color: #60A5FA;
    text-decoration: underline;
}

.action-buttons[b-s623m7ud53] {
    display: flex;
    gap: 8px;
    align-items: center;
}

.action-btn[b-s623m7ud53] {
    background: none;
    border: none;
    color: #94A3B8;
    cursor: pointer;
    padding: 6px;
    border-radius: 4px;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
}

.action-btn:hover[b-s623m7ud53] {
    background-color: #334155;
    color: #ffffff;
}

.action-btn.delete-btn:hover[b-s623m7ud53] {
    background-color: #EF4444;
    color: #ffffff;
}

/* Pagination */
.pagination[b-s623m7ud53] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 0;
}

.pagination-btn[b-s623m7ud53] {
    background-color: #3B82F6;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: 600;
    font-size: 14px;
    transition: all 0.2s ease;
}

.pagination-btn:hover:not(:disabled)[b-s623m7ud53] {
    background-color: #2563EB;
    transform: translateY(-1px);
}

.pagination-btn:disabled[b-s623m7ud53] {
    background-color: #475569;
    cursor: not-allowed;
    opacity: 0.6;
}

.pagination-info[b-s623m7ud53] {
    color: #E2E8F0;
    font-size: 14px;
    font-weight: 500;
}

/* Loading and Empty States */
.loading-message[b-s623m7ud53],
.no-data-message[b-s623m7ud53] {
    padding: 40px;
    text-align: center;
    color: #94A3B8;
    font-size: 16px;
}

/* Responsive Design */
@media (max-width: 1400px) {
    .charts-grid[b-s623m7ud53] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 1200px) {
    .sidebar[b-s623m7ud53] {
        width: 250px;
    }
    
    .main-content[b-s623m7ud53] {
        margin-left: 250px;
    }
    
    .filters-row[b-s623m7ud53] {
        flex-direction: column;
    }
    
    .filter-select[b-s623m7ud53] {
        width: 100%;
    }
}

@media (max-width: 768px) {
    .employee-dashboard-container[b-s623m7ud53] {
        flex-direction: column;
    }
    
    .sidebar[b-s623m7ud53] {
        position: relative;
        width: 100%;
        height: auto;
    }
    
    .main-content[b-s623m7ud53] {
        margin-left: 0;
    }
    
    .charts-grid[b-s623m7ud53] {
        grid-template-columns: 1fr;
    }
    
    .section-header[b-s623m7ud53] {
        flex-direction: column;
        align-items: flex-start;
        gap: 16px;
    }
    
    .action-bar[b-s623m7ud53] {
        width: 100%;
        flex-wrap: wrap;
    }
    
    .search-input[b-s623m7ud53] {
        width: 100%;
    }
    
    .statistics-section[b-s623m7ud53],
    .employee-details-section[b-s623m7ud53] {
        padding: 20px;
    }
    
    .employee-table[b-s623m7ud53] {
        font-size: 12px;
    }
    
    .employee-table th[b-s623m7ud53],
    .employee-table td[b-s623m7ud53] {
        padding: 12px 8px;
    }
}

@media (max-width: 480px) {
    .statistics-section[b-s623m7ud53],
    .employee-details-section[b-s623m7ud53] {
        padding: 16px;
    }
    
    .section-title[b-s623m7ud53] {
        font-size: 20px;
    }
    
    .pagination[b-s623m7ud53] {
        flex-direction: column;
        gap: 12px;
    }
}

/* ── Inactive-user row styling ───────────────────────────────────────────────
   Rows for soft-deleted (IsActive=false) users get a faded look + an
   "Inactive" badge next to the name so the admin can see at a glance whether
   the toggle button on this row will deactivate or reactivate. */
.row-inactive[b-s623m7ud53] {
    background-color: #f8fafc;
    color: #6b7280;
}

.row-inactive td[b-s623m7ud53] {
    color: #6b7280;
}

.row-inactive .employee-link[b-s623m7ud53] {
    color: #6b7280;
    text-decoration: line-through;
}

.inactive-badge[b-s623m7ud53] {
    display: inline-block;
    margin-left: 8px;
    padding: 2px 8px;
    border-radius: 999px;
    background-color: #fee2e2;
    color: #991b1b;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    vertical-align: middle;
}

/* Reactivate button — green check icon. Distinct from the red Deactivate
   power-icon button (which keeps the existing .delete-btn styling). */
.activate-btn[b-s623m7ud53] {
    color: #15803d;
}

.activate-btn:hover[b-s623m7ud53] {
    background-color: rgba(34, 197, 94, 0.10);
    color: #166534;
}

/* ── View / Edit slide-panel (mirrors AllSystemUsers) ─────────────────────────
   Side-panel that slides in from the right and overlays the dashboard.
   The same panel covers View (read-only, inputs disabled) and Edit
   (writable, Save button visible). Clicking the dimmed area outside the
   panel calls CloseEditPanel via the markup's @onclick handler. */
.edit-panel-overlay[b-s623m7ud53] {
    position: fixed;
    inset: 0;
    background-color: rgba(15, 23, 42, 0.45);
    z-index: 2000;
    display: flex;
    justify-content: flex-end;
    animation: edit-panel-fade-in-b-s623m7ud53 0.2s ease;
}

.edit-panel[b-s623m7ud53] {
    width: 640px;
    max-width: 100%;
    background-color: var(--card-bg, #ffffff);
    color: var(--text-primary, #141414);
    height: 100vh;
    display: flex;
    flex-direction: column;
    box-shadow: var(--shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, 0.1));
    animation: edit-panel-slide-in-b-s623m7ud53 0.2s ease;
}

.edit-panel-header[b-s623m7ud53] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 24px;
    border-bottom: 1px solid var(--border-primary, #e2e8f0);
}

.edit-panel-title[b-s623m7ud53] {
    margin: 0;
    color: var(--text-primary, #141414);
    font-size: 18px;
    font-weight: 600;
}

.edit-panel-close[b-s623m7ud53] {
    background: transparent;
    border: none;
    color: var(--text-muted, #6b7280);
    font-size: 22px;
    cursor: pointer;
    line-height: 1;
    padding: 4px 8px;
}

.edit-panel-close:hover[b-s623m7ud53] {
    color: var(--text-primary, #141414);
}

.edit-panel-body[b-s623m7ud53] {
    flex: 1;
    padding: 20px 24px;
    overflow-y: auto;
}

.edit-panel-footer[b-s623m7ud53] {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    padding: 16px 24px;
    border-top: 1px solid var(--border-primary, #e2e8f0);
}

/* User summary card at the top of the panel body */
.edit-user-info[b-s623m7ud53] {
    background: var(--bg-secondary, #f8fafc);
    border: 1px solid var(--border-primary, #e2e8f0);
    border-radius: 8px;
    padding: 12px 14px;
    margin-bottom: 16px;
}

.edit-user-name[b-s623m7ud53] {
    font-weight: 600;
    color: var(--text-primary, #141414);
    margin-bottom: 2px;
}

.edit-user-email[b-s623m7ud53] {
    font-size: 13px;
    color: var(--text-tertiary, #4b5563);
}

.edit-user-dept[b-s623m7ud53] {
    font-size: 12px;
    color: var(--text-muted, #6b7280);
    margin-top: 2px;
}

/* Form rows — one label + one input each */
.edit-field[b-s623m7ud53] {
    margin-bottom: 14px;
}

.edit-label[b-s623m7ud53] {
    display: block;
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 4px;
    color: var(--text-primary, #141414);
}

.edit-input[b-s623m7ud53] {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--border-primary, #e2e8f0);
    border-radius: 8px;
    background-color: var(--card-bg, #ffffff);
    color: var(--text-primary, #141414);
    font-size: 14px;
    outline: none;
    box-sizing: border-box;
}

.edit-input:focus[b-s623m7ud53] {
    border-color: #3B82F6;
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
}

.edit-input:disabled[b-s623m7ud53] {
    background-color: #f1f5f9;
    color: #6b7280;
    cursor: not-allowed;
}

.edit-note[b-s623m7ud53] {
    font-size: 12px;
    color: var(--text-muted, #6b7280);
    margin: 4px 0 0 0;
}

.edit-error[b-s623m7ud53] {
    background-color: rgba(239, 68, 68, 0.08);
    color: #b91c1c;
    border: 1px solid rgba(239, 68, 68, 0.25);
    border-radius: 8px;
    padding: 10px 12px;
    font-size: 13px;
    margin-top: 12px;
}

/* Footer buttons — secondary closes, primary saves */
.edit-btn-secondary[b-s623m7ud53],
.edit-btn-primary[b-s623m7ud53] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 18px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    border: none;
    transition: background-color 0.15s ease, transform 0.15s ease;
}

.edit-btn-secondary[b-s623m7ud53] {
    background-color: var(--card-bg, #ffffff);
    color: var(--text-primary, #141414);
    border: 1px solid var(--border-primary, #d1d5db);
}

.edit-btn-secondary:hover[b-s623m7ud53] {
    background-color: #f8fafc;
}

.edit-btn-primary[b-s623m7ud53] {
    background-color: #3B82F6;
    color: #ffffff;
}

.edit-btn-primary:hover:not(:disabled)[b-s623m7ud53] {
    background-color: #2563EB;
    transform: translateY(-1px);
}

.edit-btn-primary:disabled[b-s623m7ud53] {
    opacity: 0.6;
    cursor: not-allowed;
}

@keyframes edit-panel-fade-in-b-s623m7ud53 {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@keyframes edit-panel-slide-in-b-s623m7ud53 {
    from { transform: translateX(100%); }
    to   { transform: translateX(0); }
}

@media (max-width: 720px) {
    .edit-panel[b-s623m7ud53] {
        width: 100%;
    }
}

/* /Pages/EmployeeDiversity.razor.rz.scp.css */
/* Main Container */
.employee-diversity-container[b-v7erukas74] {
    display: flex;
    min-height: 100vh;
    background-color: var(--bg-primary);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

/* Sidebar */
.sidebar[b-v7erukas74] {
    width: 280px;
    background-color: var(--bg-sidebar);
    color: white;
    position: fixed;
    height: 100vh;
    left: 0;
    top: 0;
    z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary);
}

/* Main Content Area */
.main-content[b-v7erukas74] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary);
    height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
}

/* Page Header */
.page-header[b-v7erukas74] {
    background-color: var(--card-bg);
    padding: 20px 40px;
    border-bottom: 1px solid var(--border-primary);
    display: flex;
    justify-content: space-between;
    align-items: center;
    box-shadow: var(--shadow-sm);
    position: sticky;
    top: 0;
    z-index: 100;
    backdrop-filter: blur(10px);
    box-sizing: border-box;
    margin-left: -1px;
    border-left: 1px solid var(--border-primary);
}

.page-title[b-v7erukas74] {
    font-size: 28px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0;
}

.user-profile[b-v7erukas74] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.user-name[b-v7erukas74] {
    font-size: 16px;
    font-weight: 600;
    color: #374151;
}

.user-avatar[b-v7erukas74] {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    overflow: hidden;
    background-color: #e5e7eb;
    display: flex;
    align-items: center;
    justify-content: center;
}

.user-avatar img[b-v7erukas74] {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.user-avatar-text[b-v7erukas74] {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background-color: var(--accent-primary, #3b82f6);
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-size: 14px;
    font-weight: 600;
}

/* Form Container */
.form-shell[b-v7erukas74] {
    background: var(--card-bg);
    margin: 40px;
    border-radius: 12px;
    padding: 40px;
    box-shadow: var(--shadow-md);
    border: 1px solid var(--card-border);
}

.form-shell h2[b-v7erukas74] {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 32px;
    border-bottom: 2px solid var(--border-primary);
    padding-bottom: 16px;
}

/* Form Grid */
.form-grid[b-v7erukas74] {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.row[b-v7erukas74] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}

/* ── Change History (audit trail) card ─────────────────────────────────── */
.history-card[b-v7erukas74] {
    margin-top: 20px;
    border: 1px solid var(--card-border);
    border-radius: 12px;
    background: var(--card-bg);
    box-shadow: var(--shadow-sm);
    padding: 18px 20px;
}
.history-card-title[b-v7erukas74] {
    font-weight: 600;
    font-size: 15px;
    color: var(--text-primary);
    margin-bottom: 12px;
}
.history-empty[b-v7erukas74] {
    color: var(--text-muted);
    font-size: 14px;
    margin: 4px 0 0;
}
.history-scroll[b-v7erukas74] { overflow-x: auto; }
.history-table[b-v7erukas74] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13.5px;
}
.history-table th[b-v7erukas74],
.history-table td[b-v7erukas74] {
    text-align: left;
    padding: 8px 12px;
    border-bottom: 1px solid var(--card-border);
    white-space: nowrap;
}
.history-table th[b-v7erukas74] {
    color: var(--text-muted);
    font-weight: 600;
    background: var(--bg-secondary);
}
.history-table td[b-v7erukas74] { color: var(--text-primary); }
.history-table tbody tr:last-child td[b-v7erukas74] { border-bottom: none; }

/* ── Collapsible form sections ─────────────────────────────────────────── */
.form-section[b-v7erukas74] {
    border: 1px solid var(--card-border);
    border-radius: 12px;
    background: var(--card-bg);
    box-shadow: var(--shadow-sm);
    /* visible (not hidden) so an open dropdown in the last row of a section — e.g.
       Job Type / Skill Type — extends past the card instead of being clipped by it
       and hidden behind the next section. Collapse uses display:none, not overflow,
       so hiding overflow here served only the rounded corners. */
    overflow: visible;
}

/* Keep the header's hover tint inside the card's rounded top corners now that the
   card no longer clips overflow. */
.form-section-head[b-v7erukas74] {
    border-radius: 12px 12px 0 0;
}

.form-section-head[b-v7erukas74] {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 16px 20px;
    background: transparent;
    border: none;
    cursor: pointer;
    text-align: left;
    font-family: inherit;
    transition: background-color .15s ease;
}

.form-section-head:hover[b-v7erukas74] {
    background-color: rgba(99, 102, 241, 0.06);
}

.form-section-title[b-v7erukas74] {
    font-size: 16px;
    font-weight: 700;
    color: var(--text-primary);
    letter-spacing: .2px;
}

.form-section-chevron[b-v7erukas74] {
    color: var(--text-secondary);
    transition: transform .2s ease;
    flex: 0 0 auto;
}

/* Sections start expanded, so the chevron points up by default; collapsing
   rotates it to point down ("click to expand"). */
.form-section-chevron.is-open[b-v7erukas74] {
    transform: rotate(180deg);
}

.form-section-body[b-v7erukas74] {
    display: flex;
    flex-direction: column;
    gap: 24px;
    padding: 20px;
    border-top: 1px solid var(--border-primary);
}

.form-section-body.is-collapsed[b-v7erukas74] {
    display: none;
}

/* Field Styling */
.field[b-v7erukas74] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* Inline server-side validation errors, shown under the offending input. */
.field-error[b-v7erukas74] {
    color: #dc2626;
    font-size: 12.5px;
    font-weight: 500;
}
.field input.input-error[b-v7erukas74],
.field select.input-error[b-v7erukas74] {
    border-color: #dc2626;
}
.alert-error-list[b-v7erukas74] {
    margin: 8px 0 0;
    padding-left: 20px;
}
.alert-error-list li[b-v7erukas74] { margin: 2px 0; }

.field label[b-v7erukas74] {
    font-weight: 600;
    color: var(--text-secondary);
    font-size: 14px;
    margin-bottom: 4px;
}

.field input[b-v7erukas74],
.field select[b-v7erukas74] {
    border: 1px solid var(--input-border);
    border-radius: 8px;
    padding: 12px 16px;
    font-size: 14px;
    color: var(--text-primary);
    background-color: var(--input-bg);
    outline: none;
    width: 100%;
    transition: all 0.2s ease;
}

.field input:focus[b-v7erukas74],
.field select:focus[b-v7erukas74] {
    border-color: var(--input-focus);
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
}

.field input[b-v7erukas74]::placeholder {
    color: var(--input-placeholder);
}

/* Radio Button Styling */
.inline-radio[b-v7erukas74] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.inline-radio div[b-v7erukas74] {
    display: flex;
    gap: 20px;
    align-items: center;
}

.inline-radio label[b-v7erukas74] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 500;
    color: var(--text-secondary);
    cursor: pointer;
}

.inline-radio input[type="radio"][b-v7erukas74] {
    width: 16px;
    height: 16px;
    margin: 0;
    accent-color: var(--accent-primary);
}

/* Button Styling */
.button-row[b-v7erukas74] {
    display: flex;
    justify-content: flex-end;
    gap: 16px;
    margin-top: 40px;
    padding-top: 24px;
    border-top: 1px solid var(--border-primary);
}

.btn-primary[b-v7erukas74] {
    background-color: var(--btn-primary-bg);
    color: var(--btn-primary-text);
    border: none;
    padding: 12px 24px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: 600;
    font-size: 14px;
    transition: all 0.2s ease;
    min-width: 100px;
}

.btn-primary:hover[b-v7erukas74] {
    background-color: var(--btn-primary-hover);
    transform: translateY(-1px);
    box-shadow: 0 4px 8px rgba(30, 64, 175, 0.3);
}

.btn-secondary[b-v7erukas74] {
    background-color: var(--btn-secondary-bg);
    color: var(--btn-secondary-text);
    border: 1px solid var(--btn-secondary-border);
    padding: 12px 24px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: 600;
    font-size: 14px;
    transition: all 0.2s ease;
    min-width: 100px;
}

.btn-secondary:hover[b-v7erukas74] {
    background-color: var(--btn-secondary-hover);
    border-color: var(--text-tertiary);
    transform: translateY(-1px);
}

/* EMP-01 repeaters: small icon-only buttons (add "+" / remove "✕") with a hover
   tooltip via the title attribute. Minimalistic — fixed square, no long label. */
.icon-btn[b-v7erukas74] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    min-width: 0;
    padding: 0;
    margin-top: 4px;
    border: 1px solid var(--border-primary);
    border-radius: 6px;
    background: transparent;
    color: var(--text-secondary);
    font-size: 16px;
    line-height: 1;
    cursor: pointer;
    transition: all 0.15s ease;
}

/* Add: brand-blue outline at rest, fills brand blue on hover. */
.icon-btn-add[b-v7erukas74] {
    color: var(--btn-primary-bg, #1e40af);
    border-color: var(--btn-primary-bg, #1e40af);
}

.icon-btn-add:hover[b-v7erukas74] {
    background: var(--btn-primary-bg, #1e40af);
    border-color: var(--btn-primary-bg, #1e40af);
    color: #fff;
}

/* Remove: red outline at rest, fills red on hover. */
.icon-btn-remove[b-v7erukas74] {
    color: var(--error, #dc2626);
    border-color: var(--error, #dc2626);
}

.icon-btn-remove:hover[b-v7erukas74] {
    background: var(--error, #dc2626);
    border-color: var(--error, #dc2626);
    color: #fff;
}

/* Empty field for spacing */
.empty[b-v7erukas74] {
    visibility: hidden;
}

/* Responsive Design */
@media (max-width: 1200px) {
    .row[b-v7erukas74] {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .sidebar[b-v7erukas74] {
        width: 250px;
    }
    
    .main-content[b-v7erukas74] {
        margin-left: 250px;
    }
}

@media (max-width: 768px) {
    .employee-diversity-container[b-v7erukas74] {
        flex-direction: column;
    }
    
    .sidebar[b-v7erukas74] {
        position: relative;
        width: 100%;
        height: auto;
    }
    
    .main-content[b-v7erukas74] {
        margin-left: 0;
    }
    
    .row[b-v7erukas74] {
        grid-template-columns: 1fr;
    }
    
    .page-header[b-v7erukas74] {
        padding: 16px 20px;
        flex-direction: column;
        gap: 16px;
        align-items: flex-start;
    }
    
    .form-shell[b-v7erukas74] {
        margin: 20px;
        padding: 24px;
    }
    
    .button-row[b-v7erukas74] {
        flex-direction: column;
    }
}

/* ── Required indicator ──────────────────────────────────────────────────── */
.required[b-v7erukas74] {
    color: #ef4444;
    margin-left: 2px;
}

/* ── Read-only field ─────────────────────────────────────────────────────── */
.readonly-field[b-v7erukas74] {
    background-color: var(--input-bg, #f9fafb);
    color: var(--text-secondary, #6b7280);
    cursor: not-allowed;
    opacity: 0.8;
}

/* ── Loading state ───────────────────────────────────────────────────────── */
.loading-state[b-v7erukas74] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    padding: 60px 20px;
    color: var(--text-secondary);
}

.spinner[b-v7erukas74] {
    width: 36px;
    height: 36px;
    border: 3px solid var(--border-primary, #e5e7eb);
    border-top-color: var(--accent-primary, #3b82f6);
    border-radius: 50%;
    animation: spin-b-v7erukas74 0.8s linear infinite;
}

@keyframes spin-b-v7erukas74 {
    to { transform: rotate(360deg); }
}

/* ── Alert banners ───────────────────────────────────────────────────────── */
.alert[b-v7erukas74] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-radius: 8px;
    margin-bottom: 20px;
    font-size: 14px;
    font-weight: 500;
}

.alert-success[b-v7erukas74] {
    background-color: #dcfce7;
    color: #166534;
    border: 1px solid #bbf7d0;
}

.alert-error[b-v7erukas74] {
    background-color: #fee2e2;
    color: #991b1b;
    border: 1px solid #fecaca;
}

.alert-close[b-v7erukas74] {
    background: none;
    border: none;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    color: inherit;
    opacity: 0.7;
    padding: 0 4px;
}

.alert-close:hover[b-v7erukas74] { opacity: 1; }


/* ── Save button spinner ─────────────────────────────────────────────────── */
.btn-spinner[b-v7erukas74] {
    display: inline-block;
    width: 14px;
    height: 14px;
    border: 2px solid rgba(255, 255, 255, 0.4);
    border-top-color: white;
    border-radius: 50%;
    animation: spin-b-v7erukas74 0.7s linear infinite;
    margin-right: 6px;
    vertical-align: middle;
}

/* ── Disabled select ─────────────────────────────────────────────────────── */
.field select:disabled[b-v7erukas74] {
    opacity: 0.55;
    cursor: not-allowed;
}

@media (max-width: 480px) {
    .form-shell[b-v7erukas74] {
        margin: 16px;
        padding: 20px;
    }
    
    .page-header[b-v7erukas74] {
        padding: 16px;
    }

    .page-title[b-v7erukas74] {
        font-size: 24px;
    }
}

/* Mobile: tables (if rendered on this page) get horizontal scroll so wide
   row data stays legible instead of squashing into the viewport. */
@media (max-width: 768px) {
    .table-container[b-v7erukas74],
    .employee-table-wrapper[b-v7erukas74] {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .employee-table[b-v7erukas74],
    table[b-v7erukas74] {
        min-width: 720px;
    }
}

/* The form is wrapped in a <fieldset> so view mode can disable every nested
   form control via the HTML5 `disabled` attribute. Browsers paint a default
   black border + small padding on fieldsets — we strip them so the wrapper
   is invisible to the user and the page looks identical to create / edit
   mode when the fieldset is enabled. */
.form-fieldset[b-v7erukas74] {
    border: 0;
    margin: 0;
    padding: 0;
    min-width: 0; /* fixes a Chrome quirk where fieldset breaks flex/grid */
}

/* Visual cue for view mode: every disabled input gets a pale-grey
   background and a not-allowed cursor so the form reads as "look, don't
   touch" at a glance. */
.form-fieldset[disabled] input[b-v7erukas74],
.form-fieldset[disabled] select[b-v7erukas74],
.form-fieldset[disabled] textarea[b-v7erukas74] {
    background-color: var(--bg-secondary, #f8fafc);
    color: #141414;
    cursor: not-allowed;
}

/* Phase-O OnePortal-access confirmation modal. Prefixed selectors so the
   styles don't clash with whatever generic modal CSS lives elsewhere. */
.oneportal-modal-overlay[b-v7erukas74] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    z-index: 3000;
    display: flex;
    align-items: center;
    justify-content: center;
    animation: fadeIn 0.18s ease;
}

.oneportal-modal-card[b-v7erukas74] {
    width: min(460px, 92vw);
    background: var(--card-bg, white);
    border-radius: 12px;
    padding: 24px;
    box-shadow: 0 20px 50px rgba(15, 23, 42, 0.25);
    animation: scaleIn-b-v7erukas74 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}

.oneportal-modal-card h3[b-v7erukas74] {
    margin: 0 0 12px;
    font-size: 18px;
    color: #001F57;
}

.oneportal-modal-card p[b-v7erukas74] {
    margin: 0 0 10px;
    color: #334155;
    line-height: 1.5;
    font-size: 14px;
}

.oneportal-modal-actions[b-v7erukas74] {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    margin-top: 18px;
}

@keyframes scaleIn-b-v7erukas74 {
    from { opacity: 0; transform: scale(0.94); }
    to   { opacity: 1; transform: scale(1); }
}

@media (max-width: 480px) {
    .oneportal-modal-actions[b-v7erukas74] {
        flex-direction: column-reverse;
    }
    .oneportal-modal-actions .btn-primary[b-v7erukas74],
    .oneportal-modal-actions .btn-secondary[b-v7erukas74] {
        width: 100%;
    }
}
/* /Pages/forgotPassword.razor.rz.scp.css */
/* ===== ONE PORTAL – Forgot Password (CSS isolation) ===== */

/* predictable sizing */
*[b-0qc7poasxo], *[b-0qc7poasxo]::before, *[b-0qc7poasxo]::after {
    box-sizing: border-box;
}

/* layout consistent with login/reset */
.forgot-shell[b-0qc7poasxo] {
    --primary: #001F57;
    --heading: #292929;
    --sub: #585858;
    --placeholder: #C9D3E0;
    --border: #254a76;
    --input-h: 55px;
    --input-r: 16px;
    --content-w: 520px;
    display: grid;
    grid-template-columns: 55% 45%;
    min-height: 100vh;
    width: 100%;
}

.forgot-left[b-0qc7poasxo] {
    position: relative;
    background: #0b1b33;
}

.forgot-img[b-0qc7poasxo] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.forgot-right[b-0qc7poasxo] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 40px 56px;
    gap: 16px;
}

    .forgot-right h1[b-0qc7poasxo] {
        margin: 0 0 10px;
        color: var(--heading);
        font-weight: 800;
        font-size: clamp(22px,3vw,32px);
    }

/* field wrapper */
.field[b-0qc7poasxo] {
    width: min(var(--content-w),100%);
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 10px;
}

    .field label[b-0qc7poasxo] {
        font-size: 13px;
        font-weight: 700;
        color: #222;
        letter-spacing: .2px;
    }

/* Base input style — clean white surface, brand-navy focus halo. */
.input[b-0qc7poasxo] {
    width: 100%;
    height: var(--input-h);
    padding: 0 18px;
    border: 1px solid #cbd5e1;          /* slate-300 */
    border-radius: var(--input-r);
    font-size: 15px;
    outline: none;
    background: #ffffff;
    color: #1e293b;                      /* slate-800 */
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

    .input[b-0qc7poasxo]::placeholder {
        color: #94a3b8;                  /* slate-400 — readable on white */
    }

    .input:focus[b-0qc7poasxo] {
        border-color: var(--primary);
        box-shadow: 0 0 0 3px rgba(0, 31, 87, 0.12);
    }

/* messages */
.validation-message[b-0qc7poasxo] {
    color: #c62828;
    font-size: 12px;
    margin-top: 4px;
}

.ok-message[b-0qc7poasxo],
.error-message[b-0qc7poasxo] {
    margin-top: 12px;
    font-size: 13px;
    font-weight: 600;
}

.ok-message[b-0qc7poasxo] {
    color: #0a7a2f;
}

.error-message[b-0qc7poasxo] {
    color: #c62828;
}

/* button consistent with login */
.btn.primary[b-0qc7poasxo] {
    width: min(var(--content-w),100%);
    height: var(--input-h);
    border-radius: 22px;
    border: 0;
    background: var(--primary);
    color: #fff;
    font-size: 20px;
    font-weight: 800;
    margin-top: 22px;
    cursor: pointer;
}

    .btn.primary:hover[b-0qc7poasxo] {
        filter: brightness(1.05);
    }

    .btn.primary:active[b-0qc7poasxo] {
        transform: translateY(1px);
    }

    .btn.primary[disabled][b-0qc7poasxo] {
        opacity: .7;
        cursor: not-allowed;
    }

/* ── Responsive ladder ──────────────────────────────────────────────────
   SideImagePanel hide + 100dvh fallback are global (wwwroot/css/app.css). */

@media (max-width: 960px) {
    .forgot-shell[b-0qc7poasxo] {
        grid-template-columns: 1fr;
    }
    .forgot-right[b-0qc7poasxo] {
        padding: 28px 22px;
    }
}

@media (max-width: 600px) {
    .forgot-right[b-0qc7poasxo] {
        padding: 24px 16px;
    }
}

@media (max-width: 480px) {
    .forgot-right[b-0qc7poasxo] {
        padding: 20px 14px;
        gap: 12px;
    }
    .input[b-0qc7poasxo],
    .form-control[b-0qc7poasxo],
    .forgot-right .field input.input[b-0qc7poasxo],
    .forgot-right .field input.input[type="email"][b-0qc7poasxo] {
        font-size: 16px;
    }
    .btn.primary[b-0qc7poasxo] {
        width: 100%;
    }
}

/* override any bootstrap/form-control input styles that might still leak through */
/* Higher-specificity override that wins against browser defaults — same
   clean-white look as the .input rule above. */
.forgot-right .field input.input[b-0qc7poasxo],
.forgot-right .field input.input[type="email"][b-0qc7poasxo] {
    all: unset;
    box-sizing: border-box;
    -webkit-appearance: none;
    appearance: none;
    display: block;
    width: 100%;
    height: var(--input-h);
    padding: 0 18px;
    border: 1px solid #cbd5e1;          /* slate-300 */
    border-radius: var(--input-r);
    background: #ffffff;
    color: #1e293b;                      /* slate-800 */
    font-size: 15px;
    outline: none;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

    .forgot-right .field input.input[b-0qc7poasxo]::placeholder {
        color: #94a3b8;                  /* slate-400 */
    }

    .forgot-right .field input.input:focus[b-0qc7poasxo] {
        border-color: var(--primary);
        box-shadow: 0 0 0 3px rgba(0, 31, 87, 0.12);
    }
/* /Pages/Login.razor.rz.scp.css */
/* ─────────────────────────────────────────────────────────────────────────
   ONE PORTAL — Login (CSS isolation)
   Enterprise-grade: dark navy canvas on the right, glassmorphism login
   card, Microsoft / Azure / SAP-style typography, smooth micro-animations.
   ───────────────────────────────────────────────────────────────────────── */

/* predictable sizing */
*[b-0n9dgtsnkn], *[b-0n9dgtsnkn]::before, *[b-0n9dgtsnkn]::after {
    box-sizing: border-box;
}

/* ── Shell ───────────────────────────────────────────────────────────── */
.login-shell[b-0n9dgtsnkn] {
    --primary:       #001F57;
    --primary-soft:  #0a3380;
    --primary-light: #1e40af;
    --accent:        #c9a961;   /* warm gold for subtle highlights */
    --text:          #0f172a;   /* slate-900 — body text on light surface */
    --text-strong:   #020617;   /* slate-950 — headings */
    --text-muted:    #475569;   /* slate-600 — secondary copy */
    --text-faint:    #94a3b8;   /* slate-400 — placeholders */
    --field-bg:      #ffffff;
    --field-border:  #cbd5e1;   /* slate-300 */
    --field-focus:   rgba(0, 31, 87, 0.12);
    --input-h:       52px;
    --input-r:       12px;
    --card-w:        420px;
    display: grid;
    grid-template-columns: 55% 45%;
    min-height: 100vh;
    width: 100%;
}

/* ── Left side: light enterprise-themed canvas ───────────────────────── */
.brand-panel[b-0n9dgtsnkn] {
    background: #F5F8FC;
}

/* ── Right side: light enterprise canvas ─────────────────────────────── */
.login-right[b-0n9dgtsnkn] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 48px 40px;
    background: #F5F8FC;
    overflow: hidden;
}

/* Subtle ambient depth — barely-visible brand-tint + warm-gold radials
   give the light surface dimension without competing with the card. */
.login-right[b-0n9dgtsnkn]::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        radial-gradient(circle at 22% 18%, rgba(37, 99, 235, 0.05) 0%, transparent 38%),
        radial-gradient(circle at 78% 82%, rgba(201, 169, 97, 0.05) 0%, transparent 42%);
}

/* ── Paper card (light surface) ──────────────────────────────────────── */
.login-card[b-0n9dgtsnkn] {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: var(--card-w);
    display: flex;
    flex-direction: column;
    gap: 18px;
    padding: 40px 36px;
    border-radius: 18px;
    background: #ffffff;
    border: 1px solid #e2e8f0;       /* slate-200 */
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.9) inset,
        0 14px 36px rgba(15, 23, 42, 0.08),
        0 2px 6px rgba(15, 23, 42, 0.04);
    animation: card-rise-b-0n9dgtsnkn 480ms cubic-bezier(0.16, 1, 0.3, 1) both;
}

@keyframes card-rise-b-0n9dgtsnkn {
    0%   { opacity: 0; transform: translateY(8px); }
    100% { opacity: 1; transform: translateY(0); }
}

/* ── Brand ───────────────────────────────────────────────────────────── */
.brand[b-0n9dgtsnkn] {
    margin-bottom: 6px;
}

.brand h1[b-0n9dgtsnkn] {
    margin: 0 0 6px;
    color: var(--text-strong);
    font-weight: 600;
    font-size: clamp(22px, 2.4vw, 28px);
    letter-spacing: -0.01em;
    line-height: 1.2;
}

.brand .sub[b-0n9dgtsnkn] {
    margin: 0;
    color: var(--text-muted);
    font-size: 13.5px;
    font-weight: 400;
    letter-spacing: 0.01em;
}

/* ── Fields ──────────────────────────────────────────────────────────── */
.field[b-0n9dgtsnkn] {
    display: flex;
    flex-direction: column;
    gap: 7px;
    margin-top: 4px;
}

    .field label[b-0n9dgtsnkn] {
        font-size: 12px;
        font-weight: 600;
        color: var(--text);
        letter-spacing: 0.04em;
        text-transform: uppercase;
    }

/* Input look — glass surface, soft borders, soft focus halo */
.input[b-0n9dgtsnkn],
.form-control[b-0n9dgtsnkn] {
    width: 100%;
    height: var(--input-h);
    padding: 0 16px;
    border: 1px solid var(--field-border);
    border-radius: var(--input-r);
    font-size: 14.5px;
    font-weight: 400;
    outline: none;
    background: var(--field-bg);
    color: var(--text);
    transition: border-color 0.18s ease, background-color 0.18s ease, box-shadow 0.18s ease;
}

    .input[b-0n9dgtsnkn]::placeholder,
    .form-control[b-0n9dgtsnkn]::placeholder {
        color: var(--text-faint);
        font-weight: 400;
    }

    .input:hover[b-0n9dgtsnkn],
    .form-control:hover[b-0n9dgtsnkn] {
        border-color: #94a3b8;          /* slate-400 */
    }

    .input:focus[b-0n9dgtsnkn],
    .form-control:focus[b-0n9dgtsnkn] {
        background: #ffffff;
        border-color: var(--primary);
        box-shadow: 0 0 0 3px var(--field-focus);
    }

    .input.valid[b-0n9dgtsnkn],
    .form-control.valid[b-0n9dgtsnkn] {
        border-color: #16a34a;
    }

    .input.invalid[b-0n9dgtsnkn],
    .form-control.invalid[b-0n9dgtsnkn] {
        border-color: #dc2626;
    }

/* ── Password + eye ──────────────────────────────────────────────────── */
.password .password-wrap[b-0n9dgtsnkn] {
    position: relative;
    width: 100%;
}

    .password .password-wrap .input[b-0n9dgtsnkn],
    .password .password-wrap .form-control[b-0n9dgtsnkn] {
        padding-right: 44px;
    }

.password .toggle[b-0n9dgtsnkn] {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    border: 0;
    background: transparent;
    padding: 6px 8px;
    cursor: pointer;
    line-height: 0;
    color: var(--text-muted);
    border-radius: 8px;
    transition: color 0.15s ease, background-color 0.15s ease;
}

    .password .toggle:hover[b-0n9dgtsnkn] {
        color: var(--text-strong);
        background: #f1f5f9;            /* slate-100 */
    }

    .password .toggle i[b-0n9dgtsnkn] {
        font-size: 18px;
        line-height: 1;
        display: block;
    }

/* ── Forgot link ─────────────────────────────────────────────────────── */
.forgot[b-0n9dgtsnkn] {
    width: 100%;
    display: flex;
    justify-content: flex-end;
    margin-top: 2px;
}

    .forgot a[b-0n9dgtsnkn] {
        font-size: 12.5px;
        color: var(--primary);
        text-decoration: none;
        font-weight: 600;
        transition: color 0.15s ease;
    }

        .forgot a:hover[b-0n9dgtsnkn] {
            color: var(--primary-light);
            text-decoration: underline;
            text-underline-offset: 3px;
        }

/* ── Primary button (Microsoft/Azure-style) ──────────────────────────── */
.btn.primary[b-0n9dgtsnkn] {
    width: 100%;
    height: var(--input-h);
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    background: linear-gradient(180deg, #2563eb 0%, #1d4ed8 100%);
    color: #ffffff;
    font-size: 14.5px;
    font-weight: 600;
    letter-spacing: 0.02em;
    margin-top: 12px;
    cursor: pointer;
    transition: transform 0.15s ease, box-shadow 0.18s ease, filter 0.15s ease;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.18) inset,
        0 6px 16px rgba(29, 78, 216, 0.42);
}

    .btn.primary:hover[b-0n9dgtsnkn] {
        filter: brightness(1.06);
        transform: translateY(-1px);
        box-shadow:
            0 1px 0 rgba(255, 255, 255, 0.22) inset,
            0 10px 20px rgba(29, 78, 216, 0.5);
    }

    .btn.primary:active[b-0n9dgtsnkn] {
        transform: translateY(0);
        filter: brightness(0.97);
    }

    .btn.primary[disabled][b-0n9dgtsnkn] {
        opacity: 0.65;
        cursor: not-allowed;
        transform: none;
        box-shadow: 0 1px 0 rgba(255, 255, 255, 0.10) inset;
    }

/* ── Divider ─────────────────────────────────────────────────────────── */
.divider[b-0n9dgtsnkn] {
    width: 100%;
    display: flex;
    align-items: center;
    margin: 14px 0 6px;
    text-align: center;
}

.divider[b-0n9dgtsnkn]::before,
.divider[b-0n9dgtsnkn]::after {
    content: '';
    flex: 1;
    height: 1px;
    background: #e2e8f0;                /* slate-200 */
}

.divider span[b-0n9dgtsnkn] {
    padding: 0 14px;
    color: var(--text-faint);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    background: transparent;
}

/* ── Secondary / outline button ──────────────────────────────────────── */
.btn.secondary[b-0n9dgtsnkn] {
    width: 100%;
    height: var(--input-h);
    border-radius: 12px;
    border: 1px solid var(--field-border);
    background: #ffffff;
    color: var(--text);
    font-size: 14.5px;
    font-weight: 500;
    letter-spacing: 0.01em;
    margin-top: 4px;
    cursor: pointer;
    transition: background-color 0.18s ease, border-color 0.18s ease, transform 0.15s ease;
}

.btn.secondary:hover[b-0n9dgtsnkn] {
    background: #f8fafc;                /* slate-50 */
    border-color: #94a3b8;              /* slate-400 */
    transform: translateY(-1px);
}

.btn.secondary:active[b-0n9dgtsnkn] {
    transform: translateY(0);
}

.btn.secondary[disabled][b-0n9dgtsnkn] {
    opacity: 0.6;
    cursor: not-allowed;
    transform: none;
}

/* ── GitHub-style passkey button ─────────────────────────────────────── */
.btn.passkey-github-style[b-0n9dgtsnkn] {
    width: 100%;
    height: var(--input-h);
    border-radius: 12px;
    border: 1px solid #1f2937;
    background: #111827;
    color: #fff;
    font-size: 14.5px;
    font-weight: 500;
    margin-top: 4px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    transition: background-color 0.18s ease, border-color 0.18s ease, transform 0.15s ease, box-shadow 0.18s ease;
}

.btn.passkey-github-style:hover[b-0n9dgtsnkn] {
    background: #1f2937;
    border-color: #374151;
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.35);
}

.btn.passkey-github-style:active[b-0n9dgtsnkn] {
    transform: translateY(0);
}

.btn.passkey-github-style[disabled][b-0n9dgtsnkn] {
    opacity: 0.6;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

.btn.passkey-github-style svg[b-0n9dgtsnkn] {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
}

/* ── Messages ────────────────────────────────────────────────────────── */
.validation-message[b-0n9dgtsnkn],
.validation-errors li[b-0n9dgtsnkn] {
    color: #dc2626;                     /* red-600 */
    font-size: 12px;
    margin-top: 4px;
}

.error-message[b-0n9dgtsnkn] {
    margin-top: 10px;
    font-size: 13px;
    color: #b91c1c;                     /* red-700 */
    font-weight: 500;
    padding: 10px 14px;
    border-radius: 10px;
    background: #fef2f2;                /* red-50 */
    border: 1px solid #fecaca;          /* red-200 */
}

/* ── Responsive ladder ──────────────────────────────────────────────── */
@media (max-width: 960px) {
    .login-shell[b-0n9dgtsnkn] {
        grid-template-columns: 1fr;
    }
    .login-right[b-0n9dgtsnkn] {
        padding: 32px 22px;
        min-height: 100vh;
    }
    .login-card[b-0n9dgtsnkn] {
        max-width: 460px;
    }
}

@media (max-width: 600px) {
    .login-right[b-0n9dgtsnkn] {
        padding: 28px 16px;
    }
    .login-card[b-0n9dgtsnkn] {
        padding: 32px 26px;
    }
}

@media (max-width: 480px) {
    .login-right[b-0n9dgtsnkn] {
        padding: 24px 14px;
    }
    .login-card[b-0n9dgtsnkn] {
        padding: 28px 22px;
        gap: 16px;
    }
    .input[b-0n9dgtsnkn],
    .form-control[b-0n9dgtsnkn] {
        font-size: 16px;   /* defeat iOS focus-zoom */
    }
    .brand h1[b-0n9dgtsnkn] {
        font-size: 22px;
    }
}
/* /Pages/ManageTenants.razor.rz.scp.css */
/* All colors flow from /wwwroot/css/themes.css CSS variables.
   Light theme renders white-on-dark text by default; toggling .dark-theme on the
   <body> swaps every var(--*) value to the dark palette automatically. */

/* ── Layout ──────────────────────────────────────────────────────────────── */

.employee-dashboard-container[b-jlgx5f5jzk] {
    display: flex;
    min-height: 100vh;
    background-color: var(--bg-primary);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.sidebar[b-jlgx5f5jzk] {
    width: 280px;
    background-color: var(--bg-sidebar);
    color: var(--text-sidebar);
    position: fixed;
    height: 100vh;
    left: 0;
    top: 0;
    z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary);
}

.main-content[b-jlgx5f5jzk] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary);
    min-height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
}

.employee-details-section[b-jlgx5f5jzk] {
    padding: 30px 40px;
    background-color: var(--bg-primary);
}

.section-header[b-jlgx5f5jzk] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 24px;
}

.section-title[b-jlgx5f5jzk] {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 30px 0;
}

.action-bar[b-jlgx5f5jzk] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.search-box[b-jlgx5f5jzk] {
    position: relative;
    display: flex;
    align-items: center;
}

.search-input[b-jlgx5f5jzk] {
    padding: 10px 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    width: 250px;
    outline: none;
}

.search-input:focus[b-jlgx5f5jzk] {
    border-color: var(--input-focus);
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.15);
}

.search-input[b-jlgx5f5jzk]::placeholder {
    color: var(--input-placeholder);
}

.btn[b-jlgx5f5jzk] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s ease;
    border: 1px solid transparent;
}

.btn-primary[b-jlgx5f5jzk] {
    background-color: var(--btn-primary-bg);
    color: var(--btn-primary-text);
}

.btn-primary:hover[b-jlgx5f5jzk] {
    background-color: var(--btn-primary-hover);
    transform: translateY(-1px);
}

.btn-outline[b-jlgx5f5jzk] {
    background-color: var(--btn-secondary-bg);
    color: var(--btn-secondary-text);
    border-color: var(--btn-secondary-border);
}

.btn-outline:hover[b-jlgx5f5jzk] {
    background-color: var(--btn-secondary-hover);
}

.employee-table-section[b-jlgx5f5jzk] {
    background-color: var(--card-bg);
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid var(--card-border);
    box-shadow: var(--card-shadow);
    margin-bottom: 24px;
}

.employee-table[b-jlgx5f5jzk] {
    width: 100%;
    border-collapse: collapse;
}

.employee-table thead[b-jlgx5f5jzk] {
    background-color: var(--bg-secondary);
}

.employee-table th[b-jlgx5f5jzk] {
    padding: 16px;
    text-align: left;
    font-weight: 600;
    font-size: 14px;
    color: var(--text-secondary);
    border-bottom: 2px solid var(--border-primary);
}

.employee-table tbody tr[b-jlgx5f5jzk] {
    border-bottom: 1px solid var(--border-primary);
    transition: background-color 0.2s ease;
}

.employee-table tbody tr:hover[b-jlgx5f5jzk] {
    background-color: var(--bg-secondary);
}

.employee-table td[b-jlgx5f5jzk] {
    padding: 16px;
    font-size: 14px;
    color: var(--text-primary);
}

/* ── Right-slide edit panel ──────────────────────────────────────────────── */

.edit-panel-overlay[b-jlgx5f5jzk] {
    position: fixed;
    inset: 0;
    background-color: rgba(15, 23, 42, 0.45);
    z-index: 2000;
    display: flex;
    justify-content: flex-end;
    animation: fadeIn-b-jlgx5f5jzk 0.2s ease;
}

.edit-panel[b-jlgx5f5jzk] {
    width: 480px;
    max-width: 100%;
    background-color: var(--card-bg);
    color: var(--text-primary);
    height: 100vh;
    display: flex;
    flex-direction: column;
    box-shadow: var(--shadow-xl);
    animation: slideIn-b-jlgx5f5jzk 0.2s ease;
}

.edit-panel-header[b-jlgx5f5jzk] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 24px;
    border-bottom: 1px solid var(--border-primary);
}

.edit-panel-header h3[b-jlgx5f5jzk] {
    margin: 0;
    color: var(--text-primary);
    font-size: 18px;
}

.close-btn[b-jlgx5f5jzk] {
    background: transparent;
    border: none;
    color: var(--text-muted);
    font-size: 24px;
    cursor: pointer;
    line-height: 1;
}

.close-btn:hover[b-jlgx5f5jzk] {
    color: var(--text-primary);
}

.edit-panel-body[b-jlgx5f5jzk] {
    flex: 1;
    padding: 20px 24px;
    overflow-y: auto;
}

.edit-panel-footer[b-jlgx5f5jzk] {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    padding: 16px 24px;
    border-top: 1px solid var(--border-primary);
}

@keyframes fadeIn-b-jlgx5f5jzk {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes slideIn-b-jlgx5f5jzk {
    from { transform: translateX(100%); }
    to { transform: translateX(0); }
}

/* ── Form helpers ────────────────────────────────────────────────────────── */

.form-label[b-jlgx5f5jzk] {
    display: block;
    margin: 1rem 0 0.25rem;
    font-weight: 500;
    color: var(--text-primary);
}

.form-input[b-jlgx5f5jzk] {
    display: block;
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    margin-top: 0.25rem;
}

.form-input:focus[b-jlgx5f5jzk] {
    outline: none;
    border-color: var(--input-focus);
    box-shadow: 0 0 0 2px rgba(30, 64, 175, 0.15);
}

.form-input:disabled[b-jlgx5f5jzk] {
    background-color: var(--bg-tertiary);
    color: var(--text-muted);
    cursor: not-allowed;
}

.form-hint[b-jlgx5f5jzk] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8rem;
    color: var(--text-muted);
}

.form-checkbox[b-jlgx5f5jzk] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 1.5rem 0 0.5rem;
    font-weight: 500;
    color: var(--text-primary);
}

.required[b-jlgx5f5jzk] {
    color: var(--error);
}

.alert[b-jlgx5f5jzk] {
    padding: 0.75rem 1rem;
    border-radius: 8px;
    margin-bottom: 1rem;
    font-size: 0.9rem;
}

.alert-error[b-jlgx5f5jzk] {
    background: var(--error-bg);
    border: 1px solid var(--error);
    color: var(--error);
}

.status-badge[b-jlgx5f5jzk] {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 9999px;
    font-size: 12px;
    font-weight: 600;
}

.status-active[b-jlgx5f5jzk] {
    background: var(--success-bg);
    color: var(--success);
}

.status-inactive[b-jlgx5f5jzk] {
    background: var(--bg-tertiary);
    color: var(--text-muted);
}

.btn-icon[b-jlgx5f5jzk] {
    background: transparent;
    border: 1px solid var(--border-primary);
    color: var(--text-secondary);
    padding: 6px 12px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
    margin-right: 0.5rem;
}

.btn-icon:hover[b-jlgx5f5jzk] {
    background: var(--bg-secondary);
    color: var(--text-primary);
}

.btn-icon.btn-danger[b-jlgx5f5jzk] {
    color: var(--error);
    border-color: var(--error);
}

.btn-icon.btn-danger:hover[b-jlgx5f5jzk] {
    background: var(--error-bg);
}

.actions-col[b-jlgx5f5jzk] {
    text-align: right;
    white-space: nowrap;
}

.empty[b-jlgx5f5jzk] {
    text-align: center;
    color: var(--text-muted);
    padding: 2rem;
}

.loading-state[b-jlgx5f5jzk],
.error-state[b-jlgx5f5jzk] {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--text-secondary);
}

/* ── Live "similar tenant" suggestions under the Name field ──────────────
   Shown as the user types. Visually distinct from the input (subtle bg
   tint, soft border) so it reads as advisory, not as part of the form. */

.name-suggestions[b-jlgx5f5jzk] {
    margin-top: 0.5rem;
    border: 1px solid var(--border-primary);
    border-radius: 8px;
    background: var(--bg-secondary);
    overflow: hidden;
    max-height: 220px;
    overflow-y: auto;
    animation: fadeIn-b-jlgx5f5jzk 0.15s ease;
}

.name-suggestions-header[b-jlgx5f5jzk] {
    padding: 6px 12px;
    font-size: 11px;
    font-weight: 700;
    color: var(--text-muted);
    background: var(--bg-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.name-suggestion-item[b-jlgx5f5jzk] {
    display: flex;
    align-items: baseline;
    gap: 10px;
    padding: 8px 12px;
    border-top: 1px solid var(--border-primary);
    font-size: 13px;
    color: var(--text-primary);
}

.name-suggestion-item strong[b-jlgx5f5jzk] {
    color: var(--text-secondary);
    font-size: 12px;
    min-width: 70px;
    font-weight: 700;
}

/* ── Similarity-warning modal (≥ 80% match on Create) ──────────────────────
   Centred, sits above the slide-in edit panel. Custom scaleIn animation —
   the panel's slideIn keyframe is wrong for a centred dialog. */

.similarity-confirm-overlay[b-jlgx5f5jzk] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    z-index: 3000;          /* above .edit-panel-overlay (2000) */
    display: flex;
    align-items: center;
    justify-content: center;
    animation: fadeIn-b-jlgx5f5jzk 0.18s ease;
}

.similarity-confirm-modal[b-jlgx5f5jzk] {
    width: min(460px, 92vw);
    background: var(--card-bg);
    color: var(--text-primary);
    border-radius: 12px;
    box-shadow: var(--shadow-xl);
    overflow: hidden;
    animation: scaleIn-b-jlgx5f5jzk 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes scaleIn-b-jlgx5f5jzk {
    from { opacity: 0; transform: scale(0.94); }
    to   { opacity: 1; transform: scale(1); }
}

.similarity-confirm-header[b-jlgx5f5jzk] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 20px;
    border-bottom: 1px solid var(--border-primary);
    background: #fff8e1;     /* soft amber — "warning, not error" */
}

.similarity-confirm-header i[b-jlgx5f5jzk] {
    color: #c08400;
    font-size: 22px;
    line-height: 1;
}

.similarity-confirm-header h3[b-jlgx5f5jzk] {
    margin: 0;
    font-size: 17px;
    color: #5d4400;
    font-weight: 700;
}

.similarity-confirm-body[b-jlgx5f5jzk] {
    padding: 18px 20px;
    font-size: 14px;
    line-height: 1.5;
}

.similarity-confirm-body p[b-jlgx5f5jzk] {
    margin: 0 0 10px 0;
}

.similarity-confirm-body p:last-of-type[b-jlgx5f5jzk] {
    margin: 12px 0 0 0;
    font-weight: 500;
}

.similarity-match-list[b-jlgx5f5jzk] {
    list-style: none;
    margin: 12px 0 0;
    padding: 0;
    border: 1px solid var(--border-primary);
    border-radius: 8px;
    overflow: hidden;
    background: var(--bg-secondary);
}

.similarity-match-list li[b-jlgx5f5jzk] {
    display: grid;
    grid-template-columns: 80px 1fr auto;
    gap: 10px;
    align-items: center;
    padding: 10px 12px;
    border-top: 1px solid var(--border-primary);
    font-size: 13px;
}

.similarity-match-list li:first-child[b-jlgx5f5jzk] {
    border-top: none;
}

.similarity-match-list strong[b-jlgx5f5jzk] {
    color: var(--text-secondary);
    font-size: 12px;
    font-weight: 700;
}

.similarity-pct[b-jlgx5f5jzk] {
    font-size: 12px;
    color: #c08400;
    font-weight: 600;
    white-space: nowrap;
}

.similarity-confirm-footer[b-jlgx5f5jzk] {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    padding: 14px 20px;
    border-top: 1px solid var(--border-primary);
    background: var(--bg-secondary);
}

/* ── ENT-01: tenant logo upload ──────────────────────────────────────────── */

.logo-upload[b-jlgx5f5jzk] {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    margin-top: 0.25rem;
}

.logo-preview[b-jlgx5f5jzk] {
    width: 72px;
    height: 72px;
    object-fit: cover;
    border-radius: 8px;
    border: 1px solid var(--border-primary);
    background: var(--bg-secondary);
    flex: 0 0 auto;
}

.logo-placeholder[b-jlgx5f5jzk] {
    width: 72px;
    height: 72px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    border: 1px dashed var(--border-primary);
    background: var(--bg-secondary);
    color: var(--text-muted);
    font-size: 12px;
    text-align: center;
    flex: 0 0 auto;
}

.logo-upload-controls[b-jlgx5f5jzk] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.logo-upload-controls input[type="file"][b-jlgx5f5jzk] {
    font-size: 12.5px;
    color: var(--text-secondary);
    max-width: 100%;
}

.btn-link-danger[b-jlgx5f5jzk] {
    align-self: flex-start;
    background: none;
    border: none;
    padding: 0;
    color: var(--error);
    font-size: 12.5px;
    cursor: pointer;
    text-decoration: underline;
}

.btn-link-danger:hover[b-jlgx5f5jzk] {
    opacity: 0.8;
}

/* ── ENT-01: registration-documents section (edit panel) ─────────────────
   Two single-slot docs (OPL, CORN) + up to 10 additional. Cards reuse the
   same var(--*) palette so they track the light/dark theme automatically. */

.doc-section[b-jlgx5f5jzk] {
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--border-primary);
}

.doc-section-title[b-jlgx5f5jzk] {
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-secondary);
    margin-bottom: 0.75rem;
}

.doc-slot[b-jlgx5f5jzk] {
    margin-bottom: 1.25rem;
}

.doc-slot-head[b-jlgx5f5jzk] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.5rem;
}

.doc-slot-label[b-jlgx5f5jzk] {
    font-weight: 600;
    font-size: 13px;
    color: var(--text-primary);
}

.doc-empty[b-jlgx5f5jzk] {
    font-size: 13px;
    color: var(--text-muted);
    padding: 0.5rem 0.75rem;
    background: var(--bg-secondary);
    border: 1px dashed var(--border-primary);
    border-radius: 8px;
    margin-bottom: 0.5rem;
}

.doc-upload-row[b-jlgx5f5jzk] {
    margin-top: 0.5rem;
}

.doc-upload-row input[type="file"][b-jlgx5f5jzk] {
    font-size: 12.5px;
    color: var(--text-secondary);
    max-width: 100%;
}

.doc-card[b-jlgx5f5jzk] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border: 1px solid var(--border-primary);
    border-radius: 8px;
    background: var(--bg-secondary);
    margin-bottom: 0.5rem;
}

.doc-thumb-link[b-jlgx5f5jzk] {
    flex: 0 0 auto;
    line-height: 0;
}

.doc-thumb[b-jlgx5f5jzk] {
    width: 44px;
    height: 44px;
    object-fit: cover;
    border-radius: 6px;
    border: 1px solid var(--border-primary);
}

.doc-badge[b-jlgx5f5jzk] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.5px;
    color: #fff;
    background: var(--text-muted);
}

.doc-badge-pdf[b-jlgx5f5jzk]  { background: #c0392b; }
.doc-badge-doc[b-jlgx5f5jzk]  { background: #2b579a; }
.doc-badge-file[b-jlgx5f5jzk] { background: var(--text-muted); }

.doc-meta[b-jlgx5f5jzk] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.doc-filename[b-jlgx5f5jzk] {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.doc-filename:hover[b-jlgx5f5jzk] {
    text-decoration: underline;
}

.doc-subtle[b-jlgx5f5jzk] {
    font-size: 11.5px;
    color: var(--text-muted);
}

.doc-busy[b-jlgx5f5jzk] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--text-secondary);
    margin-top: 0.5rem;
}

/* ========================================================================
   Responsive — ManageTenants
   ------------------------------------------------------------------------
   Mobile-first reading bottom-up. Mirrors AllSystemUsers.razor.css's
   approach: sidebar collapses to drawer at 768px (handled by the shared
   PortalSidebar component), main-content drops its margin, the action bar
   wraps with a full-width search, and the tenant table scrolls
   horizontally inside its wrapper instead of breaking the layout.
   ======================================================================== */

/* iOS Safari address-bar fallback for full-page shells. */
.employee-dashboard-container[b-jlgx5f5jzk] {
    min-height: 100dvh;
}

.sidebar[b-jlgx5f5jzk] {
    height: 100dvh;
}

.main-content[b-jlgx5f5jzk] {
    min-height: 100dvh;
}

@media (max-width: 1200px) {
    .sidebar[b-jlgx5f5jzk] {
        width: 250px;
    }
    .main-content[b-jlgx5f5jzk] {
        margin-left: 250px;
    }
}

@media (max-width: 768px) {
    /* Sidebar slides in as a drawer at this breakpoint via the shared
       PortalSidebar component; main content takes the full width.
       The wrapper itself collapses to zero so SharedHeader anchors at
       top: 0 — see Dashboard.razor.css for the full rationale. */
    .employee-dashboard-container[b-jlgx5f5jzk] {
        flex-direction: column;
    }
    .sidebar[b-jlgx5f5jzk] {
        position: relative;
        width: 100%;
        height: 0;
        min-height: 0;
        overflow: visible;
        background: transparent;
        border: 0;
    }
    .main-content[b-jlgx5f5jzk] {
        margin-left: 0;
    }
    .employee-details-section[b-jlgx5f5jzk] {
        padding: 20px 16px;
    }
    .section-header[b-jlgx5f5jzk] {
        flex-direction: column;
        align-items: flex-start;
        gap: 16px;
    }
    .action-bar[b-jlgx5f5jzk] {
        width: 100%;
        flex-wrap: wrap;
    }
    .search-box[b-jlgx5f5jzk] {
        flex: 1 1 auto;
        min-width: 0;
    }
    .search-input[b-jlgx5f5jzk] {
        width: 100%;
    }
    /* Wide tenant table: enable horizontal scroll inside its container so
       the page itself doesn't gain a horizontal scrollbar. */
    .employee-table-section[b-jlgx5f5jzk] {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .employee-table[b-jlgx5f5jzk] {
        min-width: 640px;
        font-size: 13px;
    }
    .employee-table th[b-jlgx5f5jzk],
    .employee-table td[b-jlgx5f5jzk] {
        padding: 12px 10px;
        white-space: nowrap;
    }
}

@media (max-width: 600px) {
    .section-title[b-jlgx5f5jzk] {
        font-size: 20px;
    }
    /* Live "similar tenants" suggestion card adapts to narrow phones. */
    .name-suggestion-item[b-jlgx5f5jzk] {
        font-size: 12.5px;
    }
    .name-suggestion-item strong[b-jlgx5f5jzk] {
        min-width: 56px;
    }
}

@media (max-width: 480px) {
    .employee-details-section[b-jlgx5f5jzk] {
        padding: 16px 12px;
    }
    /* Edit/Deactivate row buttons need WCAG-compliant 44×44 touch targets. */
    .btn-icon[b-jlgx5f5jzk] {
        min-width: 44px;
        min-height: 44px;
        padding: 6px 10px;
    }
    /* Edit panel becomes a full-screen sheet on phones rather than a
       narrow drawer that would crowd the form fields. */
    .edit-panel[b-jlgx5f5jzk] {
        width: 100% !important;
        max-width: none;
        height: 100%;
        border-radius: 0;
    }
    /* Similarity-warning modal: edge-padded so the confirmation buttons
       have breathing room on the smallest screens. */
    .similarity-confirm-modal[b-jlgx5f5jzk] {
        width: min(92vw, 360px);
    }
    .similarity-confirm-body[b-jlgx5f5jzk],
    .similarity-confirm-header[b-jlgx5f5jzk],
    .similarity-confirm-footer[b-jlgx5f5jzk] {
        padding-left: 16px;
        padding-right: 16px;
    }
    /* Confirmation footer stacks (Cancel above, Create-anyway below) so
       both buttons fit a 320px iPhone SE without being squeezed. */
    .similarity-confirm-footer[b-jlgx5f5jzk] {
        flex-direction: column-reverse;
    }
    .similarity-confirm-footer .btn[b-jlgx5f5jzk] {
        width: 100%;
    }
    /* Match list rows compress: code | name | match-pct on three lines */
    .similarity-match-list li[b-jlgx5f5jzk] {
        grid-template-columns: 1fr auto;
        gap: 4px 10px;
    }
    .similarity-match-list li strong[b-jlgx5f5jzk] {
        grid-column: 1 / -1;
    }
}
/* /Pages/PartnerUserCreate.razor.rz.scp.css */
/* All colors flow from /wwwroot/css/themes.css CSS variables.
   Light theme renders white-on-dark text by default; toggling .dark-theme on the
   <body> swaps every var(--*) value to the dark palette automatically. */

/* ── Layout shell ────────────────────────────────────────────────────────── */

.partner-user-container[b-s570kb2jpq] {
    display: flex;
    min-height: 100vh;
    background-color: var(--bg-primary);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.sidebar[b-s570kb2jpq] {
    width: 280px;
    background-color: var(--bg-sidebar);
    color: var(--text-sidebar);
    position: fixed;
    height: 100vh;
    left: 0;
    top: 0;
    z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary);
}

.main-content[b-s570kb2jpq] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary);
    min-height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
}

/* ── Form shell ──────────────────────────────────────────────────────────── */

.form-shell[b-s570kb2jpq] {
    margin: 24px 32px;
    padding: 28px 32px;
    background-color: var(--card-bg);
    border: 1px solid var(--border-primary);
    border-radius: 12px;
    color: var(--text-primary);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
    max-width: 1100px;
}

.form-shell h2[b-s570kb2jpq] {
    font-size: 22px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 4px 0;
}

.form-hint[b-s570kb2jpq] {
    color: var(--text-secondary);
    font-size: 13.5px;
    margin: 0 0 20px 0;
    line-height: 1.5;
}

.form-hint strong[b-s570kb2jpq] {
    color: var(--text-primary);
}

/* ── Rows / fields ───────────────────────────────────────────────────────── */

.row[b-s570kb2jpq] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 18px 24px;
    margin-bottom: 16px;
}

.field[b-s570kb2jpq] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.field.empty[b-s570kb2jpq] {
    visibility: hidden;
}

.field label[b-s570kb2jpq] {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 6px;
}

.req[b-s570kb2jpq] {
    color: var(--accent-danger, #d23737);
    font-weight: 700;
}

.input[b-s570kb2jpq] {
    width: 100%;
    padding: 9px 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    box-sizing: border-box;
    outline: none;
}

.input:focus[b-s570kb2jpq] {
    border-color: var(--accent-primary, #2f6fed);
    box-shadow: 0 0 0 3px rgba(47, 111, 237, 0.15);
}

.input-locked[b-s570kb2jpq] {
    background-color: var(--bg-disabled, var(--bg-primary));
    color: var(--text-secondary);
    cursor: not-allowed;
}

.field .validation-message[b-s570kb2jpq] {
    color: var(--accent-danger, #d23737);
    font-size: 12px;
    margin-top: 4px;
}

/* ── Alerts ──────────────────────────────────────────────────────────────── */

.alert[b-s570kb2jpq] {
    position: relative;
    padding: 12px 36px 12px 14px;
    border-radius: 8px;
    margin-bottom: 16px;
    font-size: 14px;
    line-height: 1.4;
}

.alert-success[b-s570kb2jpq] {
    background-color: var(--alert-success-bg, #e8f5e9);
    color: var(--alert-success-fg, #1b5e20);
    border: 1px solid var(--alert-success-border, #a5d6a7);
}

.alert-error[b-s570kb2jpq] {
    background-color: var(--alert-error-bg, #fdecea);
    color: var(--alert-error-fg, #8c1d18);
    border: 1px solid var(--alert-error-border, #f5c2c0);
}

.alert-close[b-s570kb2jpq] {
    position: absolute;
    right: 8px;
    top: 6px;
    background: transparent;
    border: 0;
    color: inherit;
    font-size: 18px;
    cursor: pointer;
    line-height: 1;
}

/* ── Buttons ─────────────────────────────────────────────────────────────── */

.button-row[b-s570kb2jpq] {
    display: flex;
    gap: 12px;
    justify-content: flex-end;
    margin-top: 24px;
    padding-top: 18px;
    border-top: 1px solid var(--border-primary);
}

.btn-primary[b-s570kb2jpq],
.btn-secondary[b-s570kb2jpq] {
    padding: 9px 20px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    border: 1px solid transparent;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.btn-primary[b-s570kb2jpq] {
    background-color: var(--accent-primary, #2f6fed);
    color: #fff;
}

.btn-primary:hover:not(:disabled)[b-s570kb2jpq] {
    filter: brightness(1.05);
}

.btn-secondary[b-s570kb2jpq] {
    background-color: var(--card-bg);
    color: var(--text-primary);
    border-color: var(--border-primary);
}

.btn-secondary:hover:not(:disabled)[b-s570kb2jpq] {
    background-color: var(--bg-primary);
}

.btn-primary:disabled[b-s570kb2jpq],
.btn-secondary:disabled[b-s570kb2jpq] {
    opacity: 0.65;
    cursor: not-allowed;
}

.btn-spinner[b-s570kb2jpq] {
    width: 14px;
    height: 14px;
    border: 2px solid rgba(255, 255, 255, 0.3);
    border-top-color: #fff;
    border-radius: 50%;
    display: inline-block;
    animation: spin-b-s570kb2jpq 0.8s linear infinite;
}

@keyframes spin-b-s570kb2jpq {
    to { transform: rotate(360deg); }
}

/* ── Responsive ──────────────────────────────────────────────────────────── */

@media (max-width: 900px) {
    .row[b-s570kb2jpq] {
        grid-template-columns: 1fr;
    }
    .main-content[b-s570kb2jpq] {
        margin-left: 0;
    }
    .sidebar[b-s570kb2jpq] {
        position: static;
        width: 100%;
        height: auto;
    }
}

/* Phone portrait: stack everything single-column, shrink padding so the
   form is usable inside a phone viewport. The form-shell's max-width
   constraint goes away so the form fills the screen edge-to-edge. */
@media (max-width: 768px) {
    .row[b-s570kb2jpq],
    .form-row[b-s570kb2jpq],
    .form-grid[b-s570kb2jpq] {
        grid-template-columns: 1fr;
    }
    .form-shell[b-s570kb2jpq],
    .container[b-s570kb2jpq] {
        padding: 16px;
        max-width: 100%;
    }
    .actions[b-s570kb2jpq],
    .form-actions[b-s570kb2jpq] {
        flex-direction: column;
        align-items: stretch;
    }
}

/* Small phone: single-column buttons + tighter padding. */
@media (max-width: 480px) {
    .form-shell[b-s570kb2jpq],
    .container[b-s570kb2jpq] {
        padding: 12px;
    }
    .btn[b-s570kb2jpq],
    .btn-primary[b-s570kb2jpq],
    .btn-secondary[b-s570kb2jpq] {
        width: 100%;
    }
    h1[b-s570kb2jpq], h2[b-s570kb2jpq] { font-size: 20px; }
}

/* Phase-O: OnePortal-access toggle row + confirmation modal.
   The toggle sits below the form fields, above the submit button. The
   modal overlays the page when the toggle is on at submit time. */

.oneportal-toggle[b-s570kb2jpq] {
    margin: 14px 0 4px;
    padding: 12px 14px;
    background: #f8f9fc;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
}

.oneportal-toggle .toggle-label[b-s570kb2jpq] {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    font-weight: 600;
    color: #1e293b;
    margin: 0;
}

.oneportal-toggle .toggle-label input[type="checkbox"][b-s570kb2jpq] {
    width: 18px;
    height: 18px;
    cursor: pointer;
    accent-color: #001F57;
}

.oneportal-toggle .toggle-text[b-s570kb2jpq] {
    font-size: 14px;
}

.oneportal-toggle .form-hint[b-s570kb2jpq] {
    display: block;
    margin-top: 6px;
    margin-left: 28px;
    color: #64748b;
    font-size: 12.5px;
    line-height: 1.45;
}

.modal-overlay[b-s570kb2jpq] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    z-index: 3000;
    display: flex;
    align-items: center;
    justify-content: center;
    animation: fadeIn 0.18s ease;
}

.modal-card[b-s570kb2jpq] {
    width: min(460px, 92vw);
    background: var(--card-bg, white);
    border-radius: 12px;
    padding: 24px;
    box-shadow: 0 20px 50px rgba(15, 23, 42, 0.25);
    animation: scaleIn-b-s570kb2jpq 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}

.modal-card h3[b-s570kb2jpq] {
    margin: 0 0 12px;
    font-size: 18px;
    color: #001F57;
}

.modal-card p[b-s570kb2jpq] {
    margin: 0 0 10px;
    color: #334155;
    line-height: 1.5;
    font-size: 14px;
}

.modal-actions[b-s570kb2jpq] {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    margin-top: 18px;
}

@keyframes scaleIn-b-s570kb2jpq {
    from { opacity: 0; transform: scale(0.94); }
    to   { opacity: 1; transform: scale(1); }
}

@media (max-width: 480px) {
    .modal-actions[b-s570kb2jpq] {
        flex-direction: column-reverse;
    }
    .modal-actions .btn-primary[b-s570kb2jpq],
    .modal-actions .btn-secondary[b-s570kb2jpq] {
        width: 100%;
    }
}
/* /Pages/PortalAccessManagement.razor.rz.scp.css */
/* Main Container */
.portal-access-container[b-0o7c93cerf] {
    display: flex;
    min-height: 100vh;
    background-color: var(--bg-primary);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    /* Ensure modals are not clipped */
    overflow: visible;
    position: relative;
}

/* Sidebar */
.sidebar[b-0o7c93cerf] {
    width: 280px;
    background-color: var(--bg-sidebar);
    color: white;
    position: fixed;
    height: 100vh;
    left: 0;
    top: 0;
    z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary);
}

/* Main Content Area */
.main-content[b-0o7c93cerf] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary);
    height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
    /* Ensure modals are not clipped */
    position: relative;
}

/* Form Container */
.form-shell[b-0o7c93cerf] {
    background: var(--card-bg);
    margin: 40px;
    border-radius: 12px;
    padding: 40px;
    box-shadow: var(--shadow-md);
    border: 1px solid var(--card-border);
}

.form-shell h2[b-0o7c93cerf] {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 32px;
    border-bottom: 2px solid var(--border-primary);
    padding-bottom: 16px;
}

/* Tab Navigation */
.tab-navigation[b-0o7c93cerf] {
    display: flex;
    gap: 8px;
    margin-bottom: 24px;
    border-bottom: 2px solid var(--border-primary);
}

.tab-button[b-0o7c93cerf] {
    padding: 12px 24px;
    background-color: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    cursor: pointer;
    font-weight: 600;
    font-size: 14px;
    color: var(--text-secondary);
    transition: all 0.2s ease;
    margin-bottom: -2px;
}

.tab-button:hover[b-0o7c93cerf] {
    color: var(--text-primary);
    background-color: var(--bg-primary);
}

.tab-button.active[b-0o7c93cerf] {
    color: var(--accent-primary, #3b82f6);
    border-bottom-color: var(--accent-primary, #3b82f6);
}

/* Tab Content */
.tab-content[b-0o7c93cerf] {
    margin-top: 24px;
}

/* Section Headers */
.section-header[b-0o7c93cerf] {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 24px;
}

/* Data Tables */
.data-table[b-0o7c93cerf] {
    width: 100%;
    border-collapse: collapse;
    margin-top: 16px;
    background-color: var(--card-bg);
    border-radius: 8px;
    overflow: hidden;
}

.data-table thead[b-0o7c93cerf] {
    background-color: var(--bg-primary);
}

.data-table th[b-0o7c93cerf] {
    padding: 12px 16px;
    text-align: left;
    font-weight: 600;
    font-size: 14px;
    color: var(--text-primary);
    border-bottom: 2px solid var(--border-primary);
}

.data-table td[b-0o7c93cerf] {
    padding: 12px 16px;
    font-size: 14px;
    color: var(--text-secondary);
    border-bottom: 1px solid var(--border-primary);
}

.data-table tbody tr:hover[b-0o7c93cerf] {
    background-color: var(--bg-primary);
}

.data-table tbody tr:last-child td[b-0o7c93cerf] {
    border-bottom: none;
}

/* Form Grid */
.form-grid[b-0o7c93cerf] {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.row[b-0o7c93cerf] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}

/* Field Styling */
.field[b-0o7c93cerf] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.field label[b-0o7c93cerf] {
    font-weight: 600;
    color: var(--text-secondary);
    font-size: 14px;
    margin-bottom: 4px;
}

.field input[b-0o7c93cerf],
.field select[b-0o7c93cerf] {
    border: 1px solid var(--input-border);
    border-radius: 8px;
    padding: 8px 20px;
    font-size: 14px;
    color: var(--text-primary);
    background-color: var(--input-bg);
    outline: none;
    width: 100%;
    transition: all 0.2s ease;
    min-height: 40px;
}

.field input:focus[b-0o7c93cerf],
.field select:focus[b-0o7c93cerf] {
    border-color: var(--input-focus);
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
}

.field input[b-0o7c93cerf]::placeholder {
    color: var(--input-placeholder);
}

.field select:disabled[b-0o7c93cerf] {
    background-color: var(--input-bg-disabled, #f3f4f6);
    cursor: not-allowed;
}

/* Button Styling */
.button-row[b-0o7c93cerf] {
    display: flex;
    justify-content: flex-end;
    gap: 16px;
    margin-top: 24px;
    padding-top: 24px;
    border-top: 1px solid var(--border-primary);
}

.btn-primary[b-0o7c93cerf] {
    background-color: var(--btn-primary-bg);
    color: var(--btn-primary-text);
    border: none;
    padding: 12px 24px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: 600;
    font-size: 14px;
    transition: all 0.2s ease;
    min-width: 100px;
}

.btn-primary:hover:not(:disabled)[b-0o7c93cerf] {
    background-color: var(--btn-primary-hover);
    transform: translateY(-1px);
    box-shadow: 0 4px 8px rgba(30, 64, 175, 0.3);
}

.btn-primary:disabled[b-0o7c93cerf] {
    opacity: 0.5;
    cursor: not-allowed;
}

.btn-secondary[b-0o7c93cerf] {
    background-color: var(--btn-secondary-bg);
    color: var(--btn-secondary-text);
    border: 1px solid var(--btn-secondary-border);
    padding: 12px 24px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: 600;
    font-size: 14px;
    transition: all 0.2s ease;
    min-width: 100px;
}

.btn-secondary:hover[b-0o7c93cerf] {
    background-color: var(--btn-secondary-hover);
    border-color: var(--text-tertiary);
    transform: translateY(-1px);
}

/* Modal Styling */
.modal-overlay[b-0o7c93cerf] {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    background-color: rgba(0, 0, 0, 0.5) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    z-index: 9999 !important;
    visibility: visible !important;
    opacity: 1 !important;
    pointer-events: auto !important;
}

.modal[b-0o7c93cerf] {
    background-color: var(--card-bg) !important;
    border-radius: 12px !important;
    width: 90% !important;
    max-width: 550px !important;
    max-height: 42.5vh !important;
    overflow-y: auto !important;
    box-shadow: var(--shadow-lg) !important;
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    position: relative !important;
}

.modal-header[b-0o7c93cerf] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 24px;
    border-bottom: 1px solid var(--border-primary);
}

.modal-header h3[b-0o7c93cerf] {
    margin: 0;
    font-size: 20px;
    font-weight: 700;
    color: var(--text-primary);
}

.modal-close[b-0o7c93cerf] {
    background: none;
    border: none;
    font-size: 24px;
    color: var(--text-secondary);
    cursor: pointer;
    padding: 0;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 4px;
    transition: all 0.2s ease;
}

.modal-close:hover[b-0o7c93cerf] {
    background-color: var(--bg-primary);
    color: var(--text-primary);
}

.modal-body[b-0o7c93cerf] {
    padding: 24px;
}

/* Section Headings */
.user-accesses-section[b-0o7c93cerf] {
    margin-top: 32px;
    padding-top: 32px;
    border-top: 2px solid var(--border-primary);
}

.user-accesses-section h3[b-0o7c93cerf] {
    font-size: 18px;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 16px;
}

/* Responsive Design */
@media (max-width: 1200px) {
    .row[b-0o7c93cerf] {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .sidebar[b-0o7c93cerf] {
        width: 250px;
    }
    
    .main-content[b-0o7c93cerf] {
        margin-left: 250px;
    }
}

@media (max-width: 768px) {
    .portal-access-container[b-0o7c93cerf] {
        flex-direction: column;
    }
    
    .sidebar[b-0o7c93cerf] {
        position: relative;
        width: 100%;
        height: auto;
    }
    
    .main-content[b-0o7c93cerf] {
        margin-left: 0;
    }
    
    .row[b-0o7c93cerf] {
        grid-template-columns: 1fr;
    }
    
    .form-shell[b-0o7c93cerf] {
        margin: 20px;
        padding: 24px;
    }
    
    .button-row[b-0o7c93cerf] {
        flex-direction: column;
    }
    
    .tab-navigation[b-0o7c93cerf] {
        flex-wrap: wrap;
    }
    
    .tab-button[b-0o7c93cerf] {
        padding: 8px 16px;
        font-size: 12px;
    }
}

@media (max-width: 480px) {
    .form-shell[b-0o7c93cerf] {
        margin: 16px;
        padding: 20px;
    }
    
    .form-shell h2[b-0o7c93cerf] {
        font-size: 20px;
    }
    
    .modal[b-0o7c93cerf] {
        width: 95%;
        margin: 20px;
    }
}

/* Autocomplete Styles */
.autocomplete-container[b-0o7c93cerf] {
    position: relative;
    width: 100%;
}

.autocomplete-input[b-0o7c93cerf] {
    border: 1px solid var(--input-border);
    border-radius: 8px;
    padding: 12px 16px;
    font-size: 14px;
    color: var(--text-primary);
    background-color: var(--input-bg);
    outline: none;
    width: 100%;
    transition: all 0.2s ease;
}

.autocomplete-input:focus[b-0o7c93cerf] {
    border-color: var(--input-focus);
    box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1);
}

.autocomplete-dropdown[b-0o7c93cerf] {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background-color: var(--card-bg);
    border: 1px solid var(--border-primary);
    border-radius: 8px;
    margin-top: 4px;
    max-height: 300px;
    overflow-y: auto;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    z-index: 1000;
}

.autocomplete-item[b-0o7c93cerf] {
    padding: 12px 16px;
    cursor: pointer;
    transition: background-color 0.15s ease;
    border-bottom: 1px solid var(--border-primary);
}

.autocomplete-item:last-child[b-0o7c93cerf] {
    border-bottom: none;
}

.autocomplete-item:hover[b-0o7c93cerf],
.autocomplete-item.highlighted[b-0o7c93cerf] {
    background-color: var(--bg-primary);
}

.autocomplete-item.no-results[b-0o7c93cerf] {
    color: var(--text-secondary);
    cursor: default;
    font-style: italic;
}

.autocomplete-item .user-name[b-0o7c93cerf] {
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 4px;
}

.autocomplete-item .user-email[b-0o7c93cerf] {
    font-size: 12px;
    color: var(--text-secondary);
}


/* /Pages/Portal/PortalPage.razor.rz.scp.css */
.portal-page-container[b-te0rd8zj37] {
    display: flex;
    width: 100%;
    height: 100vh;
    overflow: hidden;
}

/* Fullscreen mode for external portals - no outer sidebar, iframe takes all space */
.portal-page-container.fullscreen[b-te0rd8zj37] {
    display: flex;
}
.portal-page-container.fullscreen .portal-main-section[b-te0rd8zj37] {
    width: 100%;
}
.portal-page-container.fullscreen .portal-iframe-wrapper[b-te0rd8zj37] {
    flex: 1;
}

.portal-sidebar-section[b-te0rd8zj37] {
    flex-shrink: 0;
    height: 100vh;
    overflow-y: auto;
}

.portal-main-section[b-te0rd8zj37] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--bg-primary, #ffffff);
}

.portal-iframe-wrapper[b-te0rd8zj37] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    position: relative;
}

.portal-loading[b-te0rd8zj37] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: 2rem;
}

/* Old spinner styles removed - using LfzSpinner component instead */

.portal-error[b-te0rd8zj37] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: 2rem;
    text-align: center;
}

.portal-error h2[b-te0rd8zj37] {
    margin-bottom: 1rem;
    color: var(--text-primary, #333);
}

.portal-error p[b-te0rd8zj37] {
    margin-bottom: 1.5rem;
    color: var(--text-secondary, #666);
}

.btn[b-te0rd8zj37] {
    padding: 0.5rem 1.5rem;
    border-radius: 0.375rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
    border: 1px solid transparent;
}

.btn-primary[b-te0rd8zj37] {
    background-color: var(--primary-color, #007bff);
    color: white;
}

.btn-primary:hover[b-te0rd8zj37] {
    background-color: var(--primary-hover, #0056b3);
}

.portal-content[b-te0rd8zj37] {
    flex: 1;
    overflow-y: auto;
    padding: 1.5rem;
}

.portal-main-content h2[b-te0rd8zj37] {
    margin-bottom: 1rem;
    color: var(--text-primary, #333);
}

.sub-portals-grid[b-te0rd8zj37] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 1rem;
    margin-top: 2rem;
}

.sub-portal-card[b-te0rd8zj37] {
    padding: 1.5rem;
    border: 1px solid var(--border-color, #e0e0e0);
    border-radius: 0.5rem;
    cursor: pointer;
    transition: all 0.2s;
    text-align: center;
}

.sub-portal-card:hover[b-te0rd8zj37] {
    border-color: var(--primary-color, #007bff);
    box-shadow: 0 2px 8px rgba(0, 123, 255, 0.1);
}

.sub-portal-icon[b-te0rd8zj37] {
    font-size: 2rem;
    color: var(--primary-color, #007bff);
    margin-bottom: 0.5rem;
}

.sub-portal-card h3[b-te0rd8zj37] {
    margin: 0.5rem 0 0.25rem;
    font-size: 1rem;
    color: var(--text-primary, #333);
}

.sub-portal-card p[b-te0rd8zj37] {
    margin: 0;
    font-size: 0.875rem;
    color: var(--text-secondary, #666);
}

.sub-portal-content[b-te0rd8zj37] {
    padding: 1.5rem;
}

.sub-portal-header h2[b-te0rd8zj37] {
    margin-bottom: 0.5rem;
    color: var(--text-primary, #333);
}

.breadcrumb[b-te0rd8zj37] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.875rem;
    color: var(--text-secondary, #666);
    margin-bottom: 1.5rem;
}

.breadcrumb a[b-te0rd8zj37] {
    color: var(--text-secondary, #666);
    text-decoration: none;
}

.breadcrumb a:hover[b-te0rd8zj37] {
    color: var(--primary-color, #007bff);
}

.breadcrumb .separator[b-te0rd8zj37] {
    color: var(--text-tertiary, #999);
}

.breadcrumb .current[b-te0rd8zj37] {
    color: var(--text-primary, #333);
    font-weight: 500;
}
/* /Pages/ResetPassword.razor.rz.scp.css */
/* ===== ONE PORTAL – Reset Password (CSS isolation) ===== */

/* reset sizing */
*[b-kx7h1llweq], *[b-kx7h1llweq]::before, *[b-kx7h1llweq]::after {
    box-sizing: border-box;
}

/* layout: mirror the login page */
.reset-shell[b-kx7h1llweq] {
    --primary: #001F57;
    --heading: #292929;
    --sub: #585858;
    --placeholder: #C9D3E0;
    --border: #254a76;
    --input-h: 55px;
    --input-r: 16px;
    --content-w: 480px;

    display: grid;
    grid-template-columns: 55% 45%;
    min-height: 100vh;
    width: 100%;
}

.reset-left[b-kx7h1llweq] {
    position: relative;
    background: #0b1b33;
}

.reset-img[b-kx7h1llweq] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.reset-right[b-kx7h1llweq] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 40px 56px;
    gap: 16px;
}

.reset-right h1[b-kx7h1llweq] {
    margin: 0 0 10px;
    color: var(--heading);
    font-weight: 800;
    font-size: clamp(24px, 3vw, 32px);
}

/* fields */
.field[b-kx7h1llweq] {
    width: min(var(--content-w), 100%);
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 10px;
}

.field label[b-kx7h1llweq] {
    font-size: 13px;
    font-weight: 700;
    color: #222;
    letter-spacing: .2px;
}

/* base input style — clean white surface, brand-navy focus halo. */
.input[b-kx7h1llweq] {
    width: 100%;
    height: var(--input-h);
    padding: 0 18px;
    border: 1px solid #cbd5e1;          /* slate-300 */
    border-radius: var(--input-r);
    font-size: 15px;
    outline: none;
    background: #ffffff;
    color: #1e293b;                      /* slate-800 */
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.input[b-kx7h1llweq]::placeholder {
    color: #94a3b8;                      /* slate-400 — readable on white */
}

.input:focus[b-kx7h1llweq] {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(0, 31, 87, 0.12);
}

/* validation colors */
.input.valid[b-kx7h1llweq] {
    border-color: #2e7d32;
}
.input.invalid[b-kx7h1llweq] {
    border-color: #c62828;
}
.input.modified[b-kx7h1llweq] {
    box-shadow: inset 0 0 0 1px rgba(0,0,0,.05);
}

/* password toggle */
.password .password-wrap[b-kx7h1llweq] {
    position: relative;
    width: min(var(--content-w), 100%);
}
.password .password-wrap .input[b-kx7h1llweq] {
    width: 100%;
    padding-right: 46px;
}
.password .toggle[b-kx7h1llweq] {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 100%;
    border: 0;
    background: transparent;
    cursor: pointer;
    line-height: 0;
    color: #8aa0b9;
    z-index: 1;
}
.password .toggle:hover[b-kx7h1llweq] {
    color: #ffffff;
}
.password .toggle i[b-kx7h1llweq] {
    font-size: 20px;
    line-height: 1;
}

/* forgot/OK/error alignment */
.ok-message[b-kx7h1llweq],
.error-message[b-kx7h1llweq],
.validation-message[b-kx7h1llweq],
.loading-message[b-kx7h1llweq] {
    font-size: 12px;
    margin-top: 6px;
}

.ok-message[b-kx7h1llweq] {
    color: #0a7a2f;
}
.error-message[b-kx7h1llweq] {
    color: #c62828;
}
.loading-message[b-kx7h1llweq] {
    color: var(--sub);
    font-style: italic;
}

.error-message a[b-kx7h1llweq] {
    color: var(--primary);
    text-decoration: underline;
    font-weight: 600;
}

.error-message a:hover[b-kx7h1llweq] {
    text-decoration: none;
}

/* button */
.btn.primary[b-kx7h1llweq] {
    width: min(var(--content-w), 100%);
    height: var(--input-h);
    border-radius: 22px;
    border: 0;
    background: var(--primary);
    color: #fff;
    font-size: 20px;
    font-weight: 800;
    margin-top: 22px;
    cursor: pointer;
}

.btn.primary:hover[b-kx7h1llweq] {
    filter: brightness(1.05);
}
.btn.primary:active[b-kx7h1llweq] {
    transform: translateY(1px);
}
.btn.primary[disabled][b-kx7h1llweq] {
    opacity: .7;
    cursor: not-allowed;
}

/* ── Responsive ladder ──────────────────────────────────────────────────
   Mobile-first; reads bottom-up. SideImagePanel hide + 100dvh fallback
   live in wwwroot/css/app.css (shared across all auth pages). */

@media (max-width: 960px) {
    .reset-shell[b-kx7h1llweq] {
        grid-template-columns: 1fr;
    }
    .reset-right[b-kx7h1llweq] {
        padding: 28px 22px;
    }
}

@media (max-width: 600px) {
    .reset-right[b-kx7h1llweq] {
        padding: 24px 16px;
    }
}

@media (max-width: 480px) {
    .reset-right[b-kx7h1llweq] {
        padding: 20px 14px;
        gap: 12px;
    }
    .input[b-kx7h1llweq],
    .form-control[b-kx7h1llweq] {
        font-size: 16px;
    }
    .btn.primary[b-kx7h1llweq] {
        width: 100%;
    }
    /* Strength-meter checks reflow to a single column so labels don't
       truncate ("Doesn't look like your email" needs space). */
    .pw-checks[b-kx7h1llweq] {
        grid-template-columns: 1fr;
    }
}

/* === Password strength meter === */
.pw-meter-wrap[b-kx7h1llweq] {
    width: min(var(--content-w), 100%);
    margin-top: 8px;
}

.pw-meter[b-kx7h1llweq] {
    --pct: 0;
    height: 8px;
    width: 100%;
    border-radius: 9999px;
    background: #2b3e57;
    overflow: hidden;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
}

    .pw-meter .bar[b-kx7h1llweq] {
        height: 100%;
        width: calc(var(--pct) * 1%);
        background: linear-gradient(90deg, #c62828 0%, #f9a825 50%, #2e7d32 100%);
        transition: width .25s ease;
    }

.pw-label[b-kx7h1llweq] {
    margin-top: 6px;
    font-size: 12px;
    color: #222;
    font-weight: 700;
    letter-spacing: .2px;
}

.pw-checks[b-kx7h1llweq] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px 14px;
    margin-top: 8px;
    font-size: 12px;
    color: #333;
}

    .pw-checks .ok[b-kx7h1llweq] {
        color: #2e7d32;
        font-weight: 700;
    }

    .pw-checks .bad[b-kx7h1llweq] {
        color: #c62828;
        font-weight: 600;
    }

    .pw-checks .dot[b-kx7h1llweq] {
        display: inline-block;
        width: 8px;
        height: 8px;
        border-radius: 50%;
        margin-right: 6px;
        background: currentColor;
        vertical-align: middle;
    }

/* /Pages/TenantMenuVisibility.razor.rz.scp.css */
/* All colors flow from /wwwroot/css/themes.css CSS variables. */

/* ── Layout ──────────────────────────────────────────────────────────────── */

.employee-dashboard-container[b-8jh5emf0w9] {
    display: flex;
    min-height: 100vh;
    background-color: var(--bg-primary);
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.sidebar[b-8jh5emf0w9] {
    width: 280px;
    background-color: var(--bg-sidebar);
    color: var(--text-sidebar);
    position: fixed;
    height: 100vh;
    left: 0;
    top: 0;
    z-index: 1000;
    overflow-y: auto;
    box-sizing: border-box;
    border-right: 1px solid var(--border-primary);
}

.main-content[b-8jh5emf0w9] {
    flex: 1;
    margin-left: 280px;
    padding: 0;
    background-color: var(--bg-primary);
    min-height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
}

.employee-details-section[b-8jh5emf0w9] {
    padding: 30px 40px;
    background-color: var(--bg-primary);
}

.section-header[b-8jh5emf0w9] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
}

.section-title[b-8jh5emf0w9] {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0;
}

.action-bar[b-8jh5emf0w9] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.filter-select[b-8jh5emf0w9] {
    padding: 10px 12px;
    border: 1px solid var(--input-border);
    border-radius: 8px;
    background-color: var(--input-bg);
    color: var(--text-primary);
    font-size: 14px;
    outline: none;
    cursor: pointer;
    font-weight: 500;
}

.btn[b-8jh5emf0w9] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    border: 1px solid transparent;
}

.btn-outline[b-8jh5emf0w9] {
    background-color: var(--btn-secondary-bg);
    color: var(--btn-secondary-text);
    border-color: var(--btn-secondary-border);
}

.btn-outline:hover[b-8jh5emf0w9] {
    background-color: var(--btn-secondary-hover);
}

.employee-table-section[b-8jh5emf0w9] {
    background-color: var(--card-bg);
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid var(--card-border);
    box-shadow: var(--card-shadow);
    margin-bottom: 24px;
}

.employee-table[b-8jh5emf0w9] {
    width: 100%;
    border-collapse: collapse;
}

.employee-table thead[b-8jh5emf0w9] {
    background-color: var(--bg-secondary);
}

.employee-table th[b-8jh5emf0w9] {
    padding: 16px;
    text-align: left;
    font-weight: 600;
    font-size: 14px;
    color: var(--text-secondary);
    border-bottom: 2px solid var(--border-primary);
}

.employee-table tbody tr[b-8jh5emf0w9] {
    border-bottom: 1px solid var(--border-primary);
}

.employee-table tbody tr:hover[b-8jh5emf0w9] {
    background-color: var(--bg-secondary);
}

.employee-table td[b-8jh5emf0w9] {
    padding: 14px 16px;
    font-size: 14px;
    color: var(--text-primary);
}

/* ── Page-specific helpers ──────────────────────────────────────────────── */

.muted[b-8jh5emf0w9] {
    color: var(--text-muted);
    font-size: 0.9rem;
    margin: 0 0 1rem;
}

.centered[b-8jh5emf0w9] {
    text-align: center;
}

/* Greyed-out checkbox for toggles that are no-ops (Min. Role floor excludes the
   role anyway). The browser dims disabled inputs natively; we add a stronger
   opacity drop + not-allowed cursor so the row reads as informational. */
.toggle-disabled[b-8jh5emf0w9] {
    opacity: 0.35;
    cursor: not-allowed;
}

.code-badge[b-8jh5emf0w9] {
    display: inline-block;
    margin-left: 0.5rem;
    padding: 2px 8px;
    background: var(--bg-tertiary);
    border-radius: 4px;
    color: var(--text-muted);
    font-family: monospace;
    font-size: 12px;
}

.empty[b-8jh5emf0w9] {
    text-align: center;
    color: var(--text-muted);
    padding: 2rem;
}

.loading-state[b-8jh5emf0w9],
.error-state[b-8jh5emf0w9] {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--text-secondary);
}
/* /Pages/TotpChallenge.razor.rz.scp.css */
/* ===== ONE PORTAL – TOTP Challenge (CSS isolation) =====
   Mirrors Email2FA.razor.css so the two MFA challenge pages feel
   visually identical — only the wording and the input shape differ
   (Email = sent code; Totp = code from authenticator app). */

*[b-clx8p86ph5], *[b-clx8p86ph5]::before, *[b-clx8p86ph5]::after { box-sizing: border-box; }

/* two-column layout: image on the left, form on the right */
.twofa-shell[b-clx8p86ph5] {
    --primary: #001F57;
    --heading: #292929;
    --sub: #585858;
    --placeholder: #C9D3E0;
    --border: #254a76;
    --input-h: 55px;
    --input-r: 16px;
    --content-w: 520px;
    display: grid;
    grid-template-columns: 55% 45%;
    min-height: 100vh;
    width: 100%;
}

.twofa-left[b-clx8p86ph5] {
    position: relative;
    background: #0b1b33;
}

.twofa-img[b-clx8p86ph5] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.twofa-right[b-clx8p86ph5] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 40px 56px;
    gap: 16px;
}

    .twofa-right h1[b-clx8p86ph5] {
        margin: 0 0 6px;
        color: var(--heading);
        font-weight: 800;
        font-size: clamp(22px, 3vw, 32px);
    }

    .twofa-right p[b-clx8p86ph5] {
        margin: 0;
        color: var(--sub);
        font-size: 14px;
    }

    .twofa-right label[b-clx8p86ph5] {
        display: block;
        margin-top: 8px;
        font-size: 13px;
        font-weight: 600;
        color: var(--heading);
    }

/* OTP boxes — six 50×50 rounded cells */
.otp-boxes[b-clx8p86ph5] {
    display: flex;
    gap: 10px;
    margin-top: 12px;
    margin-bottom: 8px;
}

/* Plain white surface to match the rest of the form panel — same
   recipe as .backup-input below + every other auth input across the app. */
.otp-input[b-clx8p86ph5] {
    width: 50px;
    height: 50px;
    border: 1px solid #cbd5e1;          /* slate-300 */
    border-radius: 12px;
    background: #ffffff;
    color: #1e293b;                      /* slate-800 */
    font-size: 24px;
    font-weight: 600;
    text-align: center;
    outline: none;
    caret-color: transparent;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

    .otp-input:focus[b-clx8p86ph5] {
        border-color: var(--primary);
        box-shadow: 0 0 0 3px rgba(0, 31, 87, 0.12);
    }

    .otp-input:disabled[b-clx8p86ph5] {
        background: #e0e0e0;
        color: #999;
        border-color: #ccc;
        cursor: not-allowed;
    }

/* Backup-code input — single wide cell (codes are XXXX-XXXX, 9 chars). */
.backup-input[b-clx8p86ph5] {
    width: 100%;
    height: var(--input-h);
    padding: 0 18px;
    border: 1px solid var(--border);
    border-radius: var(--input-r);
    background: #f8f9fc;
    color: var(--heading);
    font-family: 'Courier New', monospace;
    font-size: 18px;
    letter-spacing: 4px;
    text-align: center;
    text-transform: uppercase;
    font-weight: 600;
    margin: 8px 0 6px;
    outline: none;
}

    .backup-input:focus[b-clx8p86ph5] {
        border-color: var(--primary);
        box-shadow: 0 0 0 3px rgba(0, 31, 87, 0.12);
    }

/* Resend / "Use backup code" link line */
.small-text[b-clx8p86ph5] {
    margin-top: 6px;
    font-size: 13px;
    color: var(--sub);
}

    .small-text a[b-clx8p86ph5] {
        color: var(--primary);
        text-decoration: underline;
        cursor: pointer;
        font-weight: 600;
    }

        .small-text a:hover[b-clx8p86ph5] { text-decoration: none; }

/* Primary action button */
.btn.primary[b-clx8p86ph5] {
    width: min(var(--content-w), 100%);
    height: var(--input-h);
    border-radius: 22px;
    border: 0;
    background: var(--primary);
    color: #fff;
    font-size: 20px;
    font-weight: 800;
    margin-top: 22px;
    cursor: pointer;
}

    .btn.primary:hover[b-clx8p86ph5] { filter: brightness(1.05); }
    .btn.primary:active[b-clx8p86ph5] { transform: translateY(1px); }
    .btn.primary[disabled][b-clx8p86ph5] {
        opacity: .7;
        cursor: not-allowed;
    }

/* Countdown timer */
.timer-display[b-clx8p86ph5] {
    margin: 12px 0 4px;
    text-align: center;
    font-size: 14px;
}

.timer-text[b-clx8p86ph5] { color: var(--sub); }

.timer-countdown[b-clx8p86ph5] {
    color: var(--primary);
    font-weight: 700;
    font-family: 'Courier New', monospace;
    background: #f0f4f8;
    padding: 4px 10px;
    border-radius: 6px;
    margin-left: 6px;
}

.timer-expired[b-clx8p86ph5] {
    margin: 12px 0;
    text-align: center;
}

.expired-text[b-clx8p86ph5] {
    color: #c62828;
    font-weight: 600;
    font-size: 14px;
}

/* Error banner under the form */
.error-message[b-clx8p86ph5] {
    margin-top: 12px;
    padding: 10px 12px;
    background: #fff0f0;
    border: 1px solid #f5c4c4;
    border-radius: 8px;
    color: #c62828;
    font-weight: 600;
    font-size: 13px;
}

/* ── Responsive ladder ──────────────────────────────────────────────────
   SideImagePanel hide + 100dvh fallback are global. OTP cells shrink
   responsively below 480px so 6 boxes fit on a 320px iPhone SE.
   Backup-code escape hatch input keeps its full-width single-cell shape. */

@media (max-width: 960px) {
    .twofa-shell[b-clx8p86ph5] {
        grid-template-columns: 1fr;
    }
    .twofa-left[b-clx8p86ph5] {
        min-height: 220px;
    }
    .twofa-right[b-clx8p86ph5] {
        padding: 28px 22px;
    }
}

@media (max-width: 600px) {
    .twofa-right[b-clx8p86ph5] {
        padding: 24px 16px;
    }
}

@media (max-width: 480px) {
    .twofa-right[b-clx8p86ph5] {
        padding: 20px 14px;
        gap: 12px;
    }
    .otp-boxes[b-clx8p86ph5] {
        justify-content: center;
        flex-wrap: wrap;
        gap: 8px;
    }
    .otp-input[b-clx8p86ph5] {
        width: clamp(40px, 12vw, 50px);
        height: clamp(44px, 13vw, 54px);
        font-size: clamp(18px, 5.5vw, 24px);
    }
    /* Backup code is a single XXXX-XXXX cell — keep readable, slightly
       smaller letter-spacing so it doesn't overflow on narrow phones. */
    .backup-input[b-clx8p86ph5] {
        font-size: 16px;
        letter-spacing: 3px;
    }
    .btn.primary[b-clx8p86ph5] {
        width: 100%;
    }
}
/* /Pages/VerifyResetOtp.razor.rz.scp.css */
/* ===== ONE PORTAL – Verify Reset OTP (CSS isolation) ===== */

/* Reuse styles from Email2FA since layout is identical */
/* predictable sizing */
*[b-dclqhfm9u9], *[b-dclqhfm9u9]::before, *[b-dclqhfm9u9]::after {
    box-sizing: border-box;
}

/* two‑column layout */
.twofa-shell[b-dclqhfm9u9] {
    --primary: #001F57;
    --heading: #292929;
    --sub: #585858;
    --placeholder: #C9D3E0;
    --border: #254a76;
    --input-h: 55px;
    --input-r: 16px;
    --content-w: 520px;
    display: grid;
    grid-template-columns: 55% 45%;
    min-height: 100vh;
    width: 100%;
}

.twofa-left[b-dclqhfm9u9] {
    position: relative;
    background: #0b1b33;
}

.twofa-img[b-dclqhfm9u9] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.twofa-right[b-dclqhfm9u9] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 40px 56px;
    gap: 16px;
}

    .twofa-right h1[b-dclqhfm9u9] {
        margin: 0 0 6px;
        color: var(--heading);
        font-weight: 800;
        font-size: clamp(22px,3vw,32px);
    }

    .twofa-right p[b-dclqhfm9u9] {
        margin: 0;
        color: var(--sub);
        font-size: 14px;
    }

/* OTP boxes wrapper */
.otp-boxes[b-dclqhfm9u9] {
    display: flex;
    gap: 10px;
    margin-top: 12px;
    margin-bottom: 8px;
}

/* Plain white surface — matches every other auth input across the app. */
.otp-input[b-dclqhfm9u9] {
    width: 50px;
    height: 50px;
    border: 1px solid #cbd5e1;          /* slate-300 */
    border-radius: 12px;
    background: #ffffff;
    color: #1e293b;                      /* slate-800 */
    font-size: 24px;
    font-weight: 600;
    text-align: center;
    outline: none;
    caret-color: transparent; /* hide caret */
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

    .otp-input:focus[b-dclqhfm9u9] {
        border-color: var(--primary);
        box-shadow: 0 0 0 3px rgba(0, 31, 87, 0.12);
    }

/* link styling for resend */
.small-text[b-dclqhfm9u9] {
    margin-top: 0;
    font-size: 12px;
    color: var(--sub);
}

    .small-text a[b-dclqhfm9u9] {
        color: var(--primary);
        text-decoration: underline;
        cursor: pointer;
    }

        .small-text a:hover[b-dclqhfm9u9] {
            text-decoration: none;
        }

/* button styling */
.btn.primary[b-dclqhfm9u9] {
    width: min(var(--content-w),100%);
    height: var(--input-h);
    border-radius: 22px;
    border: 0;
    background: var(--primary);
    color: #fff;
    font-size: 20px;
    font-weight: 800;
    margin-top: 22px;
    cursor: pointer;
}

    .btn.primary:hover[b-dclqhfm9u9] {
        filter: brightness(1.05);
    }

    .btn.primary:active[b-dclqhfm9u9] {
        transform: translateY(1px);
    }

    .btn.primary[disabled][b-dclqhfm9u9] {
        opacity: .7;
        cursor: not-allowed;
    }

/* timer display */
.timer-display[b-dclqhfm9u9] {
    margin: 12px 0;
    text-align: center;
    font-size: 14px;
}

.timer-text[b-dclqhfm9u9] {
    color: var(--sub);
}

.timer-countdown[b-dclqhfm9u9] {
    color: var(--primary);
    font-weight: 700;
    font-family: 'Courier New', monospace;
    background: #f0f4f8;
    padding: 4px 8px;
    border-radius: 6px;
    margin-left: 4px;
}

.timer-expired[b-dclqhfm9u9] {
    margin: 12px 0;
    text-align: center;
}

.expired-text[b-dclqhfm9u9] {
    color: #c62828;
    font-weight: 600;
    font-size: 14px;
}

/* disabled OTP inputs */
.otp-input:disabled[b-dclqhfm9u9] {
    background: #e0e0e0;
    color: #999;
    border-color: #ccc;
    cursor: not-allowed;
}

/* error message */
.error-message[b-dclqhfm9u9] {
    margin-top: 12px;
    font-size: 13px;
    color: #c62828;
    font-weight: 600;
}

/* ── Responsive ladder ──────────────────────────────────────────────────
   SideImagePanel hide + 100dvh fallback are global. OTP cells shrink
   responsively below 480px so 6 boxes always fit even on a 320px iPhone SE. */

@media (max-width: 960px) {
    .twofa-shell[b-dclqhfm9u9] {
        grid-template-columns: 1fr;
    }
    .twofa-right[b-dclqhfm9u9] {
        padding: 28px 22px;
    }
}

@media (max-width: 600px) {
    .twofa-right[b-dclqhfm9u9] {
        padding: 24px 16px;
    }
}

@media (max-width: 480px) {
    .twofa-right[b-dclqhfm9u9] {
        padding: 20px 14px;
        gap: 12px;
    }
    /* OTP wrapper: allow wrapping if needed; centre boxes on the line. */
    .otp-boxes[b-dclqhfm9u9] {
        justify-content: center;
        flex-wrap: wrap;
        gap: 8px;
    }
    /* OTP cells: clamp scales between 40px (iPhone SE) and 50px (large phones).
       6 boxes × 44px + 5 × 8px gaps = 304px → fits comfortably on 320-wide. */
    .otp-input[b-dclqhfm9u9] {
        width: clamp(40px, 12vw, 50px);
        height: clamp(44px, 13vw, 54px);
        font-size: clamp(18px, 5.5vw, 24px);
    }
    .btn.primary[b-dclqhfm9u9] {
        width: 100%;
    }
}

