/* /Components/Herramientas/ComChat.razor.rz.scp.css */
/* =============================================
   ComChat – Modern Chat UI Styles
   ============================================= */

.chat-container[b-5hset21w4q] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 500px;
    max-height: 80vh;
    border: 1px solid rgba(0,0,0,0.08);
    border-radius: 16px;
    overflow: hidden;
    background: #f8f9fb;
    font-family: inherit;
    box-shadow: 0 4px 24px rgba(0,0,0,0.06);
}

/* ---- Header ---- */
.chat-header[b-5hset21w4q] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 20px;
    background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 50%, #1e40af 100%);
    color: white;
    position: relative;
    z-index: 2;
}

.chat-header[b-5hset21w4q]::after {
    content: '';
    position: absolute;
    bottom: -8px;
    left: 0;
    right: 0;
    height: 8px;
    background: linear-gradient(to bottom, rgba(0,0,0,0.06), transparent);
    pointer-events: none;
}

.chat-header-info[b-5hset21w4q] {
    display: flex;
    align-items: center;
    gap: 14px;
}

.chat-header-icon-wrap[b-5hset21w4q] {
    width: 42px;
    height: 42px;
    border-radius: 12px;
    background: rgba(255,255,255,0.15);
    backdrop-filter: blur(8px);
    display: flex;
    align-items: center;
    justify-content: center;
}

.chat-header-icon[b-5hset21w4q] {
    font-size: 22px !important;
    color: white;
}

.chat-header-title[b-5hset21w4q] {
    color: white !important;
    font-weight: 700 !important;
    margin: 0 !important;
    line-height: 1.3;
    font-size: var(--corp-fs-xl);
    letter-spacing: -0.01em;
}

.chat-header-sub[b-5hset21w4q] {
    color: rgba(255,255,255,0.75) !important;
    font-size: var(--corp-fs-sm);
    display: flex;
    align-items: center;
    gap: 6px;
}

.chat-badge[b-5hset21w4q] {
    background: var(--corp-bad-strong);
    color: white;
    font-size: var(--corp-fs-xs);
    font-weight: 600;
    padding: 1px 8px;
    border-radius: 10px;
    animation: badgePulse-b-5hset21w4q 2s ease-in-out infinite;
}

@keyframes badgePulse-b-5hset21w4q {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.7; }
}

.chat-header-actions[b-5hset21w4q] {
    display: flex;
    gap: 4px;
}

.chat-header-btn[b-5hset21w4q],
.chat-header-btn.e-btn[b-5hset21w4q] {
    color: white !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    min-width: 38px;
    height: 38px;
    border-radius: 10px !important;
    transition: background 0.2s ease, transform 0.15s ease;
}

.chat-header-btn:hover[b-5hset21w4q] {
    background: rgba(255,255,255,0.18) !important;
    transform: scale(1.05);
}

.chat-header-btn.active[b-5hset21w4q] {
    background: rgba(255,255,255,0.22) !important;
}

/* ---- Participantes ---- */
.chat-participantes[b-5hset21w4q] {
    padding: 12px 16px;
    background: linear-gradient(to bottom, #eff6ff, #f8f9fb);
    border-bottom: 1px solid #dbeafe;
    animation: slideDown-b-5hset21w4q 0.2s ease;
}

@keyframes slideDown-b-5hset21w4q {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: translateY(0); }
}

.chat-participantes-title[b-5hset21w4q] {
    font-size: var(--corp-fs-sm);
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.chat-participantes-list[b-5hset21w4q] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.chat-participant-card[b-5hset21w4q] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px 6px 6px;
    background: white;
    border-radius: 24px;
    border: 1px solid #e2e8f0;
    transition: box-shadow 0.2s;
}

.chat-participant-card:hover[b-5hset21w4q] {
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}

.chat-participant-avatar[b-5hset21w4q] {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: linear-gradient(135deg, #94a3b8, #64748b);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    position: relative;
}

.chat-participant-avatar.online[b-5hset21w4q]::after {
    content: '';
    position: absolute;
    bottom: -1px;
    right: -1px;
    width: 10px;
    height: 10px;
    background: var(--corp-ok-strong);
    border-radius: 50%;
    border: 2px solid white;
}

.chat-participant-name[b-5hset21w4q] {
    font-size: var(--corp-fs-md);
    font-weight: 500;
    color: #334155;
}

.chat-participant-you[b-5hset21w4q] {
    font-size: var(--corp-fs-sm);
    color: #2563eb;
    font-weight: 600;
}

/* ---- Messages area ---- */
.chat-messages[b-5hset21w4q] {
    flex: 1;
    overflow-y: auto;
    padding: 20px 16px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    scroll-behavior: smooth;
    background: #f8f9fb;
}

.chat-loading[b-5hset21w4q] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex: 1;
    min-height: 200px;
    gap: 12px;
}

.chat-loading-text[b-5hset21w4q] {
    font-size: var(--corp-fs-md);
    color: #94a3b8;
    animation: pulse-b-5hset21w4q 1.5s ease-in-out infinite;
}

@keyframes pulse-b-5hset21w4q {
    0%, 100% { opacity: 0.6; }
    50% { opacity: 1; }
}

.chat-empty[b-5hset21w4q] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex: 1;
    min-height: 200px;
    gap: 4px;
}

.chat-empty-icon[b-5hset21w4q] {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    background: linear-gradient(135deg, #eff6ff, #dbeafe);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 8px;
}

.chat-empty-icon .e-icons[b-5hset21w4q] {
    font-size: 32px;
    color: #60a5fa;
}

.chat-empty-icon.error[b-5hset21w4q] {
    background: linear-gradient(135deg, #fef2f2, #fee2e2);
}

.chat-empty-icon.error .e-icons[b-5hset21w4q] {
    color: var(--corp-bad-strong);
}

.chat-empty-title[b-5hset21w4q] {
    font-size: var(--corp-fs-lg);
    font-weight: 600;
    color: #334155;
    margin: 0;
}

.chat-empty-text[b-5hset21w4q] {
    font-size: var(--corp-fs-md);
    color: #94a3b8;
    margin: 0;
}

.chat-empty-text.error[b-5hset21w4q] {
    color: var(--corp-bad-strong);
}

/* ---- Date divider ---- */
.chat-date-divider[b-5hset21w4q] {
    text-align: center;
    margin: 16px 0 10px;
    position: relative;
}

.chat-date-divider[b-5hset21w4q]::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    height: 1px;
    background: linear-gradient(to right, transparent, #cbd5e1, transparent);
}

.chat-date-divider span[b-5hset21w4q] {
    position: relative;
    background: #f8f9fb;
    padding: 2px 14px;
    font-size: var(--corp-fs-sm);
    color: #94a3b8;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-radius: 10px;
}

/* ---- Bubble rows ---- */
.chat-bubble-row[b-5hset21w4q] {
    display: flex;
    align-items: flex-end;
    gap: 8px;
    animation: fadeInUp-b-5hset21w4q 0.25s ease;
}

@keyframes fadeInUp-b-5hset21w4q {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: translateY(0); }
}

.chat-bubble-right[b-5hset21w4q] {
    justify-content: flex-end;
}

.chat-bubble-left[b-5hset21w4q] {
    justify-content: flex-start;
}

.chat-avatar[b-5hset21w4q] {
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: linear-gradient(135deg, #94a3b8, #64748b);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--corp-fs-body);
    font-weight: 700;
    margin-bottom: 2px;
    box-shadow: 0 2px 6px rgba(0,0,0,0.1);
}

/* ---- Bubbles ---- */
.chat-bubble[b-5hset21w4q] {
    max-width: 70%;
    padding: 10px 14px;
    border-radius: 18px;
    position: relative;
    word-break: break-word;
    transition: box-shadow 0.2s;
}

.chat-bubble:hover[b-5hset21w4q] {
    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
}

.bubble-mine[b-5hset21w4q] {
    background: linear-gradient(135deg, #2563eb, #1d4ed8);
    color: white;
    border-bottom-right-radius: 6px;
    box-shadow: 0 2px 8px rgba(37,99,235,0.2);
}

.bubble-other[b-5hset21w4q] {
    background: white;
    color: #1e293b;
    border: 1px solid #e2e8f0;
    border-bottom-left-radius: 6px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.04);
}

.chat-bubble-author[b-5hset21w4q] {
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    color: #2563eb;
    margin-bottom: 2px;
}

.chat-bubble-content[b-5hset21w4q] {
    font-size: var(--corp-fs-md);
    line-height: 1.5;
    white-space: pre-wrap;
}

.chat-bubble-footer[b-5hset21w4q] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 4px;
    margin-top: 4px;
}

.chat-bubble-time[b-5hset21w4q] {
    font-size: var(--corp-fs-xs);
    opacity: 0.6;
    font-weight: 500;
}

/* Read status double-check */
.chat-read-status[b-5hset21w4q] {
    display: inline-flex;
    align-items: center;
    font-size: var(--corp-fs-sm);
    position: relative;
    width: 18px;
}

.chat-read-status .e-icons[b-5hset21w4q] {
    font-size: var(--corp-fs-sm);
}

.chat-read-status .chat-double-check[b-5hset21w4q] {
    position: absolute;
    left: 5px;
}

.chat-read-status.read .e-icons[b-5hset21w4q] {
    color: #7dd3fc !important;
}

.chat-read-status.unread .e-icons[b-5hset21w4q] {
    opacity: 0.45;
}

/* ---- Attachments ---- */
.chat-attachments[b-5hset21w4q] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 8px;
}

.chat-attachment-link[b-5hset21w4q] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: 10px;
    background: rgba(255,255,255,0.12);
    text-decoration: none;
    color: inherit;
    transition: background 0.2s, transform 0.15s;
}

.chat-attachment-link:hover[b-5hset21w4q] {
    background: rgba(255,255,255,0.22);
    transform: translateX(2px);
}

.bubble-other .chat-attachment-link[b-5hset21w4q] {
    background: #f1f5f9;
}

.bubble-other .chat-attachment-link:hover[b-5hset21w4q] {
    background: #e2e8f0;
}

.chat-attachment-icon[b-5hset21w4q] {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: rgba(255,255,255,0.15);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.bubble-other .chat-attachment-icon[b-5hset21w4q] {
    background: #dbeafe;
}

.chat-attachment-icon .e-icons[b-5hset21w4q] {
    font-size: var(--corp-fs-lg);
}

.bubble-other .chat-attachment-icon .e-icons[b-5hset21w4q] {
    color: #2563eb;
}

.chat-attachment-info[b-5hset21w4q] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 0;
}

.chat-attachment-name[b-5hset21w4q] {
    font-size: var(--corp-fs-body);
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.chat-attachment-size[b-5hset21w4q] {
    font-size: var(--corp-fs-xs);
    opacity: 0.6;
}

.chat-attachment-dl[b-5hset21w4q] {
    font-size: var(--corp-fs-md);
    opacity: 0.4;
    transition: opacity 0.2s;
}

.chat-attachment-link:hover .chat-attachment-dl[b-5hset21w4q] {
    opacity: 0.8;
}

/* ---- Pending files chips ---- */
.chat-pending-files[b-5hset21w4q] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 10px;
    animation: fadeInUp-b-5hset21w4q 0.2s ease;
}

.chat-file-chip[b-5hset21w4q] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 8px 6px 10px;
    background: linear-gradient(135deg, #eff6ff, #dbeafe);
    border: 1px solid #bfdbfe;
    border-radius: 10px;
    font-size: var(--corp-fs-body);
    color: #1e40af;
    transition: border-color 0.2s;
}

.chat-file-chip:hover[b-5hset21w4q] {
    border-color: #93c5fd;
}

.chat-file-chip .e-icons[b-5hset21w4q] {
    font-size: var(--corp-fs-body);
    color: #3b82f6;
}

.chat-file-chip-name[b-5hset21w4q] {
    font-weight: 600;
    max-width: 120px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.chat-file-chip-size[b-5hset21w4q] {
    font-size: var(--corp-fs-sm);
    opacity: 0.6;
}

.chat-file-remove[b-5hset21w4q] {
    background: none;
    border: none;
    cursor: pointer;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #94a3b8;
    transition: background 0.2s, color 0.2s;
    padding: 0;
}

.chat-file-remove:hover[b-5hset21w4q] {
    background: #fee2e2;
    color: var(--corp-bad-strong);
}

.chat-file-remove .e-icons[b-5hset21w4q] {
    font-size: var(--corp-fs-xs);
}

/* ---- Input area ---- */
.chat-input-area[b-5hset21w4q] {
    padding: 12px 16px 14px;
    background: white;
    border-top: 1px solid #e2e8f0;
}

.chat-input-row[b-5hset21w4q] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.chat-input-field[b-5hset21w4q] {
    flex: 1;
}

.chat-input-field .e-input-group[b-5hset21w4q] {
    border-radius: 12px !important;
    background: #f1f5f9 !important;
    border-color: transparent !important;
    transition: background 0.2s, border-color 0.2s, box-shadow 0.2s;
}

.chat-input-field .e-input-group:hover[b-5hset21w4q] {
    background: #e2e8f0 !important;
}

.chat-input-field .e-input-group.e-input-focus[b-5hset21w4q] {
    background: white !important;
    border-color: #3b82f6 !important;
    box-shadow: 0 0 0 3px rgba(59,130,246,0.12) !important;
}

.chat-attach-btn[b-5hset21w4q] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border: none;
    border-radius: 10px;
    background: #f1f5f9;
    color: #64748b;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.2s, color 0.2s;
    padding: 0;
}

.chat-attach-btn:hover[b-5hset21w4q] {
    background: #e2e8f0;
    color: #2563eb;
}

.chat-attach-btn .e-icons[b-5hset21w4q] {
    font-size: var(--corp-fs-lg);
}

.chat-send-btn.e-btn[b-5hset21w4q] {
    min-width: 42px;
    height: 42px;
    border-radius: 12px !important;
    background: linear-gradient(135deg, #2563eb, #1d4ed8) !important;
    box-shadow: 0 2px 8px rgba(37,99,235,0.3);
    transition: transform 0.15s, box-shadow 0.2s;
}

.chat-send-btn.e-btn:hover:not(:disabled)[b-5hset21w4q] {
    transform: scale(1.05);
    box-shadow: 0 4px 14px rgba(37,99,235,0.4);
}

.chat-send-btn.e-btn:disabled[b-5hset21w4q] {
    opacity: 0.4;
    box-shadow: none;
}

/* ---- Scrollbar ---- */
.chat-messages[b-5hset21w4q]::-webkit-scrollbar {
    width: 5px;
}

.chat-messages[b-5hset21w4q]::-webkit-scrollbar-track {
    background: transparent;
}

.chat-messages[b-5hset21w4q]::-webkit-scrollbar-thumb {
    background: #cbd5e1;
    border-radius: 4px;
}

.chat-messages[b-5hset21w4q]::-webkit-scrollbar-thumb:hover {
    background: #94a3b8;
}
/* /Components/Herramientas/ComNotasProyecto.razor.rz.scp.css */
.notas-container[b-spvuz2yi26] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #fff;
}

/* ── Header ── */
.notas-header[b-spvuz2yi26] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.7rem 0.9rem;
    background: linear-gradient(135deg, #0f766e 0%, #14b8a6 100%);
    color: #fff;
    flex-shrink: 0;
}

.notas-header-info[b-spvuz2yi26] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.notas-header-icon-wrap[b-spvuz2yi26] {
    width: 34px;
    height: 34px;
    border-radius: 9px;
    background: rgba(255, 255, 255, 0.18);
    display: flex;
    align-items: center;
    justify-content: center;
}

.notas-header-icon[b-spvuz2yi26] {
    font-size: var(--corp-fs-lg);
    color: #fff;
}

.notas-header-title[b-spvuz2yi26] {
    margin: 0;
    font-size: var(--corp-fs-lg);
    font-weight: 700;
    color: #fff;
}

.notas-header-sub[b-spvuz2yi26] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: var(--corp-fs-sm);
    opacity: 0.9;
}

/* ── Body / editor ── */
.notas-body[b-spvuz2yi26] {
    flex: 1;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.notas-body[b-spvuz2yi26]  .e-richtexteditor {
    border: none !important;
    border-radius: 0 !important;
    height: 100% !important;
    display: flex;
    flex-direction: column;
}

.notas-body[b-spvuz2yi26]  .e-rte-content {
    flex: 1;
    min-height: 0;
}

.notas-loading[b-spvuz2yi26],
.notas-empty[b-spvuz2yi26] {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    color: #64748b;
    padding: 1.5rem;
    text-align: center;
}

.notas-empty-icon[b-spvuz2yi26] {
    font-size: 1.8rem;
    color: #cbd5e1;
}

.notas-loading-text[b-spvuz2yi26],
.notas-empty-text[b-spvuz2yi26] {
    margin: 0;
    font-size: var(--corp-fs-md);
}

/* ── Footer ── */
.notas-footer[b-spvuz2yi26] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.55rem 0.8rem;
    border-top: 1px solid #e2e8f0;
    background: #f8fafc;
    flex-shrink: 0;
}

.notas-footer-status[b-spvuz2yi26] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: var(--corp-fs-sm);
    color: #64748b;
    font-weight: 600;
}

.notas-footer-status.ok[b-spvuz2yi26] {
    color: #0f766e;
}

.notas-spin[b-spvuz2yi26] {
    animation: notas-rotate-b-spvuz2yi26 0.8s linear infinite;
}

@keyframes notas-rotate-b-spvuz2yi26 {
    to { transform: rotate(360deg); }
}

.notas-save-btn[b-spvuz2yi26] {
    font-weight: 600;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-5m6n2bxrum] {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

main[b-5m6n2bxrum] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
}

.sidebar[b-5m6n2bxrum] {
    /* Updated to match NavMenu gradient start color */
    background-color: #0f172a;
    /* Columna: el menú del rol toma el alto disponible y los enlaces extra de Admin quedan
       debajo en vez de desbordarse fuera de la pantalla. */
    display: flex;
    flex-direction: column;
}

    /* Los menús de rol son componentes propios, así que su raíz no lleva el atributo de scope
       de este archivo: ::deep para alcanzarla. Los dos prefijos conviven (sb-* es el sidebar
       actual, sidebar-container el de los menús que aún no se migraron). */
    .sidebar[b-5m6n2bxrum]  .sb-sidebar,
    .sidebar[b-5m6n2bxrum]  .sidebar-container {
        flex: 1;
        min-height: 0;
    }

/* Columna flex y no bloque: es el eslabón que le da un alto definido a .corp-shell.
   Siendo bloque, el shell no tenía contra qué medir su `flex: 1` y volvía a crecer
   con su contenido —el defecto que hacía que la tarjeta con la tabla estirara la
   página entera y la toolbar se fuera de vista al desplazar—. Para las pantallas
   que no usan el sistema de diseño (todo /Account, en Bootstrap) no cambia nada:
   un hijo único de una columna flex se comporta igual que un bloque. */
.content[b-5m6n2bxrum] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
}

/* La barra superior y el fondo oscuro sólo existen en móvil; en escritorio se sacan del flujo
   para que .page siga siendo sidebar + contenido. */
.topbar-movil[b-5m6n2bxrum] {
    display: none;
}

.sidebar-backdrop[b-5m6n2bxrum] {
    display: none;
}

/* La pestaña de plegar sólo existe en escritorio: en móvil el menú ya es un cajón
   con su propio botón en la barra superior. */
.sidebar-colapsar[b-5m6n2bxrum] {
    display: none;
}

/* =====================================================================
   Móvil y tablet en vertical: el menú deja de ocupar sitio y pasa a ser un
   cajón deslizante que se abre desde la barra superior. Antes el sidebar se
   apilaba entero encima del contenido y había que hacer scroll por todo el
   menú (o por toda la lista de proyectos) para llegar a la pantalla.
   ===================================================================== */
@media (max-width: 991.98px) {
    .page[b-5m6n2bxrum] {
        /* Alto fijo: la barra superior queda anclada y el scroll ocurre dentro del contenido.
           dvh evita el salto de la barra de direcciones en iOS/Android. */
        min-height: 0;
        height: 100vh;
        height: 100dvh;
        overflow: hidden;
    }

    /* Por encima del cajón y del fondo oscuro: el mismo botón que abre tiene que poder cerrar,
       si no la única salida sería tocar a ciegas fuera del menú. */
    .topbar-movil[b-5m6n2bxrum] {
        display: flex;
        align-items: center;
        gap: 0.75rem;
        flex-shrink: 0;
        position: relative;
        height: 3.25rem;
        padding: 0 0.65rem;
        background: #0f172a;
        border-bottom: 1px solid rgba(255, 255, 255, 0.08);
        z-index: 1220;
    }

    /* 44x44 es el mínimo táctil recomendado. El icono va como background-image (SVG monocromo,
       igual que los iconos del sidebar): así el dibujo no depende de elementos hijos. */
    .topbar-burger[b-5m6n2bxrum] {
        flex-shrink: 0;
        width: 44px;
        height: 44px;
        padding: 0;
        border: 0;
        border-radius: 0.5rem;
        background-color: rgba(255, 255, 255, 0.08);
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23e2e8f0' viewBox='0 0 24 24'%3E%3Cpath d='M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: center;
        background-size: 1.5rem 1.5rem;
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }

        .topbar-burger:active[b-5m6n2bxrum] {
            background-color: rgba(255, 255, 255, 0.18);
        }

        /* Abierto: el mismo botón cierra, así que el icono pasa a ser una X. */
        .topbar-burger.abierto[b-5m6n2bxrum] {
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23e2e8f0' viewBox='0 0 24 24'%3E%3Cpath d='M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z'/%3E%3C/svg%3E");
        }

    /* El logo, en blanco: el filtro viene de .sb-logo-img (sidebar.css, global). */
    .topbar-marca[b-5m6n2bxrum] {
        height: 1.6rem;
    }

    main[b-5m6n2bxrum] {
        flex: 1;
        min-height: 0;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    .sidebar[b-5m6n2bxrum] {
        position: fixed;
        /* Arranca bajo la barra superior para no tapar el botón que lo cierra. */
        top: 3.25rem;
        left: 0;
        bottom: 0;
        width: min(86vw, 320px);
        z-index: 1210;
        transform: translateX(-100%);
        transition: transform 0.25s ease;
        box-shadow: 8px 0 28px rgba(0, 0, 0, 0.45);
        /* El scroll se queda dentro del menú y no arrastra la página de fondo. */
        overscroll-behavior: contain;
    }

    .page.menu-abierto .sidebar[b-5m6n2bxrum] {
        transform: none;
    }

    .sidebar-backdrop[b-5m6n2bxrum] {
        display: block;
        position: fixed;
        inset: 0;
        background: rgba(2, 6, 23, 0.6);
        z-index: 1200;
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.25s ease;
    }

    .page.menu-abierto .sidebar-backdrop[b-5m6n2bxrum] {
        opacity: 1;
        pointer-events: auto;
    }
}

/* Sin animación para quien la desactivó en el sistema. */
@media (prefers-reduced-motion: reduce) {
    .sidebar[b-5m6n2bxrum],
    .sidebar-backdrop[b-5m6n2bxrum] {
        transition: none;
    }
}

@media (min-width: 992px) {
    .page[b-5m6n2bxrum] {
        flex-direction: row;
    }

    .sidebar[b-5m6n2bxrum] {
        width: 280px;
        height: 100vh;
        position: sticky;
        top: 0;
        flex-shrink: 0;
        box-shadow: 4px 0 24px rgba(0,0,0,0.05);
        z-index: 20;
    }

    main[b-5m6n2bxrum] {
        height: 100vh;
        overflow-y: auto;
    }

    .content[b-5m6n2bxrum] {
        flex: 1;
    }

    /* ── Menú plegable ──────────────────────────────────────────────────
       El sidebar se lleva 280px fijos y las tablas anchas del PM (cobertura,
       financiero, comparativo de cotizaciones) los necesitan. Plegarlo los
       devuelve sin sacar al usuario de la pantalla donde está trabajando.
       Se anima el ancho y no `transform` a propósito: el contenido tiene que
       ensancharse de verdad, no quedar tapado por un menú corrido. */
    .sidebar[b-5m6n2bxrum] {
        transition: width 0.18s ease;
    }

    .page.menu-colapsado .sidebar[b-5m6n2bxrum] {
        width: 0;
        min-width: 0;
        overflow: hidden;
        box-shadow: none;
    }

    /* Pestaña angosta pegada al borde del menú, a media altura: no compite con
       los encabezados de las pantallas, que viven arriba. El icono va como
       background-image porque el reset de MudBlazor deja en ancho 0 a los hijos
       flex de un <button>. */
    .sidebar-colapsar[b-5m6n2bxrum] {
        display: block;
        position: fixed;
        top: 50%;
        left: 280px;
        transform: translateY(-50%);
        width: 15px;
        height: 48px;
        padding: 0;
        cursor: pointer;
        z-index: 30;
        border: 1px solid #d1d9e0;
        border-left: none;
        border-radius: 0 4px 4px 0;
        background-color: #fff;
        background-repeat: no-repeat;
        background-position: center;
        background-size: 11px 11px;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23475569' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 3 L5 8 L10 13'/%3E%3C/svg%3E");
        box-shadow: 2px 0 6px rgba(15, 23, 42, 0.08);
        transition: left 0.18s ease, background-color 0.12s;
    }

    .sidebar-colapsar:hover[b-5m6n2bxrum] {
        background-color: #eef2f6;
    }

    .sidebar-colapsar:focus-visible[b-5m6n2bxrum] {
        outline: 2px solid #1565c0;
        outline-offset: 1px;
    }

    .page.menu-colapsado .sidebar-colapsar[b-5m6n2bxrum] {
        left: 0;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23475569' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 3 L11 8 L6 13'/%3E%3C/svg%3E");
    }
}

/* Quien desactivó las animaciones en el sistema no las ve tampoco al plegar. */
@media (prefers-reduced-motion: reduce) {
    .sidebar-colapsar[b-5m6n2bxrum] {
        transition: none;
    }
}

/* =====================================================================
   Portátil de 900 px de alto: el menú SÍ se desplaza, pero no se nota.

   Medido en un 1440x900 con seis proyectos en el menú del PM: el área de
   navegación mide 622 px y su contenido 728 px, así que los dos últimos
   accesos rápidos (Liquidaciones y Pago de Maquinarias) quedan debajo del
   corte. El desplazamiento existe y funciona —.sb-scroll ya es overflow-y:
   auto—, pero su barra medía 4 px con el pulgar en rgba(255,255,255,.1)
   sobre un fondo azul oscuro: invisible. Sin esa pista el menú no parece
   recortado sino terminado, y esos dos enlaces dejan de existir para el
   usuario.

   Dos medidas, en este orden:
     1. La barra se ve. Es lo único que convierte "el menú se acaba aquí"
        en "hay más abajo".
     2. Se recupera alto recortando el cromo que no es navegación (el logo
        y la tarjeta de usuario se llevaban 260 de los 900 px). Con eso el
        caso típico entra sin desplazar y la barra queda de red de seguridad
        para quien lleve muchos proyectos.
   ===================================================================== */
@media (min-width: 992px) {

    /* Los menús de rol son componentes propios: ::deep para alcanzar su interior. */
    .sidebar[b-5m6n2bxrum]  .sb-scroll {
        /* Firefox / estándar. */
        scrollbar-width: thin;
        scrollbar-color: rgba(255, 255, 255, 0.28) transparent;
    }

    .sidebar[b-5m6n2bxrum]  .sb-scroll::-webkit-scrollbar {
        width: 8px;
    }

    .sidebar[b-5m6n2bxrum]  .sb-scroll::-webkit-scrollbar-thumb {
        background: rgba(255, 255, 255, 0.28);
        border-radius: 4px;
    }

    .sidebar[b-5m6n2bxrum]  .sb-scroll::-webkit-scrollbar-thumb:hover {
        background: rgba(255, 255, 255, 0.45);
    }
}

/* Sólo donde el alto aprieta: en un monitor de 1080 el menú ya entraba entero
   y no hay por qué achicarle la letra a nadie. */
@media (min-width: 992px) and (max-height: 940px) {

    .sidebar[b-5m6n2bxrum]  .sb-header {
        padding: 0.6rem 1rem;
    }

    .sidebar[b-5m6n2bxrum]  .sb-logo-img {
        height: 1.6rem;
    }

    /* El pie no es navegación de trabajo: se aprieta antes que los enlaces. */
    .sidebar[b-5m6n2bxrum]  .user-section {
        padding: 0.5rem 0.75rem;
    }

    .sidebar[b-5m6n2bxrum]  .user-card {
        padding: 0.5rem;
        margin-bottom: 0.4rem;
    }

    .sidebar[b-5m6n2bxrum]  .user-avatar {
        width: 2rem;
        height: 2rem;
    }

    /* Los enlaces conservan su alto de toque; lo que se recorta es el aire ENTRE
       ellos. Con esto el menú del PM con seis proyectos entra completo en un
       1440x900 (medido: 684 px de contenido en 684 px de área). */
    .sidebar[b-5m6n2bxrum]  .sb-scroll {
        padding: 0.25rem 0;
    }

    .sidebar[b-5m6n2bxrum]  .sb-item,
    .sidebar[b-5m6n2bxrum]  .sb-project-item {
        margin-top: 0.05rem;
        margin-bottom: 0.05rem;
    }

    .sidebar[b-5m6n2bxrum]  .sb-divider {
        margin-top: 0.35rem;
        margin-bottom: 0.35rem;
    }
}

/* =====================================================================
   Modo bandeja: Gerente de Operaciones desde el teléfono.

   No hay menú ni barra superior (el layout ni los renderiza), así que la
   pantalla la ocupa entera la bandeja de firma, que administra su propio
   scroll. Estas reglas evitan el doble scroll —el del layout y el de la
   bandeja— que en un teléfono se siente como que la página "rebota".
   ===================================================================== */
.page.modo-bandeja[b-5m6n2bxrum] {
    min-height: 0;
    height: 100vh;
    height: 100dvh;
    overflow: hidden;
}

    .page.modo-bandeja main[b-5m6n2bxrum],
    .page.modo-bandeja .content[b-5m6n2bxrum] {
        min-height: 0;
        overflow: hidden;
    }

    .page.modo-bandeja .sidebar[b-5m6n2bxrum],
    .page.modo-bandeja .topbar-movil[b-5m6n2bxrum],
    .page.modo-bandeja .sidebar-backdrop[b-5m6n2bxrum] {
        display: none;
    }

#blazor-error-ui[b-5m6n2bxrum] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-5m6n2bxrum] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
/* ===== Variables y Base ===== */
.sidebar-container[b-zbtygtje60] {
    display: flex;
    flex-direction: column;
    height: 100%;
    /* Dark Slate with a slight teal tint or just pure dark slate */
    background: linear-gradient(180deg, #0f172a 0%, #1e293b 100%);
}

/* ===== Collapsible Nav Groups ===== */
.nav-group[b-zbtygtje60] {
    margin: 0.125rem 0.75rem;
}

.nav-group-toggle[b-zbtygtje60] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    width: 100%;
    padding: 0.5rem 0.75rem;
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid rgba(255, 255, 255, 0.04);
    border-radius: 0.625rem;
    color: #94a3b8;
    font-size: var(--corp-fs-body);
    font-weight: 600;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.nav-group-toggle:hover[b-zbtygtje60] {
    background: rgba(255, 255, 255, 0.06);
    color: #f1f5f9;
    border-color: rgba(255, 255, 255, 0.1);
}

.nav-group-toggle.expanded[b-zbtygtje60] {
    background: rgba(20, 184, 166, 0.08); /* Teal tint */
    border-color: rgba(20, 184, 166, 0.15);
    color: #e2e8f0;
}

.nav-group-indicator[b-zbtygtje60] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #475569;
    flex-shrink: 0;
    transition: all 0.2s ease;
}

.nav-group-toggle.expanded .nav-group-indicator[b-zbtygtje60] {
    background: #14b8a6; /* Teal light */
    box-shadow: 0 0 8px rgba(20, 184, 166, 0.4);
}

/* Small icon inside group toggle */
.nav-icon-sm[b-zbtygtje60] {
    display: inline-block;
    width: 0.875rem;
    height: 0.875rem;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    flex-shrink: 0;
    opacity: 0.6;
    transition: opacity 0.2s ease;
}

.nav-group-toggle:hover .nav-icon-sm[b-zbtygtje60],
.nav-group-toggle.expanded .nav-icon-sm[b-zbtygtje60] {
    opacity: 1;
}

.nav-group-label[b-zbtygtje60] {
    flex: 1;
    text-align: left;
}

.nav-group-chevron[b-zbtygtje60] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    color: #475569;
    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

.nav-group-toggle.expanded .nav-group-chevron[b-zbtygtje60] {
    transform: rotate(90deg);
    color: #14b8a6; /* Teal */
}

/* Collapsible content */
.nav-group-items[b-zbtygtje60] {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    padding-left: 0.25rem;
    border-left: 2px solid transparent;
    margin-left: 1rem;
    margin-top: 0;
}

.nav-group-items > *[b-zbtygtje60] {
    overflow: hidden;
}

.nav-group-items.expanded[b-zbtygtje60] {
    grid-template-rows: 1fr;
    margin-top: 0.25rem;
    border-left-color: rgba(20, 184, 166, 0.2); /* Teal border */
}

/* ===== Navigation Sections ===== */
.nav-section[b-zbtygtje60] {
    padding: 0.25rem 0;
}

.nav-section-title[b-zbtygtje60] {
    display: block;
    padding: 0.5rem 1.25rem 0.25rem;
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: #475569;
}

.nav-divider[b-zbtygtje60] {
    height: 1px;
    background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.06) 50%, transparent 100%);
    margin: 0.5rem 1rem;
}

/* ===== Nav Items ===== */
.nav-item[b-zbtygtje60] {
    padding: 0.0625rem 0.75rem;
}

.nav-group-items .nav-item[b-zbtygtje60] {
    padding: 0.0625rem 0.375rem;
}

.nav-item[b-zbtygtje60]  .nav-link,
.nav-link[b-zbtygtje60] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 0.75rem;
    color: #94a3b8;
    background: transparent;
    border: none;
    border-radius: 0.5rem;
    font-size: var(--corp-fs-md);
    font-weight: 500;
    text-decoration: none;
    cursor: pointer;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    width: 100%;
    text-align: left;
}

.nav-item[b-zbtygtje60]  .nav-link:hover,
.nav-link:hover[b-zbtygtje60] {
    background: rgba(255, 255, 255, 0.06);
    color: #e2e8f0;
    transform: translateX(2px);
}

.nav-item[b-zbtygtje60]  a.active {
    /* Teal active background */
    background: linear-gradient(135deg, rgba(20, 184, 166, 0.15) 0%, rgba(15, 118, 110, 0.1) 100%);
    color: #ffffff;
    font-weight: 600;
    box-shadow: inset 3px 0 0 #14b8a6; /* Teal left marker */
}

.nav-item[b-zbtygtje60]  a.active .nav-icon {
    filter: brightness(1.4);
}

/* ===== Nav Icons ===== */
.nav-icon[b-zbtygtje60] {
    display: inline-block;
    width: 1.125rem;
    height: 1.125rem;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    flex-shrink: 0;
    opacity: 0.8;
    transition: all 0.2s ease;
}

.nav-item:hover .nav-icon[b-zbtygtje60] {
    opacity: 1;
    transform: scale(1.05);
}

.nav-text[b-zbtygtje60] {
    flex: 1;
}

/* Icon Definitions */
.bi-house-icon[b-zbtygtje60] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M12.71 2.29a1 1 0 0 0-1.42 0l-9 9a1 1 0 0 0 0 1.42A1 1 0 0 0 3 13h1v7a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7h1a1 1 0 0 0 .71-1.71zM9 20v-5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v5zm9 0h-2v-5a3 3 0 0 0-3-3h-4a3 3 0 0 0-3 3v5H6v-7.59l6-6 6 6z'/%3E%3C/svg%3E");
}

.bi-projects-icon[b-zbtygtje60] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm0 16H5V5h14zM7 7h2v2H7zm0 4h2v2H7zm0 4h2v2H7zm4-8h6v2h-6zm0 4h6v2h-6zm0 4h6v2h-6z'/%3E%3C/svg%3E");
}

.bi-approval-icon[b-zbtygtje60] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-2-5.83l6.59-6.59L18 9l-8 8-4-4 1.41-1.41L10 14.17z'/%3E%3C/svg%3E");
}

.bi-employees-icon[b-zbtygtje60] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M12 12a5 5 0 1 0-5-5 5 5 0 0 0 5 5zm0-8a3 3 0 1 1-3 3 3 3 0 0 1 3-3zm9 17v-1a7 7 0 0 0-7-7h-4a7 7 0 0 0-7 7v1h2v-1a5 5 0 0 1 5-5h4a5 5 0 0 1 5 5v1z'/%3E%3C/svg%3E");
}

.bi-engineering-icon[b-zbtygtje60] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M22.7 19l-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4z'/%3E%3C/svg%3E");
}

.bi-legal-icon[b-zbtygtje60] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-8 2h5v2h-5V4zm-7 0h5v2H5V4zm0 4h5v2H5V8zm7 0h5v2h-5V8zm-7 4h5v2H5v-2zm7 0h5v2h-5v-2zm-7 4h5v2H5v-2zm7 0h5v2h-5v-2z'/%3E%3C/svg%3E");
}

.bi-pm-icon[b-zbtygtje60] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M19 3h-4.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm2 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z'/%3E%3C/svg%3E");
}

.bi-quotation-icon[b-zbtygtje60] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6zm2-6h8v2H8v-2zm0-3h8v2H8v-2zm0 6h5v2H8v-2z'/%3E%3C/svg%3E");
}

.bi-order-icon[b-zbtygtje60] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M18 6h-2c0-2.21-1.79-4-4-4S8 3.79 8 6H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-6-2c1.1 0 2 .9 2 2h-4c0-1.1.9-2 2-2zm6 16H6V8h2v2h2V8h4v2h2V8h2v12z'/%3E%3C/svg%3E");
}

.bi-warehouse-icon[b-zbtygtje60] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M20 3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H4V5h16v14zM6 7h5v5H6V7zm7 0h5v2h-5V7zm0 3h5v2h-5v-2zm-7 5h12v2H6v-2z'/%3E%3C/svg%3E");
}

.bi-shield-icon[b-zbtygtje60] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M12 22c4.97-1.43 8-6.06 8-10.87V5l-8-3-8 3v6.13c0 4.81 3.03 9.44 8 10.87zm0-2.08c-3.63-1.2-6-4.85-6-8.79V6.31l6-2.25 6 2.25v4.82c0 3.94-2.37 7.59-6 8.79zM11 7h2v5h-2V7zm0 6h2v2h-2v-2z'/%3E%3C/svg%3E");
}

/* ===== Scrollable Area =====
   Siempre visible: en móvil quien esconde el menú es el cajón del layout, no esta caja. */
.nav-scrollable[b-zbtygtje60] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.nav-scrollable[b-zbtygtje60]::-webkit-scrollbar {
    width: 4px;
}

.nav-scrollable[b-zbtygtje60]::-webkit-scrollbar-track {
    background: transparent;
}

.nav-scrollable[b-zbtygtje60]::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.1);
    border-radius: 4px;
}

.nav-scrollable[b-zbtygtje60]::-webkit-scrollbar-thumb:hover {
    background: rgba(255, 255, 255, 0.2);
}

/* ===== Responsive ===== */
@media (max-width: 991.98px) {
    .nav-item[b-zbtygtje60] {
        padding: 0.0625rem 0.6rem;
    }

    .nav-item[b-zbtygtje60]  .nav-link,
    .nav-link[b-zbtygtje60] {
        padding: 0.7rem 0.85rem;
        font-size: var(--corp-fs-lg);
    }

    .nav-icon[b-zbtygtje60] {
        width: 1.25rem;
        height: 1.25rem;
    }

    .nav-group-toggle[b-zbtygtje60] {
        padding: 0.65rem 0.75rem;
        font-size: var(--corp-fs-md);
    }

    .nav-section-title[b-zbtygtje60] {
        padding: 0.6rem 1rem 0.35rem;
        font-size: var(--corp-fs-sm);
    }
}

/* El desplazamiento lateral del hover se queda pegado tras el toque en táctil. */
@media (hover: none) {
    .nav-item[b-zbtygtje60]  .nav-link:hover,
    .nav-link:hover[b-zbtygtje60] {
        background: transparent;
        color: #94a3b8;
        transform: none;
    }

    .nav-item[b-zbtygtje60]  .nav-link:active,
    .nav-link:active[b-zbtygtje60] {
        background: rgba(255, 255, 255, 0.12);
        color: #e2e8f0;
    }

    /* El enlace activo conserva su marca aunque el navegador lo deje en :hover. */
    .nav-item[b-zbtygtje60]  a.active:hover {
        background: linear-gradient(135deg, rgba(20, 184, 166, 0.15) 0%, rgba(15, 118, 110, 0.1) 100%);
        color: #ffffff;
    }
}
/* /Components/Layout/NavMenuGteOps.razor.rz.scp.css */
/* ===== Variables y Base ===== */
.sidebar-container[b-nj7nizd4k9] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: linear-gradient(180deg, #0f172a 0%, #1a2332 50%, #1e293b 100%);
    font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
    user-select: none;
}

/* ===== Header / Logo ===== */
.sidebar-header[b-nj7nizd4k9] {
    padding: 1.5rem 1.25rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    background: rgba(0, 0, 0, 0.15);
}

.logo-container[b-nj7nizd4k9] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

/* El logo es un <img class="sb-logo-img">: su regla vive en wwwroot/css/sidebar.css. */

/* ===== Collapsible Nav Groups ===== */
.nav-group[b-nj7nizd4k9] {
    margin: 0.125rem 0.75rem;
}

.nav-group-toggle[b-nj7nizd4k9] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    width: 100%;
    padding: 0.5rem 0.75rem;
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid rgba(255, 255, 255, 0.04);
    border-radius: 0.625rem;
    color: #94a3b8;
    font-size: var(--corp-fs-body);
    font-weight: 600;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.nav-group-toggle:hover[b-nj7nizd4k9] {
    background: rgba(255, 255, 255, 0.06);
    color: #f1f5f9;
    border-color: rgba(255, 255, 255, 0.1);
}

.nav-group-toggle.expanded[b-nj7nizd4k9] {
    background: rgba(20, 184, 166, 0.1);
    border-color: rgba(20, 184, 166, 0.2);
    color: #e2e8f0;
    box-shadow: 0 2px 8px rgba(20, 184, 166, 0.08);
}

.nav-group-indicator[b-nj7nizd4k9] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #475569;
    flex-shrink: 0;
    transition: all 0.2s ease;
}

.nav-group-toggle.expanded .nav-group-indicator[b-nj7nizd4k9] {
    background: #14b8a6;
    box-shadow: 0 0 8px rgba(20, 184, 166, 0.4);
}

/* Small icon inside group toggle */
.nav-icon-sm[b-nj7nizd4k9] {
    display: inline-block;
    width: 0.875rem;
    height: 0.875rem;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    flex-shrink: 0;
    opacity: 0.6;
    transition: opacity 0.2s ease;
}

.nav-group-toggle:hover .nav-icon-sm[b-nj7nizd4k9],
.nav-group-toggle.expanded .nav-icon-sm[b-nj7nizd4k9] {
    opacity: 1;
}

.nav-group-label[b-nj7nizd4k9] {
    flex: 1;
    text-align: left;
}

.nav-group-chevron[b-nj7nizd4k9] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    color: #475569;
    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

.nav-group-toggle.expanded .nav-group-chevron[b-nj7nizd4k9] {
    transform: rotate(90deg);
    color: #14b8a6;
}

/* Collapsible content */
.nav-group-items[b-nj7nizd4k9] {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    padding-left: 0.25rem;
    border-left: 2px solid transparent;
    margin-left: 1rem;
    margin-top: 0;
}

.nav-group-items > *[b-nj7nizd4k9] {
    overflow: hidden;
}

.nav-group-items.expanded[b-nj7nizd4k9] {
    grid-template-rows: 1fr;
    margin-top: 0.375rem;
    border-left-color: rgba(20, 184, 166, 0.25);
    padding-top: 0.125rem;
    padding-bottom: 0.125rem;
}

/* ===== Navigation Sections ===== */
.nav-section[b-nj7nizd4k9] {
    padding: 0.25rem 0;
}

.nav-section-title[b-nj7nizd4k9] {
    display: block;
    padding: 0.5rem 1.25rem 0.25rem;
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: #475569;
}

.nav-divider[b-nj7nizd4k9] {
    height: 1px;
    background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.08) 30%, rgba(255, 255, 255, 0.08) 70%, transparent 100%);
    margin: 0.625rem 1.25rem;
}

/* ===== Nav Items ===== */
.nav-item[b-nj7nizd4k9] {
    padding: 0.0625rem 0.75rem;
}

.nav-group-items .nav-item[b-nj7nizd4k9] {
    padding: 0.0625rem 0.375rem;
}

.nav-item[b-nj7nizd4k9]  .nav-link,
.nav-link[b-nj7nizd4k9] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 0.75rem;
    color: #94a3b8;
    background: transparent;
    border: none;
    border-radius: 0.5rem;
    font-size: var(--corp-fs-md);
    font-weight: 500;
    text-decoration: none;
    cursor: pointer;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    width: 100%;
    text-align: left;
}

.nav-item[b-nj7nizd4k9]  .nav-link:hover,
.nav-link:hover[b-nj7nizd4k9] {
    background: rgba(255, 255, 255, 0.06);
    color: #e2e8f0;
    transform: translateX(2px);
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);
}

.nav-item[b-nj7nizd4k9]  a.active {
    background: linear-gradient(135deg, rgba(20, 184, 166, 0.15) 0%, rgba(15, 118, 110, 0.08) 100%);
    color: #ffffff;
    font-weight: 600;
    box-shadow: inset 3px 0 0 #14b8a6, 0 2px 8px rgba(20, 184, 166, 0.1);
    border-radius: 0.625rem;
}

.nav-item[b-nj7nizd4k9]  a.active .nav-icon {
    filter: brightness(1.5) saturate(1.2);
}

.nav-item[b-nj7nizd4k9]  a.active .nav-text {
    color: #e2e8f0;
}

/* ===== Nav Icons ===== */
.nav-icon[b-nj7nizd4k9] {
    display: inline-block;
    width: 1.125rem;
    height: 1.125rem;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    flex-shrink: 0;
    opacity: 0.8;
    transition: all 0.2s ease;
}

.nav-item:hover .nav-icon[b-nj7nizd4k9] {
    opacity: 1;
    transform: scale(1.05);
}

.nav-text[b-nj7nizd4k9] {
    flex: 1;
}

/* Icon Definitions */
.bi-house-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M12.71 2.29a1 1 0 0 0-1.42 0l-9 9a1 1 0 0 0 0 1.42A1 1 0 0 0 3 13h1v7a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7h1a1 1 0 0 0 .71-1.71zM9 20v-5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v5zm9 0h-2v-5a3 3 0 0 0-3-3h-4a3 3 0 0 0-3 3v5H6v-7.59l6-6 6 6z'/%3E%3C/svg%3E");
}

.bi-projects-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm0 16H5V5h14zM7 7h2v2H7zm0 4h2v2H7zm0 4h2v2H7zm4-8h6v2h-6zm0 4h6v2h-6zm0 4h6v2h-6z'/%3E%3C/svg%3E");
}

.bi-approval-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-2-5.83l6.59-6.59L18 9l-8 8-4-4 1.41-1.41L10 14.17z'/%3E%3C/svg%3E");
}

.bi-order-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M18 6h-2c0-2.21-1.79-4-4-4S8 3.79 8 6H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-6-2c1.1 0 2 .9 2 2h-4c0-1.1.9-2 2-2zm6 16H6V8h2v2h2V8h4v2h2V8h2v12z'/%3E%3C/svg%3E");
}

/* Centro de Pendientes: bandeja de entrada */
.bi-inbox-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12h-4c0 1.66-1.34 3-3 3s-3-1.34-3-3H5V5h14v10z'/%3E%3C/svg%3E");
}

/* Aprobación compra: carrito */
.bi-cart-check-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z'/%3E%3C/svg%3E");
}

/* Aprobación pago indirecto: billete */
.bi-cash-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M21 4H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H3V6h18v12zm-9-9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM5 8h2v2H5zm12 6h2v2h-2z'/%3E%3C/svg%3E");
}

/* Aprobación pago maquinaria: camión */
.bi-truck-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M20 8h-3V4H3c-1.1 0-2 .9-2 2v11h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-3-4zM6 18.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm13.5-9l1.96 2.5H17V9.5h2.5zm-1.5 9c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z'/%3E%3C/svg%3E");
}

/* Catálogo de bancos: banco */
.bi-bank-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M4 10v7h3v-7H4zm6 0v7h3v-7h-3zM2 22h19v-3H2v3zm14-12v7h3v-7h-3zm-4.5-9L2 6v2h19V6l-9.5-5z'/%3E%3C/svg%3E");
}

/* Catálogo de items: lista */
.bi-list-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z'/%3E%3C/svg%3E");
}

/* Finanzas por proyecto: billetera */
.bi-wallet-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M21 18v1c0 1.1-.9 2-2 2H5c-1.11 0-2-.9-2-2V5c0-1.1.89-2 2-2h14c1.1 0 2 .9 2 2v1h-9c-1.11 0-2 .9-2 2v8c0 1.1.89 2 2 2h9zm-9-2h10V8H12v8zm4-2.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z'/%3E%3C/svg%3E");
}

/* Máquinas y equipo: llave */
.bi-wrench-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M22.7 19l-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4z'/%3E%3C/svg%3E");
}

/* Panorama Financiero: tendencia */
.bi-trend-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z'/%3E%3C/svg%3E");
}

/* Revisión pago contratista: persona con check */
.bi-person-check-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M11 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm-2 6.17V20H3v-2c0-2.66 5.33-4 8-4 .35 0 .73.02 1.13.07l-3.13 4.1zM20.6 12.5l1.4 1.41-5.57 5.59-2.83-2.82 1.41-1.41 1.42 1.41 4.17-4.18z'/%3E%3C/svg%3E");
}

/* Personal y clientes (/admin/empleados): grupo de personas */
.bi-people-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z'/%3E%3C/svg%3E");
}

.bi-settings-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65a.5.5 0 0 0 .12-.64l-2-3.46a.5.5 0 0 0-.61-.22l-2.49 1a7.03 7.03 0 0 0-1.69-.98l-.38-2.65A.49.49 0 0 0 14 2h-4a.49.49 0 0 0-.49.42l-.38 2.65a7.03 7.03 0 0 0-1.69.98l-2.49-1a.5.5 0 0 0-.61.22l-2 3.46a.5.5 0 0 0 .12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65a.5.5 0 0 0-.12.64l2 3.46a.5.5 0 0 0 .61.22l2.49-1c.52.4 1.08.72 1.69.98l.38 2.65c.04.24.24.42.49.42h4c.25 0 .45-.18.49-.42l.38-2.65a7.03 7.03 0 0 0 1.69-.98l2.49 1a.5.5 0 0 0 .61-.22l2-3.46a.5.5 0 0 0-.12-.64l-2.11-1.65zM12 15.5a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7z'/%3E%3C/svg%3E");
}

.bi-logout-icon[b-nj7nizd4k9] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23f87171' viewBox='0 0 24 24'%3E%3Cpath d='M16 17v-3H9v-4h7V7l5 5-5 5zM14 2a2 2 0 0 1 2 2v2h-2V4H5v16h9v-2h2v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9z'/%3E%3C/svg%3E");
}

/* ===== User Section ===== */
.user-section[b-nj7nizd4k9] {
    padding: 1rem 0.75rem;
    margin-top: auto;
}

.user-card[b-nj7nizd4k9] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem;
    background: rgba(255, 255, 255, 0.04);
    border-radius: 0.75rem;
    margin-bottom: 0.75rem;
    border: 1px solid rgba(255, 255, 255, 0.06);
}

.user-avatar[b-nj7nizd4k9] {
    position: relative;
    width: 2.5rem;
    height: 2.5rem;
    background: linear-gradient(135deg, #10b981 0%, var(--corp-ok-strong) 100%);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.avatar-text[b-nj7nizd4k9] {
    color: white;
    font-size: var(--corp-fs-md);
    font-weight: 600;
}

.status-indicator[b-nj7nizd4k9] {
    position: absolute;
    bottom: 0;
    right: 0;
    width: 0.625rem;
    height: 0.625rem;
    border-radius: 50%;
    border: 2px solid #1e293b;
}

.status-indicator.online[b-nj7nizd4k9] {
    background: var(--corp-ok-strong);
    box-shadow: 0 0 6px rgba(34, 197, 94, 0.6);
}

.user-info[b-nj7nizd4k9] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.user-name[b-nj7nizd4k9] {
    color: #f1f5f9;
    font-size: var(--corp-fs-md);
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.user-role[b-nj7nizd4k9] {
    color: #64748b;
    font-size: var(--corp-fs-sm);
}

.user-actions[b-nj7nizd4k9] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

/* ===== Logout Button ===== */
.logout-btn[b-nj7nizd4k9] {
    color: #f87171 !important;
}

.logout-btn:hover[b-nj7nizd4k9] {
    background: rgba(248, 113, 113, 0.1) !important;
    color: #fca5a5 !important;
}

/* ===== Scrollable Area =====
   Siempre visible: en móvil quien esconde el menú es el cajón del layout, no esta caja. */
.nav-scrollable[b-nj7nizd4k9] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.nav-scrollable[b-nj7nizd4k9]::-webkit-scrollbar {
    width: 4px;
}

.nav-scrollable[b-nj7nizd4k9]::-webkit-scrollbar-track {
    background: transparent;
}

.nav-scrollable[b-nj7nizd4k9]::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.1);
    border-radius: 4px;
}

.nav-scrollable[b-nj7nizd4k9]::-webkit-scrollbar-thumb:hover {
    background: rgba(255, 255, 255, 0.2);
}

/* ===== Responsive ===== */
@media (max-width: 991.98px) {
    /* La marca ya la muestra la barra superior del layout: dentro del cajón el header queda
       sólo para la campana de notificaciones. */
    .sidebar-header[b-nj7nizd4k9] {
        padding: 0.5rem 0.85rem;
        justify-content: flex-end !important;
    }

    .logo-container[b-nj7nizd4k9] {
        display: none;
    }

    .nav-item[b-nj7nizd4k9] {
        padding: 0.0625rem 0.6rem;
    }

    .nav-item[b-nj7nizd4k9]  .nav-link,
    .nav-link[b-nj7nizd4k9] {
        padding: 0.7rem 0.85rem;
        font-size: var(--corp-fs-lg);
    }

    .nav-icon[b-nj7nizd4k9] {
        width: 1.25rem;
        height: 1.25rem;
    }

    .nav-group-toggle[b-nj7nizd4k9] {
        padding: 0.65rem 0.75rem;
        font-size: var(--corp-fs-md);
    }

    .nav-section-title[b-nj7nizd4k9],
    .nav-section-label[b-nj7nizd4k9] {
        padding: 0.6rem 1rem 0.35rem;
        font-size: var(--corp-fs-sm);
    }

    .nav-badge[b-nj7nizd4k9] {
        min-width: 1.4rem;
        height: 1.4rem;
        font-size: var(--corp-fs-sm);
    }
}

/* El desplazamiento lateral del hover se queda pegado tras el toque en táctil. */
@media (hover: none) {
    .nav-item[b-nj7nizd4k9]  .nav-link:hover,
    .nav-link:hover[b-nj7nizd4k9] {
        background: transparent;
        color: #94a3b8;
        transform: none;
        box-shadow: none;
    }

    .nav-item[b-nj7nizd4k9]  .nav-link:active,
    .nav-link:active[b-nj7nizd4k9] {
        background: rgba(255, 255, 255, 0.12);
        color: #e2e8f0;
    }

    /* El enlace activo conserva su marca aunque el navegador lo deje en :hover. */
    .nav-item[b-nj7nizd4k9]  a.active:hover {
        background: linear-gradient(135deg, rgba(20, 184, 166, 0.15) 0%, rgba(15, 118, 110, 0.08) 100%);
        color: #ffffff;
        box-shadow: inset 3px 0 0 #14b8a6, 0 2px 8px rgba(20, 184, 166, 0.1);
    }
}

/* ===== Animation Keyframes ===== */
@keyframes pulse-b-nj7nizd4k9 {
    0%, 100% {
        opacity: 1;
    }

    50% {
        opacity: 0.6;
    }
}

.status-indicator.online[b-nj7nizd4k9] {
    animation: pulse-b-nj7nizd4k9 2s infinite;
}

/* ===== Nav Section Label ===== */
.nav-section-label[b-nj7nizd4k9] {
    display: block;
    padding: 0.5rem 1.25rem 0.25rem;
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: #475569;
}

/* ===== Nav Badges ===== */
.nav-badge[b-nj7nizd4k9] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.25rem;
    height: 1.25rem;
    padding: 0 0.3rem;
    border-radius: 0.625rem;
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    line-height: 1;
    background: #1565c0;
    color: #fff;
    flex-shrink: 0;
    margin-left: auto;
}

.nav-badge-warn[b-nj7nizd4k9] {
    background: #b45309;
    color: #fef3c7;
}

.nav-badge-danger[b-nj7nizd4k9] {
    background: var(--corp-bad-strong);
    color: #fee2e2;
}
/* /Components/Layout/SidebarUserFooter.razor.rz.scp.css */
/* ===== Nav Items (shared styles needed by this component) ===== */
.nav-item[b-8rpzmd612b] {
    padding: 0.0625rem 0.75rem;
}

.nav-item[b-8rpzmd612b]  .nav-link,
.nav-link[b-8rpzmd612b] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 0.75rem;
    color: #94a3b8;
    background: transparent;
    border: none;
    border-radius: 0.5rem;
    font-size: var(--corp-fs-md);
    font-weight: 500;
    text-decoration: none;
    cursor: pointer;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    width: 100%;
    text-align: left;
}

.nav-item[b-8rpzmd612b]  .nav-link:hover,
.nav-link:hover[b-8rpzmd612b] {
    background: rgba(255, 255, 255, 0.06);
    color: #e2e8f0;
    transform: translateX(2px);
}

.nav-item[b-8rpzmd612b]  a.active {
    background: linear-gradient(135deg, rgba(20, 184, 166, 0.15) 0%, rgba(15, 118, 110, 0.1) 100%);
    color: #ffffff;
    font-weight: 600;
    box-shadow: inset 3px 0 0 #14b8a6;
}

.nav-item[b-8rpzmd612b]  a.active .nav-icon {
    filter: brightness(1.4);
}

/* ===== Nav Icons ===== */
.nav-icon[b-8rpzmd612b] {
    display: inline-block;
    width: 1.125rem;
    height: 1.125rem;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    flex-shrink: 0;
    opacity: 0.8;
    transition: all 0.2s ease;
}

.nav-item:hover .nav-icon[b-8rpzmd612b] {
    opacity: 1;
    transform: scale(1.05);
}

.nav-text[b-8rpzmd612b] {
    flex: 1;
}

/* ===== Icon Definitions ===== */
.bi-settings-icon[b-8rpzmd612b] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65a.5.5 0 0 0 .12-.64l-2-3.46a.5.5 0 0 0-.61-.22l-2.49 1a7.03 7.03 0 0 0-1.69-.98l-.38-2.65A.49.49 0 0 0 14 2h-4a.49.49 0 0 0-.49.42l-.38 2.65a7.03 7.03 0 0 0-1.69.98l-2.49-1a.5.5 0 0 0-.61.22l-2 3.46a.5.5 0 0 0 .12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65a.5.5 0 0 0-.12.64l2 3.46a.5.5 0 0 0 .61.22l2.49-1c.52.4 1.08.72 1.69.98l.38 2.65c.04.24.24.42.49.42h4c.25 0 .45-.18.49-.42l.38-2.65a7.03 7.03 0 0 0 1.69-.98l2.49 1a.5.5 0 0 0 .61-.22l2-3.46a.5.5 0 0 0-.12-.64l-2.11-1.65zM12 15.5a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7z'/%3E%3C/svg%3E");
}

.bi-logout-icon[b-8rpzmd612b] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23f87171' viewBox='0 0 24 24'%3E%3Cpath d='M16 17v-3H9v-4h7V7l5 5-5 5zM14 2a2 2 0 0 1 2 2v2h-2V4H5v16h9v-2h2v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9z'/%3E%3C/svg%3E");
}

.bi-register-icon[b-8rpzmd612b] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2394a3b8' viewBox='0 0 24 24'%3E%3Cpath d='M15 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0-6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm0 8c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4zm-6 4c.22-.72 3.31-2 6-2s5.78 1.28 6 2H9zM6 15v-3h3v-2H6V7H4v3H1v2h3v3z'/%3E%3C/svg%3E");
}

.bi-login-icon[b-8rpzmd612b] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='white' viewBox='0 0 24 24'%3E%3Cpath d='M11 7L9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z'/%3E%3C/svg%3E");
}

/* ===== User Section ===== */
.user-section[b-8rpzmd612b] {
    padding: 1rem 0.75rem;
    margin-top: auto;
}

.user-card[b-8rpzmd612b] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem;
    background: rgba(255, 255, 255, 0.04);
    border-radius: 0.75rem;
    margin-bottom: 0.75rem;
    border: 1px solid rgba(255, 255, 255, 0.06);
}

.user-avatar[b-8rpzmd612b] {
    position: relative;
    width: 2.5rem;
    height: 2.5rem;
    background: linear-gradient(135deg, #10b981 0%, var(--corp-ok-strong) 100%);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.avatar-text[b-8rpzmd612b] {
    color: white;
    font-size: var(--corp-fs-md);
    font-weight: 600;
}

.status-indicator[b-8rpzmd612b] {
    position: absolute;
    bottom: 0;
    right: 0;
    width: 0.625rem;
    height: 0.625rem;
    border-radius: 50%;
    border: 2px solid #1e293b;
}

.status-indicator.online[b-8rpzmd612b] {
    background: var(--corp-ok-strong);
    box-shadow: 0 0 6px rgba(34, 197, 94, 0.6);
}

.user-info[b-8rpzmd612b] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.user-name[b-8rpzmd612b] {
    color: #f1f5f9;
    font-size: var(--corp-fs-md);
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.user-role[b-8rpzmd612b] {
    color: #64748b;
    font-size: var(--corp-fs-sm);
}

.user-actions[b-8rpzmd612b] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

/* ===== Logout Button ===== */
.logout-btn[b-8rpzmd612b] {
    color: #f87171 !important;
}

.logout-btn:hover[b-8rpzmd612b] {
    background: rgba(248, 113, 113, 0.1) !important;
    color: #fca5a5 !important;
}

/* ===== Auth Section (Not Authorized) ===== */
.auth-section[b-8rpzmd612b] {
    padding: 1rem 0.75rem;
    margin-top: auto;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.auth-link.primary[b-8rpzmd612b] {
    background: linear-gradient(135deg, #0f766e 0%, #14b8a6 100%) !important;
    color: white !important;
    font-weight: 600;
}

.auth-link.primary:hover[b-8rpzmd612b] {
    background: linear-gradient(135deg, #14b8a6 0%, #0f766e 100%) !important;
    transform: translateX(0) !important;
    box-shadow: 0 4px 12px rgba(20, 184, 166, 0.3);
}

/* ===== Animation Keyframes ===== */
@keyframes pulse-b-8rpzmd612b {
    0%, 100% {
        opacity: 1;
    }

    50% {
        opacity: 0.6;
    }
}

.status-indicator.online[b-8rpzmd612b] {
    animation: pulse-b-8rpzmd612b 2s infinite;
}
/* /Components/Pages/Error.razor.rz.scp.css */
/* Pantalla de error. Se pinta sobre el shell corporativo pero es autónoma: puede salir
   antes de que cargue cualquier otra hoja, así que cada valor lleva su respaldo. */

.err-escena[b-mdgn14oi6y] {
    min-height: 60vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem 1rem;
    background: var(--corp-bg-body, #f5f6f8);
}

.err-tarjeta[b-mdgn14oi6y] {
    background: var(--corp-bg-card, #ffffff);
    border: 1px solid var(--corp-border, #d1d9e0);
    border-top: 3px solid var(--corp-bad, #991b1b);
    border-radius: var(--corp-radius, 4px);
    box-shadow: 0 6px 20px -8px rgba(15, 23, 42, .25);
    padding: 1.75rem 1.9rem 1.5rem;
    max-width: 560px;
    width: 100%;
}

.err-icono[b-mdgn14oi6y] {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--corp-bad-bg, #fee2e2);
    color: var(--corp-bad, #991b1b);
    font-size: 1.25rem;
    margin-bottom: .9rem;
}

.err-tarjeta h1[b-mdgn14oi6y] {
    font-size: var(--corp-fs-xl, 1.1rem);
    font-weight: 700;
    color: var(--corp-navy, #1e3a5a);
    margin: 0 0 .5rem;
}

.err-texto[b-mdgn14oi6y] {
    font-size: var(--corp-fs-body, .78rem);
    color: var(--corp-text-main, #334155);
    line-height: 1.55;
    margin: 0;
}

.err-codigo[b-mdgn14oi6y] {
    margin-top: 1.1rem;
    padding: .6rem .75rem;
    background: var(--corp-bg-head, #f5f7fa);
    border: 1px solid var(--corp-border-row, #eef2f6);
    border-radius: var(--corp-radius, 4px);
    /* El identificador de traza es largo: que se pueda seleccionar y no rompa la caja. */
    overflow-wrap: anywhere;
}

.err-codigo-lbl[b-mdgn14oi6y] {
    display: block;
    font-size: var(--corp-fs-xs, .60rem);
    font-weight: 700;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--corp-text-head, #475569);
    margin-bottom: .2rem;
}

.err-codigo code[b-mdgn14oi6y] {
    font-family: var(--corp-mono, Consolas, monospace);
    font-size: var(--corp-fs-sm, .72rem);
    color: var(--corp-text-main, #334155);
    user-select: all;
}

.err-nota[b-mdgn14oi6y] {
    margin: .55rem 0 0;
    font-size: var(--corp-fs-xs, .60rem);
    color: var(--corp-text-sub, #64748b);
    line-height: 1.5;
}

.err-acciones[b-mdgn14oi6y] {
    margin-top: 1.35rem;
    display: flex;
    gap: .5rem;
}

.err-btn[b-mdgn14oi6y] {
    display: inline-flex;
    align-items: center;
    padding: .45rem .9rem;
    border-radius: var(--corp-radius, 4px);
    font-size: var(--corp-fs-sm, .72rem);
    font-weight: 600;
    text-decoration: none;
    border: 1px solid transparent;
}

.err-btn-primario[b-mdgn14oi6y] {
    background: var(--corp-accent, #1565c0);
    color: #fff;
}

.err-btn-primario:hover[b-mdgn14oi6y] { filter: brightness(1.08); }

.err-btn:focus-visible[b-mdgn14oi6y] {
    outline: 2px solid var(--corp-accent, #1565c0);
    outline-offset: 2px;
}
/* /Components/Pages/FichaCostoUnd/FichaDialog.razor.rz.scp.css */
/* Modal overlay */
.ficha-modal-backdrop[b-zny7v4mno7] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(15, 23, 42, 0.5);
    backdrop-filter: blur(2px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1050;
    padding: 1rem;
}

/* Modal container */
.ficha-modal[b-zny7v4mno7] {
    background: white;
    border-radius: 8px;
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
    width: 100%;
    max-width: 1100px;
    height: 90vh;
    display: flex;
    flex-direction: column;
}

/* Header */
.ficha-header[b-zny7v4mno7] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.6rem 1rem;
    background: #1e293b;
    color: white;
    border-radius: 8px 8px 0 0;
    flex-shrink: 0;
}

.ficha-title[b-zny7v4mno7] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 600;
    font-size: var(--corp-fs-lg);
    margin: 0;
}

.header-right[b-zny7v4mno7] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.header-total[b-zny7v4mno7] {
    font-size: var(--corp-fs-body);
    font-weight: 600;
    font-family: 'Consolas', monospace;
    color: #93c5fd;
    background: rgba(255,255,255,0.08);
    padding: 0.2rem 0.6rem;
    border-radius: 4px;
}

.btn-close-modal[b-zny7v4mno7] {
    background: rgba(255, 255, 255, 0.1);
    border: none;
    color: white;
    width: 26px;
    height: 26px;
    border-radius: 4px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s;
}

.btn-close-modal:hover[b-zny7v4mno7] {
    background: rgba(255, 255, 255, 0.2);
}

/* ===== TAB NAVIGATION ===== */
.tab-nav[b-zny7v4mno7] {
    display: flex;
    background: #f1f5f9;
    border-bottom: 2px solid #e2e8f0;
    flex-shrink: 0;
    overflow-x: auto;
}

.tab-btn[b-zny7v4mno7] {
    flex: 1;
    padding: 0.5rem 0.6rem;
    font-size: var(--corp-fs-sm);
    font-weight: 500;
    color: #64748b;
    background: transparent;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.3rem;
    transition: all 0.15s;
    white-space: nowrap;
}

.tab-btn:hover[b-zny7v4mno7] {
    color: #334155;
    background: rgba(0,0,0,0.03);
}

.tab-btn.active[b-zny7v4mno7] {
    color: #1e293b;
    font-weight: 600;
    border-bottom-color: #1e293b;
    background: white;
}

.tab-badge[b-zny7v4mno7] {
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    background: #1e293b;
    color: white;
    padding: 0.05rem 0.35rem;
    border-radius: 10px;
    min-width: 16px;
    text-align: center;
    line-height: 1.3;
}

.tab-btn.active .tab-badge[b-zny7v4mno7] {
    background: #3b82f6;
}

/* Body - scrollable area */
.ficha-body[b-zny7v4mno7] {
    flex: 1;
    overflow-y: auto;
    padding: 0.75rem;
    background: #fafafa;
    min-height: 0;
}

/* Footer */
.ficha-footer[b-zny7v4mno7] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.5rem 0.75rem;
    background: #f8fafc;
    border-top: 1px solid #e5e7eb;
    border-radius: 0 0 8px 8px;
    flex-shrink: 0;
}

.footer-message[b-zny7v4mno7] {
    font-size: var(--corp-fs-sm);
    color: #6b7280;
    display: flex;
    align-items: center;
    gap: 0.3rem;
}

.footer-actions[b-zny7v4mno7] {
    display: flex;
    gap: 0.4rem;
    align-items: center;
}

.btn-cancel[b-zny7v4mno7] {
    padding: 0.35rem 0.7rem;
    font-size: var(--corp-fs-sm);
    font-weight: 500;
    background: white;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    color: #6b7280;
    cursor: pointer;
    transition: all 0.15s;
}

.btn-cancel:hover[b-zny7v4mno7] {
    background: #f3f4f6;
}

.btn-save[b-zny7v4mno7] {
    padding: 0.35rem 0.75rem;
    font-size: var(--corp-fs-sm);
    font-weight: 500;
    background: #1e293b;
    border: none;
    border-radius: 4px;
    color: white;
    cursor: pointer;
    transition: all 0.15s;
    display: flex;
    align-items: center;
    gap: 0.3rem;
}

.btn-save:hover[b-zny7v4mno7] {
    background: #334155;
}

.btn-nav[b-zny7v4mno7] {
    padding: 0.3rem 0.55rem;
    font-size: var(--corp-fs-sm);
    font-weight: 500;
    background: white;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    color: #475569;
    cursor: pointer;
    transition: all 0.15s;
    display: flex;
    align-items: center;
    gap: 0.2rem;
}

.btn-nav:hover[b-zny7v4mno7] {
    background: #f1f5f9;
    border-color: #94a3b8;
}

/* Info section */
.info-grid[b-zny7v4mno7] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.info-card[b-zny7v4mno7] {
    background: white;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    padding: 0.6rem;
}

.info-label[b-zny7v4mno7] {
    font-size: var(--corp-fs-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #6b7280;
    margin-bottom: 0.3rem;
}

.info-value[b-zny7v4mno7] {
    font-size: var(--corp-fs-body);
    color: #374151;
    font-weight: 500;
}

.info-card[b-zny7v4mno7]  .form-control,
.info-card[b-zny7v4mno7]  input {
    font-size: var(--corp-fs-body);
    padding: 0.3rem 0.5rem;
    border-radius: 4px;
    border: 1px solid #e5e7eb;
}

.info-card[b-zny7v4mno7]  textarea.form-control {
    min-height: 50px;
    resize: none;
}

/* ===== QUICK SUMMARY CARDS (General tab) ===== */
.quick-summary[b-zny7v4mno7] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.5rem;
}

.qs-card[b-zny7v4mno7] {
    background: white;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    padding: 0.6rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
    transition: all 0.15s;
}

.qs-card:hover[b-zny7v4mno7] {
    border-color: #93c5fd;
    background: #f0f9ff;
}

.qs-card.qs-total[b-zny7v4mno7] {
    background: #1e293b;
    border-color: #1e293b;
    color: white;
}

.qs-card.qs-total:hover[b-zny7v4mno7] {
    background: #334155;
}

.qs-icon[b-zny7v4mno7] {
    font-size: var(--corp-fs-xl);
    color: #6b7280;
    flex-shrink: 0;
}

.qs-total .qs-icon[b-zny7v4mno7] {
    color: #93c5fd;
}

.qs-data[b-zny7v4mno7] {
    min-width: 0;
}

.qs-amount[b-zny7v4mno7] {
    font-size: var(--corp-fs-body);
    font-weight: 700;
    font-family: 'Consolas', monospace;
    color: #1e293b;
    line-height: 1.2;
}

.qs-total .qs-amount[b-zny7v4mno7] {
    color: white;
}

.qs-label[b-zny7v4mno7] {
    font-size: var(--corp-fs-xs);
    color: #9ca3af;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.qs-total .qs-label[b-zny7v4mno7] {
    color: #94a3b8;
}

/* ===== SECTION / TAB SECTION ===== */
.section[b-zny7v4mno7] {
    background: white;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    overflow: hidden;
}

.tab-section[b-zny7v4mno7] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* ===== TOOLBAR ===== */
.section-toolbar[b-zny7v4mno7] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.35rem 0.5rem;
    background: #f8fafc;
    border-bottom: 1px solid #e5e7eb;
    gap: 0.5rem;
    flex-shrink: 0;
}

.toolbar-left[b-zny7v4mno7],
.toolbar-right[b-zny7v4mno7] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
}

.btn-tool[b-zny7v4mno7] {
    padding: 0.2rem 0.45rem;
    font-size: var(--corp-fs-sm);
    font-weight: 500;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    background: white;
    color: #374151;
    cursor: pointer;
    transition: all 0.15s;
    display: flex;
    align-items: center;
    gap: 0.25rem;
    white-space: nowrap;
}

.btn-tool:hover[b-zny7v4mno7] {
    background: #f0f9ff;
    border-color: #93c5fd;
    color: #1d4ed8;
}

.btn-tool-danger:hover[b-zny7v4mno7] {
    background: #fef2f2;
    border-color: #fca5a5;
    color: var(--corp-bad-strong);
}

.toolbar-sep[b-zny7v4mno7] {
    width: 1px;
    height: 16px;
    background: #d1d5db;
    margin: 0 0.15rem;
}

.toolbar-count[b-zny7v4mno7] {
    font-size: var(--corp-fs-xs);
    color: #9ca3af;
    font-weight: 500;
}

/* ===== TABLE SCROLL CONTAINER ===== */
.table-scroll[b-zny7v4mno7] {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
}

/* Table */
.detail-table[b-zny7v4mno7] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--corp-fs-sm);
}

.detail-table thead[b-zny7v4mno7] {
    background: #f8fafc;
    position: sticky;
    top: 0;
    z-index: 1;
}

.detail-table th[b-zny7v4mno7] {
    padding: 0.35rem 0.4rem;
    font-weight: 600;
    font-size: var(--corp-fs-xs);
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: #6b7280;
    border-bottom: 1px solid #e5e7eb;
    text-align: left;
}

.detail-table th.center[b-zny7v4mno7] { text-align: center; }
.detail-table th.right[b-zny7v4mno7] { text-align: right; }

.detail-table td[b-zny7v4mno7] {
    padding: 0.25rem 0.35rem;
    border-bottom: 1px solid #f3f4f6;
    vertical-align: middle;
}

.detail-table tbody tr:hover[b-zny7v4mno7] {
    background: #fafafa;
}

.detail-table tbody tr.row-selected[b-zny7v4mno7] {
    background: #eff6ff;
}

.detail-table[b-zny7v4mno7]  .form-control,
.detail-table[b-zny7v4mno7]  .form-control-sm {
    font-size: var(--corp-fs-sm);
    padding: 0.2rem 0.35rem;
    border-radius: 3px;
    border: 1px solid #e5e7eb;
}

.detail-table[b-zny7v4mno7]  .form-control:focus {
    border-color: #9ca3af;
    box-shadow: none;
}

.row-num[b-zny7v4mno7] {
    text-align: center;
    color: #9ca3af;
    font-size: var(--corp-fs-xs);
    font-weight: 500;
}

.col-amt[b-zny7v4mno7] {
    text-align: right;
    font-family: 'Consolas', monospace;
    color: #374151;
}

.row-actions[b-zny7v4mno7] {
    display: flex;
    gap: 2px;
    align-items: center;
    justify-content: center;
}

.btn-remove[b-zny7v4mno7] {
    padding: 0.1rem 0.35rem;
    font-size: var(--corp-fs-sm);
    background: transparent;
    color: #9ca3af;
    border: 1px solid #e5e7eb;
    border-radius: 3px;
    cursor: pointer;
    transition: all 0.15s;
}

.btn-remove:hover[b-zny7v4mno7] {
    background: #fee2e2;
    color: var(--corp-bad-strong);
    border-color: #fecaca;
}

.btn-action[b-zny7v4mno7] {
    padding: 0.1rem 0.3rem;
    font-size: var(--corp-fs-xs);
    background: transparent;
    color: #9ca3af;
    border: 1px solid #e5e7eb;
    border-radius: 3px;
    cursor: pointer;
    transition: all 0.15s;
}

.btn-action:hover[b-zny7v4mno7] {
    background: #eff6ff;
    color: #2563eb;
    border-color: #bfdbfe;
}

/* ===== TAB SUBTOTAL BAR ===== */
.tab-subtotal[b-zny7v4mno7] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.45rem 0.6rem;
    background: #f1f5f9;
    border-top: 1px solid #e2e8f0;
    font-size: var(--corp-fs-sm);
    font-weight: 600;
    color: #475569;
    flex-shrink: 0;
}

.tab-subtotal-amt[b-zny7v4mno7] {
    font-family: 'Consolas', monospace;
    font-size: var(--corp-fs-md);
    color: #1e293b;
}

/* ===== RESUMEN TAB ===== */
.resumen-tab[b-zny7v4mno7] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.resumen-breakdown[b-zny7v4mno7] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.5rem;
}

.resumen-card[b-zny7v4mno7] {
    background: white;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    overflow: hidden;
}

.resumen-card-header[b-zny7v4mno7] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.45rem 0.6rem;
    background: #f8fafc;
    border-bottom: 1px solid #e5e7eb;
    font-size: var(--corp-fs-sm);
    font-weight: 600;
    color: #374151;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.resumen-card-count[b-zny7v4mno7] {
    margin-left: auto;
    font-size: var(--corp-fs-xs);
    font-weight: 500;
    color: #9ca3af;
    text-transform: none;
}

.resumen-card-amount[b-zny7v4mno7] {
    padding: 0.5rem 0.6rem;
    font-size: var(--corp-fs-lg);
    font-weight: 700;
    font-family: 'Consolas', monospace;
    color: #1e293b;
}

.resumen-card-detail[b-zny7v4mno7] {
    padding: 0 0.6rem 0.5rem;
    border-top: 1px solid #f3f4f6;
}

.resumen-line[b-zny7v4mno7] {
    display: flex;
    justify-content: space-between;
    font-size: var(--corp-fs-sm);
    color: #6b7280;
    padding: 0.2rem 0;
    border-bottom: 1px solid #f9fafb;
}

.resumen-line span:last-child[b-zny7v4mno7] {
    font-family: 'Consolas', monospace;
    color: #374151;
    font-weight: 500;
}

.resumen-more[b-zny7v4mno7] {
    font-size: var(--corp-fs-xs);
    color: #9ca3af;
    padding-top: 0.2rem;
    font-style: italic;
}

.resumen-totals[b-zny7v4mno7] {
    display: flex;
    justify-content: flex-end;
}

/* Summary table */
.summary-table[b-zny7v4mno7] {
    width: 340px;
    border-collapse: collapse;
    font-size: var(--corp-fs-body);
    background: white;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    overflow: hidden;
}

.summary-table td[b-zny7v4mno7] {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid #f3f4f6;
}

.summary-table tr:last-child td[b-zny7v4mno7] {
    border-bottom: none;
}

.summary-label[b-zny7v4mno7] {
    font-weight: 500;
    color: #6b7280;
    text-align: right;
}

.summary-value[b-zny7v4mno7] {
    text-align: right;
    font-family: 'Consolas', monospace;
    font-weight: 600;
    color: #374151;
    width: 120px;
}

.summary-table .total-row td[b-zny7v4mno7] {
    background: #1e293b;
    color: white;
    font-weight: 600;
    font-size: var(--corp-fs-md);
}

.summary-table .total-row .summary-label[b-zny7v4mno7],
.summary-table .total-row .summary-value[b-zny7v4mno7] {
    color: white;
}

/* Subtotal row */
.subtotal-row[b-zny7v4mno7] {
    background: #f9fafb !important;
}

.subtotal-row td[b-zny7v4mno7] {
    padding: 0.35rem 0.4rem;
    font-weight: 600;
    color: #374151;
    border-bottom: none;
}

/* Cotización history button */
.btn-cotiz-hist[b-zny7v4mno7] {
    padding: 0.1rem 0.3rem;
    font-size: var(--corp-fs-xs);
    background: transparent;
    color: #6b7280;
    border: 1px solid #e5e7eb;
    border-radius: 3px;
    cursor: pointer;
    transition: all 0.15s;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-cotiz-hist:hover[b-zny7v4mno7] {
    background: #eff6ff;
    color: #2563eb;
    border-color: #bfdbfe;
}

/* Cotización history dialog */
.cotiz-hist-backdrop[b-zny7v4mno7] {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(15, 23, 42, 0.4);
    backdrop-filter: blur(1px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1100;
}

.cotiz-hist-dialog[b-zny7v4mno7] {
    background: white;
    border-radius: 8px;
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.18);
    width: 440px;
    max-width: 95vw;
    max-height: 400px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.cotiz-hist-header[b-zny7v4mno7] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.5rem 0.75rem;
    background: #1e293b;
    color: white;
}

.cotiz-hist-title[b-zny7v4mno7] {
    font-size: var(--corp-fs-body);
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 0.35rem;
}

.cotiz-hist-subtitle[b-zny7v4mno7] {
    padding: 0.35rem 0.75rem;
    font-size: var(--corp-fs-sm);
    font-weight: 500;
    color: #475569;
    background: #f8fafc;
    border-bottom: 1px solid #e5e7eb;
}

.cotiz-hist-loading[b-zny7v4mno7],
.cotiz-hist-empty[b-zny7v4mno7] {
    padding: 1.5rem;
    text-align: center;
    font-size: var(--corp-fs-body);
    color: #9ca3af;
}

.cotiz-hist-table[b-zny7v4mno7] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--corp-fs-sm);
}

.cotiz-hist-table thead[b-zny7v4mno7] {
    background: #f8fafc;
    position: sticky;
    top: 0;
}

.cotiz-hist-table th[b-zny7v4mno7] {
    padding: 0.35rem 0.6rem;
    font-weight: 600;
    font-size: var(--corp-fs-xs);
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: #6b7280;
    border-bottom: 1px solid #e5e7eb;
    text-align: left;
}

.cotiz-hist-table td[b-zny7v4mno7] {
    padding: 0.35rem 0.6rem;
    border-bottom: 1px solid #f3f4f6;
    color: #374151;
}

.cotiz-hist-table tbody tr:hover[b-zny7v4mno7] {
    background: #f0f9ff;
}

/* Responsive */
@media (max-width: 768px) {
    .ficha-modal[b-zny7v4mno7] {
        height: 95vh;
    }

    .info-grid[b-zny7v4mno7] {
        grid-template-columns: 1fr;
    }

    .quick-summary[b-zny7v4mno7] {
        grid-template-columns: repeat(2, 1fr);
    }

    .resumen-breakdown[b-zny7v4mno7] {
        grid-template-columns: 1fr;
    }

    .summary-table[b-zny7v4mno7] {
        width: 100%;
    }

    .tab-btn[b-zny7v4mno7] {
        font-size: var(--corp-fs-xs);
        padding: 0.4rem 0.3rem;
    }
}
/* /Components/Pages/FichaCostoUnd/NewFichaDialog.razor.rz.scp.css */
/* Modal overlay */
.ficha-modal-backdrop[b-8b20gv2s8u] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(15, 23, 42, 0.5);
    backdrop-filter: blur(2px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1050;
    padding: 1rem;
}

/* Modal container */
.ficha-modal[b-8b20gv2s8u] {
    background: white;
    border-radius: 8px;
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
    width: 100%;
    max-width: 600px; /* Smaller for just creation */
    min-height: 60vh;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
}

/* Header */
.ficha-header[b-8b20gv2s8u] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.8rem 1rem;
    background: #1e293b;
    color: white;
    border-radius: 8px 8px 0 0;
    flex-shrink: 0;
}

.ficha-title[b-8b20gv2s8u] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 600;
    font-size: var(--corp-fs-lg);
    margin: 0;
}

.btn-close-modal[b-8b20gv2s8u] {
    background: rgba(255, 255, 255, 0.1);
    border: none;
    color: white;
    width: 26px;
    height: 26px;
    border-radius: 4px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s;
}

.btn-close-modal:hover[b-8b20gv2s8u] {
    background: rgba(255, 255, 255, 0.2);
}

/* Body */
.ficha-body[b-8b20gv2s8u] {
    flex: 1;
    overflow-y: auto;
    padding: 1.5rem;
    background: #fafafa;
}

/* Footer */
.ficha-footer[b-8b20gv2s8u] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.8rem 1rem;
    background: #f8fafc;
    border-top: 1px solid #e5e7eb;
    border-radius: 0 0 8px 8px;
    flex-shrink: 0;
}

.footer-message[b-8b20gv2s8u] {
    font-size: var(--corp-fs-md);
    color: #6b7280;
    display: flex;
    align-items: center;
    gap: 0.3rem;
}

.footer-actions[b-8b20gv2s8u] {
    display: flex;
    gap: 0.5rem;
}

.btn-cancel[b-8b20gv2s8u] {
    padding: 0.4rem 0.8rem;
    font-size: var(--corp-fs-md);
    font-weight: 500;
    background: white;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    color: #6b7280;
    cursor: pointer;
    transition: all 0.15s;
}

.btn-cancel:hover[b-8b20gv2s8u] {
    background: #f3f4f6;
}

.btn-save[b-8b20gv2s8u] {
    padding: 0.4rem 1rem;
    font-size: var(--corp-fs-md);
    font-weight: 500;
    background: #1e293b;
    border: none;
    border-radius: 4px;
    color: white;
    cursor: pointer;
    transition: all 0.15s;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.btn-save:hover[b-8b20gv2s8u] {
    background: #334155;
}

/* Info section specific to form */
.form-group[b-8b20gv2s8u] {
    margin-bottom: 1rem;
}

.form-label[b-8b20gv2s8u] {
    font-size: var(--corp-fs-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #4b5563;
    margin-bottom: 0.4rem;
    display: block;
}

.form-control[b-8b20gv2s8u] {
    font-size: var(--corp-fs-lg);
    padding: 0.5rem;
    border-radius: 6px;
    border: 1px solid #d1d5db;
    width: 100%;
}

.form-control:focus[b-8b20gv2s8u] {
    outline: none;
    border-color: #6366f1;
    box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
}

textarea.form-control[b-8b20gv2s8u] {
    min-height: 80px;
    resize: vertical;
}
/* /Components/Pages/Gerencia/CompDashboardProyectoPM.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   Dashboard de seguimiento de un proyecto · CSS aislado del componente.
   Mismo lenguaje que el Escritorio de Compras: blanco y gris para todo, el
   color aparece SOLO donde algo pide acción (sobrecosto, atraso, sobregiro),
   cifras en monoespaciada, etiquetas en versalitas pequeñas y bordes de 1px.
   Lo genérico (toolbar, statsbar, pestañas, tarjetas, tablas) viene de
   corporate.css. Las rejillas que se acomodan al ancho del panel y el drawer
   del trámite van en el bloque de estilos del .razor: ver el porqué allí.
   ══════════════════════════════════════════════════════════════════════ */

/* Fondo gris también cuando va embebido en la tarjeta blanca de Actividad de PMs:
   sin él las tarjetas quedaban blanco sobre blanco y no se distinguían las secciones. */
.dcp-main[b-5smjt9mjll] { background: var(--corp-bg-body); }

/* Toolbar: el avance se lee en tenue sobre la barra navy. */
.dcp-tb-av[b-5smjt9mjll] { font-size: var(--corp-fs-sm); color: var(--corp-text-muted); white-space: nowrap; }
.dcp-tb-av b[b-5smjt9mjll] { color: #fff; font-family: var(--corp-mono); }

/* Nueve pestañas no caben en el panel angosto: desplazan en vez de salirse. */
.dcp-tabs[b-5smjt9mjll] { overflow-x: auto; scrollbar-width: none; }
.dcp-tabs[b-5smjt9mjll]::-webkit-scrollbar { height: 0; }
.dcp-tabs .corp-tab[b-5smjt9mjll] { white-space: nowrap; flex-shrink: 0; }

/* ── Punto de estado + texto gris (misma pieza que el Escritorio) ── */
.dcp-dot[b-5smjt9mjll] { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; display: inline-block; background: var(--corp-text-muted); }
.dcp-dot.info[b-5smjt9mjll] { background: var(--corp-accent); }
.dcp-dot.warn[b-5smjt9mjll] { background: var(--corp-warn-strong); }
.dcp-dot.bad[b-5smjt9mjll]  { background: var(--corp-bad-strong); }
.dcp-dot.ok[b-5smjt9mjll]   { background: var(--corp-ok-strong); }
.dcp-dot.mut[b-5smjt9mjll]  { background: #cbd5e1; }
.dcp-st[b-5smjt9mjll] { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }
.dcp-st.mut[b-5smjt9mjll] { color: var(--corp-text-muted); }

/* ── Aviso de carga fallida: blanco con filete de color ── */
.dcp-alert[b-5smjt9mjll] { display: flex; align-items: center; gap: 0.6rem; padding: 0.45rem 0.75rem; background: #fff; border: 1px solid #fecaca; border-left: 3px solid var(--corp-bad-strong); border-radius: var(--corp-radius); font-size: var(--corp-fs-sm); color: var(--corp-bad); flex-wrap: wrap; }
.dcp-alert-b[b-5smjt9mjll] { flex: 1 1 14rem; min-width: 0; display: flex; flex-direction: column; gap: 0.1rem; }
.dcp-alert-b span[b-5smjt9mjll] { color: var(--corp-text-sub); font-size: var(--corp-fs-xs); overflow-wrap: anywhere; }

/* ── Cajas de cifras (la rejilla está en el bloque de estilos del .razor) ── */
.dcp-kpi[b-5smjt9mjll] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.45rem 0.65rem; min-width: 0; }
.dcp-kpi .k[b-5smjt9mjll] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dcp-kpi .v[b-5smjt9mjll] { font-family: var(--corp-mono); font-size: var(--corp-fs-lg); font-weight: 800; color: #0f172a; line-height: 1.2; margin-top: 0.15rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dcp-kpi .v.warn[b-5smjt9mjll] { color: var(--corp-warn); }
.dcp-kpi .v.bad[b-5smjt9mjll]  { color: var(--corp-bad); }
.dcp-kpi .s[b-5smjt9mjll] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ── Banderas gerenciales ── */
.dcp-flags[b-5smjt9mjll] { display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; }
.dcp-flags-lbl[b-5smjt9mjll] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-muted); margin-right: 0.15rem; }

/* ── Cabecera de tarjeta: pista tenue y contador a la derecha ── */
.dcp-hint[b-5smjt9mjll] { margin-left: auto; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--corp-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.dcp-n[b-5smjt9mjll] { margin-left: auto; background: #eef2f6; color: var(--corp-text-sub); font-size: var(--corp-fs-xs); font-weight: 700; text-transform: none; letter-spacing: 0; padding: 0 6px; border-radius: 9px; white-space: nowrap; font-family: var(--corp-mono); }
.dcp-hint + .dcp-n[b-5smjt9mjll] { margin-left: 0; }
.dcp-n.bad[b-5smjt9mjll]  { background: var(--corp-bad-bg); color: var(--corp-bad); }

.dcp-stack[b-5smjt9mjll] { display: flex; flex-direction: column; gap: 0.65rem; }

/* ── Barra de avance: neutra (azul) salvo que algo pida acción ── */
.dcp-prog[b-5smjt9mjll] { width: 100%; min-width: 3rem; height: 6px; background: var(--corp-border-row); border-radius: 99px; overflow: hidden; }
.dcp-prog.lg[b-5smjt9mjll] { height: 8px; }
.dcp-prog > span[b-5smjt9mjll] { display: block; height: 100%; border-radius: 99px; background: var(--corp-accent); transition: width 0.3s; }
.dcp-prog > span.ok[b-5smjt9mjll]   { background: var(--corp-ok-strong); }
.dcp-prog > span.warn[b-5smjt9mjll] { background: var(--corp-warn-strong); }
.dcp-prog > span.bad[b-5smjt9mjll]  { background: var(--corp-bad-strong); }

.dcp-meter[b-5smjt9mjll] { display: flex; flex-direction: column; gap: 0.3rem; }
.dcp-meter-h[b-5smjt9mjll] { display: flex; justify-content: space-between; align-items: baseline; gap: 0.5rem; font-size: var(--corp-fs-sm); color: var(--corp-text-sub); }
.dcp-meter-h b[b-5smjt9mjll] { font-family: var(--corp-mono); color: #1e293b; white-space: nowrap; }
.dcp-meter-h b.bad[b-5smjt9mjll] { color: var(--corp-bad); }
.dcp-meter-s[b-5smjt9mjll] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }

/* ── Cifras chicas dentro de una tarjeta ── */
.dcp-mini[b-5smjt9mjll] { display: grid; grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr)); gap: 0.5rem; }
.dcp-mini-i[b-5smjt9mjll] { background: var(--corp-bg-head); border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.4rem 0.6rem; min-width: 0; }
.dcp-mini-i .k[b-5smjt9mjll] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dcp-mini-i .v[b-5smjt9mjll] { font-family: var(--corp-mono); font-size: var(--corp-fs-md); font-weight: 700; color: #0f172a; margin-top: 0.1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dcp-mini-i .v.warn[b-5smjt9mjll] { color: var(--corp-warn); }
.dcp-mini-i .v.bad[b-5smjt9mjll]  { color: var(--corp-bad); }

/* ── Filas con barra (actividades, categorías) ── */
.dcp-gauges[b-5smjt9mjll] { display: flex; flex-direction: column; }
.dcp-gauge[b-5smjt9mjll] { display: grid; grid-template-columns: minmax(0, 40%) minmax(0, 1fr) 3.75rem; align-items: center; gap: 0.6rem; padding: 0.35rem 0; border-bottom: 1px solid var(--corp-border-row); }
.dcp-gauge:last-child[b-5smjt9mjll] { border-bottom: 0; }
.dcp-gauge .t[b-5smjt9mjll] { font-size: var(--corp-fs-sm); color: #1e293b; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dcp-gauge .nm[b-5smjt9mjll] { display: flex; align-items: center; gap: 0.4rem; min-width: 0; font-size: var(--corp-fs-sm); font-weight: 600; color: #1e293b; }
.dcp-gauge .mt[b-5smjt9mjll] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); font-family: var(--corp-mono); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dcp-gauge .p[b-5smjt9mjll] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; color: #1e293b; text-align: right; white-space: nowrap; }
.dcp-gauge .p.ok[b-5smjt9mjll]  { color: var(--corp-ok); }
.dcp-gauge .p.bad[b-5smjt9mjll] { color: var(--corp-bad); }
.dcp-more[b-5smjt9mjll] { text-align: center; padding: 0.3rem 0 0; font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }

/* ── Avance físico vs ejecución de gasto ── */
.dcp-cmp[b-5smjt9mjll] { border: 1px solid var(--corp-border); border-radius: var(--corp-radius); overflow: hidden; }
.dcp-cmp-h[b-5smjt9mjll] { padding: 0.35rem 0.6rem; background: var(--corp-bg-head); border-bottom: 1px solid var(--corp-border); font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head); }
.dcp-cmp-cols[b-5smjt9mjll] { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 0.4rem 1rem; padding: 0.5rem 0.6rem; }
.dcp-cmp-col[b-5smjt9mjll] { display: flex; flex-direction: column; gap: 0.2rem; min-width: 0; }
.dcp-cmp-col .k[b-5smjt9mjll] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-muted); }
.dcp-cmp-col .p[b-5smjt9mjll] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; color: #1e293b; }
.dcp-cmp-col .p.bad[b-5smjt9mjll] { color: var(--corp-bad); }
.dcp-cmp-msg[b-5smjt9mjll] { display: flex; align-items: center; gap: 0.4rem; padding: 0.4rem 0.6rem; border-top: 1px solid var(--corp-border-row); font-size: var(--corp-fs-sm); font-weight: 600; color: var(--corp-text-sub); }
.dcp-cmp-msg.warn[b-5smjt9mjll] { color: var(--corp-warn); }
.dcp-cmp-msg.bad[b-5smjt9mjll]  { color: var(--corp-bad); }

/* ── Alertas y observaciones: una fila por alerta ── */
.dcp-arow[b-5smjt9mjll] { display: flex; align-items: flex-start; gap: 0.55rem; padding: 0.45rem 0.75rem; border-bottom: 1px solid var(--corp-border-row); }
.dcp-arow:last-child[b-5smjt9mjll] { border-bottom: 0; }
.dcp-arow > .dcp-dot[b-5smjt9mjll] { margin-top: 0.35rem; }
.dcp-arow-b[b-5smjt9mjll] { flex: 1; min-width: 0; }
.dcp-arow-t[b-5smjt9mjll] { font-size: var(--corp-fs-sm); font-weight: 600; color: #1e293b; }
.dcp-arow-d[b-5smjt9mjll] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); margin-top: 0.1rem; }
.dcp-arow > .corp-pill[b-5smjt9mjll] { flex-shrink: 0; }

/* ── Embudo de etapas (trámites y solicitudes de compra) ── */
.dcp-pipe[b-5smjt9mjll] { display: grid; grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr)); gap: 0.5rem; }
.dcp-pst[b-5smjt9mjll] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.45rem 0.65rem; min-width: 0; display: flex; flex-direction: column; gap: 0.2rem; }
.dcp-pst .k[b-5smjt9mjll] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dcp-pst .v[b-5smjt9mjll] { font-family: var(--corp-mono); font-size: 1.3rem; font-weight: 800; color: #0f172a; line-height: 1.1; }
.dcp-pst .v.zero[b-5smjt9mjll] { color: #cbd5e1; }
.dcp-pst .v.warn[b-5smjt9mjll] { color: var(--corp-warn); }

/* ── Tablas (corp-tbl) ── */
.dcp-tbl td.strong[b-5smjt9mjll] { font-weight: 600; color: #1e293b; }
.dcp-tbl td.mono[b-5smjt9mjll]   { font-family: var(--corp-mono); }
.dcp-tbl td.mut[b-5smjt9mjll]    { color: var(--corp-text-muted); }
.dcp-tbl td.warn[b-5smjt9mjll]   { color: var(--corp-warn); font-weight: 600; }
.dcp-tbl td.bad[b-5smjt9mjll]    { color: var(--corp-bad); font-weight: 600; }
.dcp-tbl th.bar[b-5smjt9mjll], .dcp-tbl td.bar[b-5smjt9mjll] { width: 10%; min-width: 6rem; }
/* corporate.css alinea a la derecha td.r solo en tbody: el pie necesita lo mismo. */
.dcp-tbl tfoot td.r[b-5smjt9mjll], .dcp-tbl tfoot td.lbl[b-5smjt9mjll] { text-align: right; }
.dcp-tbl tfoot td.c[b-5smjt9mjll] { text-align: center; }
.dcp-tbl tfoot td.lbl[b-5smjt9mjll] { font-family: var(--corp-font); color: var(--corp-text-head); }
.dcp-barcell[b-5smjt9mjll] { display: flex; align-items: center; gap: 0.4rem; }
.dcp-barcell b[b-5smjt9mjll] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-text-sub); white-space: nowrap; min-width: 3rem; text-align: right; }
.dcp-barcell b.warn[b-5smjt9mjll] { color: var(--corp-warn); }
.dcp-barcell b.bad[b-5smjt9mjll]  { color: var(--corp-bad); }

/* ── Teléfono ── */
@media (max-width: 640px) {
    .dcp-gauge[b-5smjt9mjll] { grid-template-columns: minmax(0, 1fr) 3.5rem; }
    .dcp-gauge > .dcp-prog[b-5smjt9mjll] { grid-column: 1 / -1; grid-row: 2; }
}
/* /Components/Pages/Gerencia/Movil/PagAprobacionesMovil.razor.rz.scp.css */
/* ============================================================================
   Bandeja de firma en el teléfono.

   Reglas de la pantalla:
   · Todo lo tocable mide al menos 44px de alto (mínimo táctil).
   · Los tamaños de letra NO usan la escala de escritorio (--corp-fs-*, de 0.6 a
     0.9rem): a un brazo de distancia y con sol encima eso no se lee. El cuerpo
     arranca en 0.95rem y los montos —el dato por el que se firma— en 1.6rem.
   · Nada scrollea horizontalmente: una sola columna, siempre.
   · Los botones de decisión viven anclados al pie, en la zona del pulgar, y no
     se van con el scroll: la decisión debe estar a un toque desde cualquier
     punto del expediente.

   Paleta: los tokens corporativos (--corp-*) del sistema de diseño global.
   ============================================================================ */

.bm[b-2z7otg4wu8] {
    display: flex;
    flex-direction: column;
    height: 100vh;
    height: 100dvh;
    background: var(--corp-bg-body, #f5f6f8);
    font-family: var(--corp-font, 'Segoe UI', system-ui, sans-serif);
    color: var(--corp-text-main, #334155);
    overflow: hidden;
}

/* Con el modo «sistema completo» activo (menú «···») esta bandeja ya no es la pantalla entera:
   el layout le pone encima su barra superior de 3.25rem. Sin descontarla, la bandeja mediría
   una pantalla completa POR DEBAJO de esa barra y sobraría por el pie. El corte es el mismo que
   usa MainLayout para mostrar esa barra. */
@media (max-width: 991.98px) {
    .bm.en-layout[b-2z7otg4wu8] {
        height: calc(100vh - 3.25rem);
        height: calc(100dvh - 3.25rem);
    }
}

/* ── Barra superior ────────────────────────────────────────────────────── */
.bm-top[b-2z7otg4wu8] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-shrink: 0;
    padding: 0.7rem 0.85rem;
    background: var(--corp-bg-toolbar, #1a2a3a);
    border-bottom: 2px solid var(--corp-accent, #1565c0);
    color: #fff;
}

.bm-top-txt[b-2z7otg4wu8] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

.bm-top-tit[b-2z7otg4wu8] {
    font-size: var(--corp-fs-xl);
    font-weight: 800;
    letter-spacing: -0.01em;
}

.bm-top-sub[b-2z7otg4wu8] {
    font-size: var(--corp-fs-body);
    color: rgba(255, 255, 255, 0.7);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.bm-icon-btn[b-2z7otg4wu8] {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
}

.bm-icon-btn:disabled[b-2z7otg4wu8] {
    opacity: 0.5;
}

/* ── Filtros por tipo ──────────────────────────────────────────────────── */
.bm-chips[b-2z7otg4wu8] {
    display: flex;
    gap: 0.4rem;
    flex-shrink: 0;
    padding: 0.6rem 0.85rem;
    background: #fff;
    border-bottom: 1px solid var(--corp-border, #d1d9e0);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.bm-chips[b-2z7otg4wu8]::-webkit-scrollbar {
    display: none;
}

.bm-chip[b-2z7otg4wu8] {
    flex-shrink: 0;
    min-height: 38px;
    padding: 0.35rem 0.7rem;
    border: 1px solid var(--corp-border, #d1d9e0);
    border-radius: 999px;
    background: #fff;
    color: var(--corp-text-main, #334155);
    font-size: var(--corp-fs-md);
    font-weight: 600;
    white-space: nowrap;
    cursor: pointer;
}

.bm-chip.on[b-2z7otg4wu8] {
    background: var(--corp-navy, #1e3a5a);
    border-color: var(--corp-navy, #1e3a5a);
    color: #fff;
}

.bm-chip-n[b-2z7otg4wu8] {
    display: inline-block;
    margin-left: 0.3rem;
    padding: 0 0.35rem;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.08);
    font-size: var(--corp-fs-body);
    font-weight: 800;
}

.bm-chip.on .bm-chip-n[b-2z7otg4wu8] {
    background: rgba(255, 255, 255, 0.22);
}

/* ── Cuerpo desplazable ────────────────────────────────────────────────── */
.bm-scroll[b-2z7otg4wu8] {
    flex: 1;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    padding: 0.7rem 0.75rem 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
}

    /* Sin esto, cuando el contenido no cabe, el flex comprime cada tarjeta en vez de dejar
       scrollear: las tarjetas se recortan por arriba y por abajo. */
    .bm-scroll > *[b-2z7otg4wu8] {
        flex-shrink: 0;
    }

.bm-banner[b-2z7otg4wu8] {
    flex-shrink: 0;
    margin: 0.6rem 0.75rem 0;
    padding: 0.7rem 0.85rem;
    border-radius: 8px;
    font-size: var(--corp-fs-lg);
    background: var(--corp-bad-bg, #fee2e2);
    color: var(--corp-bad, #991b1b);
}

/* ── Tarjeta de la lista ───────────────────────────────────────────────── */
.bm-card[b-2z7otg4wu8] {
    display: flex;
    flex-direction: column;
    /* La tarjeta es un <button>, y el navegador le pone align-items:center: en una columna eso
       centra cada línea y deja que el pie (nombre largo de proyecto) crezca a su ancho de
       contenido en vez de ajustarse. Hay que devolver el stretch a mano. */
    align-items: stretch;
    gap: 0.25rem;
    width: 100%;
    /* Sin esto, un nombre de proyecto largo estira la tarjeta más allá del ancho del teléfono
       y arrastra todo su contenido: el texto se ve descuadrado y la página gana scroll
       horizontal, que es justo lo que esta pantalla no debe tener. */
    min-width: 0;
    overflow: hidden;
    text-align: left;
    padding: 0.85rem 0.9rem;
    border: 1px solid var(--corp-border, #d1d9e0);
    border-left: 4px solid var(--corp-accent, #1565c0);
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
    cursor: pointer;
}

.bm-card:active[b-2z7otg4wu8] {
    background: #f8fafc;
}

.bm-card-top[b-2z7otg4wu8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    min-width: 0;
}

.bm-tipo[b-2z7otg4wu8] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--corp-text-sub, #64748b);
}

.bm-espera[b-2z7otg4wu8] {
    font-size: var(--corp-fs-sm);
    font-weight: 800;
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    background: #eef2f6;
    color: var(--corp-text-sub, #64748b);
    white-space: nowrap;
}

.bm-espera.alerta[b-2z7otg4wu8] {
    background: var(--corp-warn-bg, #fef3c7);
    color: var(--corp-warn, #92400e);
}

.bm-espera.mal[b-2z7otg4wu8] {
    background: var(--corp-bad-bg, #fee2e2);
    color: var(--corp-bad, #991b1b);
}

.bm-card-tit[b-2z7otg4wu8] {
    font-size: var(--corp-fs-lg);
    font-weight: 700;
    color: var(--corp-navy, #1e3a5a);
    line-height: 1.25;
    overflow-wrap: anywhere;
}

.bm-card-sub[b-2z7otg4wu8] {
    font-size: var(--corp-fs-md);
    color: var(--corp-text-sub, #64748b);
    overflow-wrap: anywhere;
}

.bm-card-monto[b-2z7otg4wu8] {
    display: flex;
    align-items: baseline;
    gap: 0.4rem;
    margin-top: 0.2rem;
    font-family: var(--corp-mono, Consolas, monospace);
    font-size: 1.35rem;
    font-weight: 800;
    color: var(--corp-navy, #1e3a5a);
}

.bm-card-nota[b-2z7otg4wu8] {
    font-family: var(--corp-font, sans-serif);
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    padding: 0.1rem 0.4rem;
    border-radius: 4px;
    background: var(--corp-warn-bg, #fef3c7);
    color: var(--corp-warn, #92400e);
}

.bm-card-pie[b-2z7otg4wu8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    min-width: 0;
    margin-top: 0.15rem;
    font-size: var(--corp-fs-body);
    color: var(--corp-text-sub, #64748b);
}

.bm-card-proy[b-2z7otg4wu8] {
    /* min-width:0 es lo que habilita el recorte: sin él un ítem flex nunca baja de su ancho de
       contenido y el ellipsis no llega a aplicarse. */
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.bm-card-ref[b-2z7otg4wu8] {
    flex-shrink: 0;
    font-family: var(--corp-mono, Consolas, monospace);
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-muted, #94a3b8);
}

/* ── Vacío / cargando ──────────────────────────────────────────────────── */
.bm-vacio[b-2z7otg4wu8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    margin-top: 25%;
    padding: 1rem;
    text-align: center;
    color: var(--corp-text-sub, #64748b);
    font-size: var(--corp-fs-lg);
}

.bm-vacio-ico[b-2z7otg4wu8] {
    font-size: 2.5rem;
    color: var(--corp-ok, #166534);
}

.bm-vacio-tit[b-2z7otg4wu8] {
    font-size: var(--corp-fs-xl);
    font-weight: 800;
    color: var(--corp-navy, #1e3a5a);
}

.bm-spinner[b-2z7otg4wu8] {
    width: 2rem;
    height: 2rem;
    border: 3px solid rgba(21, 101, 192, 0.25);
    border-top-color: var(--corp-accent, #1565c0);
    border-radius: 50%;
    animation: bm-spin-b-2z7otg4wu8 0.8s linear infinite;
}

@keyframes bm-spin-b-2z7otg4wu8 {
    to {
        transform: rotate(360deg);
    }
}

/* ── Encabezado del detalle ────────────────────────────────────────────── */
.bm-hero[b-2z7otg4wu8] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.9rem;
    border: 1px solid var(--corp-border, #d1d9e0);
    border-radius: 10px;
    background: #fff;
}

.bm-hero-monto[b-2z7otg4wu8] {
    font-family: var(--corp-mono, Consolas, monospace);
    font-size: 1.75rem;
    font-weight: 800;
    line-height: 1.1;
    color: var(--corp-navy, #1e3a5a);
}

.bm-hero-nota[b-2z7otg4wu8] {
    font-size: var(--corp-fs-body);
    font-weight: 700;
    color: var(--corp-warn, #92400e);
}

.bm-hero-tit[b-2z7otg4wu8] {
    margin-top: 0.25rem;
    font-size: var(--corp-fs-xl);
    font-weight: 700;
    line-height: 1.3;
}

.bm-hero-sub[b-2z7otg4wu8] {
    font-size: var(--corp-fs-lg);
    color: var(--corp-text-sub, #64748b);
}

.bm-hero-meta[b-2z7otg4wu8] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 0.9rem;
    margin-top: 0.5rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--corp-border-row, #eef2f6);
    font-size: var(--corp-fs-md);
    color: var(--corp-text-sub, #64748b);
}

/* ── Alertas ───────────────────────────────────────────────────────────── */
.bm-alerta[b-2z7otg4wu8] {
    display: flex;
    gap: 0.5rem;
    padding: 0.75rem 0.85rem;
    border-radius: 10px;
    font-size: var(--corp-fs-lg);
    line-height: 1.35;
    background: var(--corp-warn-bg, #fef3c7);
    color: var(--corp-warn, #92400e);
    border: 1px solid rgba(146, 64, 14, 0.2);
}

.bm-alerta.mal[b-2z7otg4wu8] {
    background: var(--corp-bad-bg, #fee2e2);
    color: var(--corp-bad, #991b1b);
    border-color: rgba(153, 27, 27, 0.25);
    font-weight: 600;
}

.bm-alerta-ico[b-2z7otg4wu8] {
    flex-shrink: 0;
}

/* ── Bloques de datos ──────────────────────────────────────────────────── */
.bm-bloque[b-2z7otg4wu8] {
    padding: 0.85rem 0.9rem;
    border: 1px solid var(--corp-border, #d1d9e0);
    border-radius: 10px;
    background: #fff;
}

.bm-bloque-tit[b-2z7otg4wu8] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0 0 0.6rem;
    font-size: var(--corp-fs-md);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--corp-text-head, #475569);
}

.bm-bloque-n[b-2z7otg4wu8] {
    padding: 0 0.4rem;
    border-radius: 999px;
    background: #eef2f6;
    font-size: var(--corp-fs-sm);
}

.bm-bloque-nota[b-2z7otg4wu8] {
    margin: -0.35rem 0 0.6rem;
    font-size: var(--corp-fs-body);
    color: var(--corp-text-muted, #94a3b8);
}

.bm-justif[b-2z7otg4wu8] {
    margin: 0;
    font-size: var(--corp-fs-lg);
    line-height: 1.4;
    white-space: pre-wrap;
}

.bm-datos[b-2z7otg4wu8] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem 0.6rem;
}

.bm-dato[b-2z7otg4wu8] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.bm-dato-lbl[b-2z7otg4wu8] {
    font-size: var(--corp-fs-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--corp-text-muted, #94a3b8);
}

.bm-dato-val[b-2z7otg4wu8] {
    font-family: var(--corp-mono, Consolas, monospace);
    font-size: var(--corp-fs-xl);
    font-weight: 700;
    color: var(--corp-navy, #1e3a5a);
    overflow-wrap: anywhere;
}

.bm-dato-val.bien[b-2z7otg4wu8] {
    color: var(--corp-ok, #166534);
}

.bm-dato-val.alerta[b-2z7otg4wu8] {
    color: var(--corp-warn, #92400e);
}

.bm-dato-val.mal[b-2z7otg4wu8] {
    color: var(--corp-bad, #991b1b);
}

.bm-dato-nota[b-2z7otg4wu8] {
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-muted, #94a3b8);
    line-height: 1.25;
}

/* ── Barra de consumo de presupuesto ───────────────────────────────────── */
.bm-barra[b-2z7otg4wu8] {
    height: 10px;
    margin-top: 0.8rem;
    border-radius: 999px;
    background: #e2e8f0;
    overflow: hidden;
}

.bm-barra-fill[b-2z7otg4wu8] {
    height: 100%;
    background: var(--corp-accent, #1565c0);
}

.bm-barra-fill.alerta[b-2z7otg4wu8] {
    background: var(--corp-warn-strong);
}

.bm-barra-fill.mal[b-2z7otg4wu8] {
    background: var(--corp-bad-strong);
}

.bm-barra-lbl[b-2z7otg4wu8] {
    display: block;
    margin-top: 0.3rem;
    font-size: var(--corp-fs-body);
    color: var(--corp-text-sub, #64748b);
}

/* ── Respaldos del voucher (la lista la dibuja CompRespaldosVoucher) ───── */
.bm-docs[b-2z7otg4wu8] {
    border: 1px solid var(--corp-border-row, #eef2f6);
    border-radius: 8px;
    background: #fbfcfd;
    overflow: hidden;
}

/* ── Líneas del expediente ─────────────────────────────────────────────── */
.bm-lineas[b-2z7otg4wu8] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.bm-linea[b-2z7otg4wu8] {
    padding: 0.6rem 0.65rem;
    border: 1px solid var(--corp-border-row, #eef2f6);
    border-left: 3px solid var(--corp-border, #d1d9e0);
    border-radius: 8px;
    background: #fbfcfd;
}

.bm-linea.bien[b-2z7otg4wu8] {
    border-left-color: var(--corp-ok, #166534);
}

.bm-linea.alerta[b-2z7otg4wu8] {
    border-left-color: var(--corp-warn-strong);
    background: #fffbeb;
}

.bm-linea.mal[b-2z7otg4wu8] {
    border-left-color: var(--corp-bad-strong);
    background: #fef2f2;
}

.bm-linea-top[b-2z7otg4wu8] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
    min-width: 0;
}

.bm-linea-tit[b-2z7otg4wu8] {
    min-width: 0;
    font-size: var(--corp-fs-lg);
    font-weight: 700;
    color: var(--corp-navy, #1e3a5a);
    line-height: 1.25;
    overflow-wrap: anywhere;
}

.bm-linea-monto[b-2z7otg4wu8] {
    flex-shrink: 0;
    font-family: var(--corp-mono, Consolas, monospace);
    font-size: var(--corp-fs-lg);
    font-weight: 800;
}

.bm-linea-sub[b-2z7otg4wu8] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.15rem 0.6rem;
    margin-top: 0.15rem;
    font-size: var(--corp-fs-md);
    color: var(--corp-text-sub, #64748b);
}

.bm-linea-cant[b-2z7otg4wu8] {
    font-family: var(--corp-mono, Consolas, monospace);
}

.bm-linea-nota[b-2z7otg4wu8] {
    margin-top: 0.25rem;
    font-size: var(--corp-fs-body);
    line-height: 1.3;
    color: var(--corp-text-sub, #64748b);
}

.bm-linea.mal .bm-linea-nota[b-2z7otg4wu8] {
    color: var(--corp-bad, #991b1b);
    font-weight: 600;
}

/* ── Cuadro comparativo desplegable ────────────────────────────────────── */
.bm-comparar[b-2z7otg4wu8] {
    width: 100%;
    min-height: 40px;
    margin-top: 0.45rem;
    padding: 0 0.5rem;
    border: 1px solid var(--corp-border, #d1d9e0);
    border-radius: 6px;
    background: #fff;
    color: var(--corp-accent, #1565c0);
    font-size: var(--corp-fs-md);
    font-weight: 700;
    text-align: left;
    /* El navegador dibuja los <button> como inline-flex centrado, y eso ignora el text-align. */
    justify-content: flex-start;
    cursor: pointer;
}

.bm-ofertas[b-2z7otg4wu8] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    margin-top: 0.4rem;
}

/* Nombre del proveedor en su propia fila y los dos montos debajo: con las tres cosas en una
   sola fila, en 390px el nombre se parte en tres líneas y los montos quedan flotando. */
.bm-oferta[b-2z7otg4wu8] {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 0.15rem 0.5rem;
    align-items: baseline;
    padding: 0.5rem 0.55rem;
    border-radius: 6px;
    background: #fff;
    border: 1px solid var(--corp-border-row, #eef2f6);
    font-size: var(--corp-fs-md);
}

.bm-oferta.gana[b-2z7otg4wu8] {
    border-color: #86efac;
    background: #f0fdf4;
}

.bm-oferta-prov[b-2z7otg4wu8] {
    grid-column: 1 / -1;
    font-weight: 700;
    color: var(--corp-navy, #1e3a5a);
    overflow-wrap: anywhere;
}

.bm-oferta-tag[b-2z7otg4wu8] {
    display: inline-block;
    margin-left: 0.35rem;
    padding: 0.05rem 0.35rem;
    border-radius: 4px;
    background: var(--corp-ok-bg, #dcfce7);
    color: var(--corp-ok, #166534);
    font-size: var(--corp-fs-sm);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.bm-oferta-precio[b-2z7otg4wu8],
.bm-oferta-total[b-2z7otg4wu8] {
    font-family: var(--corp-mono, Consolas, monospace);
    white-space: nowrap;
}

.bm-oferta-precio[b-2z7otg4wu8] {
    color: var(--corp-text-sub, #64748b);
}

.bm-oferta-total[b-2z7otg4wu8] {
    font-weight: 700;
    text-align: right;
}

.bm-oferta-dif[b-2z7otg4wu8] {
    grid-column: 1 / -1;
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-sub, #64748b);
}

.bm-vermas[b-2z7otg4wu8] {
    width: 100%;
    min-height: 44px;
    margin-top: 0.6rem;
    border: 1px dashed var(--corp-border, #d1d9e0);
    border-radius: 8px;
    background: #fff;
    color: var(--corp-accent, #1565c0);
    font-size: var(--corp-fs-lg);
    font-weight: 700;
    cursor: pointer;
}

.bm-fin[b-2z7otg4wu8] {
    padding: 0.5rem 0 0;
    text-align: center;
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-muted, #94a3b8);
}

/* ── Acciones fijas ────────────────────────────────────────────────────── */
.bm-acciones[b-2z7otg4wu8] {
    display: flex;
    gap: 0.5rem;
    flex-shrink: 0;
    padding: 0.6rem 0.75rem calc(0.6rem + env(safe-area-inset-bottom, 0px));
    background: #fff;
    border-top: 1px solid var(--corp-border, #d1d9e0);
    box-shadow: 0 -2px 8px rgba(15, 23, 42, 0.08);
}

.bm-btn[b-2z7otg4wu8] {
    flex: 1;
    min-height: 50px;
    padding: 0 0.5rem;
    border: 1px solid transparent;
    border-radius: 10px;
    font-size: var(--corp-fs-lg);
    font-weight: 800;
    cursor: pointer;
}

.bm-btn:disabled[b-2z7otg4wu8] {
    opacity: 0.45;
}

.bm-btn.aprobar[b-2z7otg4wu8] {
    background: var(--corp-ok-strong);
    color: #fff;
}

.bm-btn.rechazar[b-2z7otg4wu8] {
    background: #fff;
    border-color: var(--corp-bad-strong);
    color: var(--corp-bad-strong);
}

.bm-btn.devolver[b-2z7otg4wu8] {
    background: #fff;
    border-color: var(--corp-border-dark, #3b5168);
    color: var(--corp-navy, #1e3a5a);
}

.bm-btn.ghost[b-2z7otg4wu8] {
    background: #fff;
    border-color: var(--corp-border, #d1d9e0);
    color: var(--corp-text-sub, #64748b);
}

/* Un <a> con pinta de botón (Mi cuenta): necesita centrar su texto a mano. */
.bm-btn-link[b-2z7otg4wu8] {
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}

/* Dentro del <form> de cierre de sesión el botón no hereda el flex de la hoja. */
.bm-btn-ancho[b-2z7otg4wu8] {
    width: 100%;
}

.bm-bloqueo[b-2z7otg4wu8] {
    flex-shrink: 0;
    padding: 0.5rem 0.85rem calc(0.5rem + env(safe-area-inset-bottom, 0px));
    background: var(--corp-bad-bg, #fee2e2);
    color: var(--corp-bad, #991b1b);
    font-size: var(--corp-fs-md);
    font-weight: 600;
    line-height: 1.3;
}

/* ── Hoja de confirmación ──────────────────────────────────────────────── */
.bm-sheet-fondo[b-2z7otg4wu8] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
    z-index: 1400;
}

.bm-sheet[b-2z7otg4wu8] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1401;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.5rem 0.9rem calc(1rem + env(safe-area-inset-bottom, 0px));
    background: #fff;
    border-radius: 16px 16px 0 0;
    box-shadow: 0 -4px 20px rgba(15, 23, 42, 0.25);
}

.bm-sheet-asa[b-2z7otg4wu8] {
    width: 40px;
    height: 4px;
    margin: 0.25rem auto 0.5rem;
    border-radius: 999px;
    background: #cbd5e1;
}

.bm-sheet-tit[b-2z7otg4wu8] {
    margin: 0;
    font-size: var(--corp-fs-xl);
    font-weight: 800;
    color: var(--corp-navy, #1e3a5a);
}

.bm-sheet-sub[b-2z7otg4wu8] {
    margin: 0;
    font-size: var(--corp-fs-lg);
    line-height: 1.35;
    color: var(--corp-text-sub, #64748b);
}

.bm-sheet-txt[b-2z7otg4wu8] {
    width: 100%;
    padding: 0.6rem;
    border: 1px solid var(--corp-border, #d1d9e0);
    border-radius: 8px;
    /* 16px: por debajo de eso iOS hace zoom al enfocar el campo y descuadra la pantalla. */
    font-size: var(--corp-fs-lg);
    font-family: inherit;
    resize: none;
}

.bm-sheet-txt.err[b-2z7otg4wu8] {
    border-color: var(--corp-bad-strong);
}

.bm-sheet-err[b-2z7otg4wu8] {
    font-size: var(--corp-fs-md);
    font-weight: 600;
    color: var(--corp-bad, #991b1b);
}

.bm-sheet-btns[b-2z7otg4wu8] {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.25rem;
}

/* ── Aviso de resultado ────────────────────────────────────────────────── */
.bm-toast[b-2z7otg4wu8] {
    position: fixed;
    left: 0.75rem;
    right: 0.75rem;
    bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
    z-index: 1500;
    padding: 0.85rem 1rem;
    border-radius: 10px;
    background: #14532d;
    color: #fff;
    font-size: var(--corp-fs-lg);
    font-weight: 600;
    line-height: 1.3;
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.3);
}

/* En pantallas anchas (el gerente revisando desde la computadora) la bandeja se centra en vez
   de estirarse a lo ancho: una columna de 34rem es lo que se lee cómodo. */
@media (min-width: 900px) {
    .bm[b-2z7otg4wu8] {
        max-width: 34rem;
        margin: 0 auto;
        border-left: 1px solid var(--corp-border, #d1d9e0);
        border-right: 1px solid var(--corp-border, #d1d9e0);
    }

    .bm-sheet[b-2z7otg4wu8] {
        max-width: 34rem;
        left: 50%;
        transform: translateX(-50%);
    }

    .bm-toast[b-2z7otg4wu8] {
        max-width: 32rem;
        left: 50%;
        right: auto;
        transform: translateX(-50%);
    }
}
/* /Components/Pages/Gerencia/PagActividadPM.razor.rz.scp.css */
/* ══ Actividad del equipo · mismo lenguaje visual que el Escritorio de Compras ══
   Blanco y gris para todo; el color aparece SOLO donde algo pide una acción (alertas,
   entrega vencida, lo que espera revisión). Cifras en monoespaciada, etiquetas en
   versalitas pequeñas, bordes de 1px y nada de franjas oscuras dentro del contenido: la
   única barra navy es la toolbar. CSS aislado a este componente; aun así todo cuelga de
   clases .gact-* para no confundirse con otras pantallas. */

/* Columna más estrecha que el default (360px): el árbol es nombre + una línea de meta,
   no una ficha, y el panel de detalle embebe un dashboard completo que agradece el ancho.
   Va dentro de un media query porque la regla aislada pesa más que la de corporate.css
   que, por debajo de 1100 px, apila la lista sobre el detalle. */
@media (min-width: 1101px) {
    .corp-body.gact-body[b-khtina72ol] { grid-template-columns: 320px 1fr; }
}
.corp-body.gact-body[b-khtina72ol] { overflow: hidden; }

.gact-error-msg[b-khtina72ol] { color: var(--corp-text-sub); font-size: var(--corp-fs-body); margin: 0 0 0.6rem; }

/* Estado vacío fuera de un maestro-detalle: la tarjeta llena el panel igual que en él. */
.corp-card.gact-lleno[b-khtina72ol] { flex: 1 0 auto; display: flex; flex-direction: column; justify-content: center; }

/* ── Punto de estado (misma pieza que el Escritorio) ── */
.gact-dot[b-khtina72ol] { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; display: inline-block; background: var(--corp-text-muted); }
.gact-dot.info[b-khtina72ol] { background: var(--corp-accent); }
.gact-dot.warn[b-khtina72ol] { background: var(--corp-warn-strong); }
.gact-dot.bad[b-khtina72ol]  { background: var(--corp-bad-strong); }
.gact-dot.ok[b-khtina72ol]   { background: var(--corp-ok-strong); }
.gact-dot.mut[b-khtina72ol]  { background: #cbd5e1; }
/* Hueco reservado siempre: sin él los nombres de los proyectos sanos arrancaban más a la
   izquierda que los que sí tienen alerta. */
.gact-dot.off[b-khtina72ol]  { background: transparent; }
.gact-st[b-khtina72ol] { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }
.gact-st.bad[b-khtina72ol] { color: var(--corp-bad); }

/* Dato que no existe todavía: gris y sin peso, para que no se lea como un cero medido. */
.gact-nd[b-khtina72ol] { color: var(--corp-text-muted); font-weight: 400; }
.gact-txt-bad[b-khtina72ol] { color: var(--corp-bad); }

/* ── Lista lateral: persona ─────────────────────────────────────────── */
.gact-it[b-khtina72ol] { padding: 0.5rem 0.75rem 0; border-bottom: 1px solid var(--corp-border-row); border-left: 3px solid transparent; cursor: pointer; transition: background 0.1s; display: flex; flex-direction: column; gap: 0.1rem; }
.gact-it:hover[b-khtina72ol] { background: #fafbfc; }
.gact-it.active[b-khtina72ol] { background: #eff6ff; border-left-color: var(--corp-accent); }
.gact-it-top[b-khtina72ol] { display: flex; align-items: center; gap: 0.4rem; min-width: 0; }
/* El recorte va en el span del nombre, no en el contenedor flex: un nodo de texto suelto
   dentro de un flex es un ítem anónimo y no hereda el text-overflow del padre. */
.gact-it-name[b-khtina72ol] { flex: 1; min-width: 0; font-size: var(--corp-fs-body); font-weight: 600; color: #1e293b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gact-it-amt[b-khtina72ol] { flex-shrink: 0; font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; color: #0f172a; white-space: nowrap; }
.gact-it-amt small[b-khtina72ol], .gact-pr-amt small[b-khtina72ol] { font-size: 0.85em; font-weight: 600; color: var(--corp-text-muted); margin-left: 1px; }
/* Una sola línea de texto plano con separadores: los contadores son contexto, no estados. */
.gact-it-meta[b-khtina72ol] { display: flex; align-items: center; gap: 0.3rem; flex-wrap: wrap; padding-left: 1rem; font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }
.gact-sep[b-khtina72ol] { color: var(--corp-border); }
.gact-it-alert[b-khtina72ol] { margin-left: auto; display: inline-flex; align-items: center; gap: 0.3rem; color: var(--corp-bad); font-weight: 700; }

/* Caret dibujado con bordes en vez de un glifo: los triángulos tipográficos (▸/▾) salen
   con peso y línea base distintos según la fuente instalada y desalinean la fila. */
.gact-chev[b-khtina72ol] { position: relative; width: 9px; height: 9px; flex-shrink: 0; color: var(--corp-text-muted); transition: transform 0.15s ease; }
.gact-chev[b-khtina72ol]::before { content: ""; position: absolute; left: 1px; top: 2px; width: 5px; height: 5px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(-45deg); }
.gact-chev.open[b-khtina72ol] { transform: rotate(90deg); }
.gact-it.active .gact-chev[b-khtina72ol] { color: var(--corp-accent); }

/* Barra de avance al borde inferior del ítem: una regla de 3px, no un indicador. */
.gact-it-bar[b-khtina72ol] { height: 3px; background: var(--corp-border-row); margin: 0.4rem -0.75rem 0; overflow: hidden; }
.gact-it-bar-fill[b-khtina72ol] { height: 100%; background: #cbd5e1; transition: width 0.2s; }
.gact-it.active .gact-it-bar-fill[b-khtina72ol] { background: var(--corp-accent); }

/* ── Lista lateral: proyectos anidados bajo la persona ─────────────── */
.gact-tree[b-khtina72ol] { background: var(--corp-bg-head); border-bottom: 1px solid var(--corp-border-row); padding: 0.15rem 0; }
.gact-pr[b-khtina72ol] { position: relative; display: flex; align-items: center; gap: 0.4rem; padding: 0.35rem 0.75rem 0.35rem 1.5rem; border-left: 3px solid transparent; cursor: pointer; font-size: var(--corp-fs-sm); color: var(--corp-text-main); transition: background 0.1s; }
/* Guía vertical del árbol, continua de fila a fila. */
.gact-pr[b-khtina72ol]::before { content: ""; position: absolute; left: 0.95rem; top: 0; bottom: 0; width: 1px; background: var(--corp-border); }
.gact-pr:hover[b-khtina72ol] { background: #fff; }
.gact-pr.active[b-khtina72ol] { background: #fff; border-left-color: var(--corp-accent); color: #1e293b; font-weight: 600; }
.gact-pr-name[b-khtina72ol] { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gact-pr-tram[b-khtina72ol] { flex-shrink: 0; min-width: 16px; text-align: center; background: #eef2f6; border-radius: 9px; padding: 0 0.3rem; font-size: var(--corp-fs-xs); font-weight: 700; font-family: var(--corp-mono); color: var(--corp-text-sub); }
.gact-pr-amt[b-khtina72ol] { flex-shrink: 0; width: 42px; text-align: right; font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-text-sub); }
.gact-pr.active .gact-pr-amt[b-khtina72ol] { color: #0f172a; }
/* Fase del proyecto en texto gris; sólo Revisión toma color, porque ahí el proyecto ya
   salió de las manos del ingeniero y espera a Gerencia: es información accionable. */
.gact-fase[b-khtina72ol] { flex-shrink: 0; font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; letter-spacing: 0.04em; color: var(--corp-text-muted); }
.gact-fase.warn[b-khtina72ol] { color: var(--corp-warn); }

/* ── Encabezado del detalle: identidad sobre el gris + cajas de cifras blancas ── */
.gact-head[b-khtina72ol] { display: flex; align-items: flex-end; gap: 0.75rem; flex-wrap: wrap; }
.gact-head-id[b-khtina72ol] { flex: 1 1 18rem; min-width: 0; display: flex; flex-direction: column; gap: 0.15rem; }
.gact-head-code[b-khtina72ol] { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
.gact-head-num[b-khtina72ol] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-navy); background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0 0.4rem; line-height: 1.6; }
.gact-head-title[b-khtina72ol] { font-size: var(--corp-fs-xl); font-weight: 700; color: #0f172a; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gact-head-sub[b-khtina72ol] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.gact-kpis[b-khtina72ol] { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.5rem; }
.gact-kpi[b-khtina72ol] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.45rem 0.65rem; min-width: 0; }
.gact-kpi .k[b-khtina72ol] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; overflow: hidden; }
.gact-kpi .v[b-khtina72ol] { font-family: var(--corp-mono); font-size: var(--corp-fs-lg); font-weight: 800; color: #0f172a; line-height: 1.2; margin-top: 0.15rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Sufijo de unidad (%, /100, d): más chico y apagado, para que el número se lea primero. */
.gact-kpi .v small[b-khtina72ol] { font-size: 0.7em; font-weight: 600; color: var(--corp-text-muted); margin-left: 1px; }
.gact-kpi .v.zero[b-khtina72ol] { color: #cbd5e1; }
.gact-kpi .v.bad[b-khtina72ol] { color: var(--corp-bad); }
.gact-kpi .s[b-khtina72ol] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gact-kpi .s.bad[b-khtina72ol] { color: var(--corp-bad); font-weight: 600; }

/* ── Avisos: blancos con filete de color, uno por problema ── */
.gact-alerts[b-khtina72ol] { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.gact-alert[b-khtina72ol] { display: inline-flex; align-items: center; gap: 0.45rem; padding: 0.35rem 0.75rem; border-radius: var(--corp-radius); font-size: var(--corp-fs-sm); font-weight: 600; background: #fff; border: 1px solid var(--corp-border); border-left-width: 3px; }
.gact-alert.bad[b-khtina72ol]  { border-color: #fecaca; border-left-color: var(--corp-bad-strong); color: var(--corp-bad); }
.gact-alert.warn[b-khtina72ol] { border-color: #fde68a; border-left-color: var(--corp-warn-strong); color: var(--corp-warn); }

.gact-note[b-khtina72ol] { margin-left: auto; font-size: var(--corp-fs-xs); font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--corp-text-muted); text-align: right; }

/* Contenedor del dashboard de la obra: el componente trae su propia barra de cifras y panel. */
.gact-embed[b-khtina72ol] { padding: 0; }

/* ── Avance de detallado (fase Ingeniería/Revisión) ──────────────────── */
.gact-score[b-khtina72ol] { display: flex; align-items: center; gap: 0.9rem; padding: 0.65rem 0.75rem; border-bottom: 1px solid var(--corp-border); }
.gact-score-num[b-khtina72ol] { flex-shrink: 0; font-family: var(--corp-mono); font-size: 1.7rem; font-weight: 800; line-height: 1; letter-spacing: -0.02em; }
.gact-score-num small[b-khtina72ol] { font-size: 0.45em; font-weight: 600; color: var(--corp-text-muted); }
.gact-score-num.ok[b-khtina72ol]   { color: var(--corp-ok); }
.gact-score-num.warn[b-khtina72ol] { color: var(--corp-warn); }
.gact-score-num.bad[b-khtina72ol]  { color: var(--corp-bad); }
.gact-score-side[b-khtina72ol] { flex: 1; min-width: 0; }
.gact-score-verdict[b-khtina72ol] { font-size: var(--corp-fs-body); font-weight: 600; color: #1e293b; }
.gact-score-track[b-khtina72ol] { height: 4px; background: #e2e8f0; border-radius: 2px; overflow: hidden; margin: 0.35rem 0 0.3rem; }
.gact-score-fill[b-khtina72ol] { height: 100%; transition: width 0.25s; }
.gact-score-fill.ok[b-khtina72ol]   { background: var(--corp-ok-strong); }
.gact-score-fill.warn[b-khtina72ol] { background: var(--corp-warn-strong); }
.gact-score-fill.bad[b-khtina72ol]  { background: var(--corp-bad-strong); }
.gact-score-plazo[b-khtina72ol] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }
.gact-score-plazo.warn[b-khtina72ol] { color: var(--corp-warn); font-weight: 600; }
.gact-score-plazo.bad[b-khtina72ol]  { color: var(--corp-bad); font-weight: 700; }

/* Encabezado de sección del baremo (mismo gris que los grupos del Escritorio), con su
   parcial (25/40) a la derecha. */
.gact-sec[b-khtina72ol] { display: flex; align-items: center; gap: 0.45rem; padding: 0.4rem 0.75rem; background: var(--corp-bg-head); border-bottom: 1px solid var(--corp-border); font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head); }
.gact-crit + .gact-sec[b-khtina72ol] { border-top: 1px solid var(--corp-border); }
.gact-sec .n[b-khtina72ol] { margin-left: auto; font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-navy); }

.gact-crit[b-khtina72ol] { display: flex; align-items: flex-start; gap: 0.55rem; padding: 0.4rem 0.75rem; border-bottom: 1px solid var(--corp-border-row); }
.gact-crit:last-child[b-khtina72ol] { border-bottom: 0; }
.gact-crit:has(+ .gact-sec)[b-khtina72ol] { border-bottom: 0; }
.gact-crit:hover[b-khtina72ol] { background: #fafbfc; }
/* Marca de cumplido/faltante con ancho fijo: el reset global de MudBlazor no deja que un
   hijo se dimensione solo por su contenido dentro de un flex. */
.gact-crit-icon[b-khtina72ol] { flex-shrink: 0; width: 15px; text-align: center; font-size: var(--corp-fs-sm); font-weight: 700; line-height: 1.3; }
.gact-crit.ok .gact-crit-icon[b-khtina72ol] { color: var(--corp-ok-strong); }
.gact-crit.no .gact-crit-icon[b-khtina72ol] { color: var(--corp-bad-strong); }
.gact-crit-txt[b-khtina72ol] { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.gact-crit-nombre[b-khtina72ol] { font-size: var(--corp-fs-sm); font-weight: 600; color: #1e293b; }
/* El QUÉ falta es lo que el gerente usa; va debajo del criterio y en rojo cuando no se
   cumple, porque es la línea accionable de toda la tarjeta. */
.gact-crit-detalle[b-khtina72ol] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); line-height: 1.35; margin-top: 0.1rem; }
.gact-crit.no .gact-crit-detalle[b-khtina72ol] { color: var(--corp-bad); }
.gact-crit-val[b-khtina72ol] { flex-shrink: 0; font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-navy); margin-top: 1px; }
.gact-crit.no .gact-crit-val[b-khtina72ol] { color: var(--corp-text-muted); }

/* ── Estructura de costos ────────────────────────────────────────────── */
.gact-cost[b-khtina72ol] { padding: 0.65rem 0.75rem 0.6rem; }
/* Barra apilada de los tres niveles de costo más lo que sobra. El ancho de cada tramo va en
   línea porque es un dato, no un estilo. */
.gact-cost-bar[b-khtina72ol] { display: flex; height: 12px; border-radius: 2px; overflow: hidden; background: var(--corp-border-row); }
.gact-cost-seg[b-khtina72ol] { height: 100%; min-width: 0; }
/* Escala de un solo tono para el costo (de oscuro a claro según se aleja de la obra) y verde
   sólo para lo que queda: así el ojo separa «lo que cuesta» de «lo que gana» sin leer nada. */
.gact-cost-seg.dir[b-khtina72ol], .gact-cost-key i.dir[b-khtina72ol] { background: var(--corp-navy); }
.gact-cost-seg.ind[b-khtina72ol], .gact-cost-key i.ind[b-khtina72ol] { background: var(--corp-text-sub); }
.gact-cost-seg.adm[b-khtina72ol], .gact-cost-key i.adm[b-khtina72ol] { background: var(--corp-text-muted); }
.gact-cost-seg.uti[b-khtina72ol], .gact-cost-key i.uti[b-khtina72ol] { background: var(--corp-ok-strong); }
.gact-cost-seg.neg[b-khtina72ol], .gact-cost-key i.neg[b-khtina72ol] { background: var(--corp-bad-strong); }
.gact-cost-legend[b-khtina72ol] { display: flex; flex-wrap: wrap; gap: 0.15rem 1rem; margin-top: 0.5rem; font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }
.gact-cost-key[b-khtina72ol] { display: inline-flex; align-items: center; gap: 0.3rem; }
/* Dimensiones explícitas: el reset global de MudBlazor no deja que un hijo vacío se dimensione
   solo dentro de un contenedor flex. */
.gact-cost-key i[b-khtina72ol] { display: inline-block; width: 8px; height: 8px; flex-shrink: 0; border-radius: 2px; }
.gact-cost-key b[b-khtina72ol] { font-family: var(--corp-mono); color: var(--corp-navy); }
.gact-cost-key b.gact-nd[b-khtina72ol] { color: var(--corp-text-muted); font-weight: 400; }
.gact-cost-key b.gact-txt-bad[b-khtina72ol] { color: var(--corp-bad); }

/* ── Tabla de fichas del presupuesto ─────────────────────────────────── */
/* La tabla desplaza dentro de su tarjeta: con nueve columnas y nombres de partida largos,
   dejarla desbordar arrastraría el ancho de toda la página. */
.gact-tbl-wrap[b-khtina72ol] { overflow-x: auto; }
.gact-fichas[b-khtina72ol] { min-width: 720px; }
.gact-fila[b-khtina72ol] { cursor: pointer; }
.gact-fila-desc[b-khtina72ol] { font-weight: 600; color: #1e293b; }
.gact-fila-cod[b-khtina72ol] { margin-left: 0.35rem; font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }
/* Lo que le falta a la partida, en la misma fila del importe: el criterio del score dice
   cuántas fichas están a medias, esto dice CUÁLES. */
.gact-fila-falta[b-khtina72ol] { display: inline-flex; align-items: center; gap: 0.3rem; margin-left: 0.5rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-bad); }
.gact-fichas tbody td.gact-imp[b-khtina72ol] { font-weight: 700; color: var(--corp-navy); }
.gact-fichas tfoot td[b-khtina72ol] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); color: var(--corp-text-sub); }
.gact-fichas tfoot td:first-child[b-khtina72ol] { font-family: var(--corp-font); }
.gact-fichas tfoot tr:last-child td[b-khtina72ol] { color: var(--corp-navy); }

/* ── Drawer de bitácora de la persona ────────────────────────────────── */
.gact-bit[b-khtina72ol] { display: flex; flex-direction: column; height: 100%; overflow-y: auto; background: #fff; }
.gact-bit-head[b-khtina72ol] { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.5rem; padding: 0.75rem 1rem 0.6rem; background: #fff; border-bottom: 1px solid var(--corp-border); position: sticky; top: 0; z-index: 1; }
.gact-bit-head-txt[b-khtina72ol] { min-width: 0; }
.gact-bit-title[b-khtina72ol] { font-size: var(--corp-fs-xl); font-weight: 700; color: #0f172a; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gact-bit-sub[b-khtina72ol] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; }
/* Dimensiones explícitas: el reset global de MudBlazor deja los botones sin borde ni caja
   propia y el aspa se queda sin área de clic. */
.gact-bit-x[b-khtina72ol] { flex-shrink: 0; width: 24px; height: 24px; line-height: 22px; text-align: center; background: transparent; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); color: var(--corp-text-sub); font-size: var(--corp-fs-lg); cursor: pointer; padding: 0; }
.gact-bit-x:hover[b-khtina72ol] { background: var(--corp-bg-head); color: var(--corp-navy); border-color: var(--corp-text-muted); }

/* Filas con bloque de fecha (la agenda del Escritorio). La descripción se lee entera. */
.gact-feed[b-khtina72ol] { display: flex; flex-direction: column; }
.gact-ag[b-khtina72ol] { display: flex; gap: 0.6rem; align-items: flex-start; padding: 0.45rem 1rem; border-bottom: 1px solid var(--corp-border-row); }
.gact-ag:last-child[b-khtina72ol] { border-bottom: 0; }
.gact-ag:hover[b-khtina72ol] { background: #fafbfc; }
.gact-ag-d[b-khtina72ol] { width: 44px; text-align: center; border-radius: var(--corp-radius); background: var(--corp-bg-head); border: 1px solid var(--corp-border); padding: 0.15rem 0; flex-shrink: 0; }
.gact-ag-d b[b-khtina72ol] { display: block; font-size: var(--corp-fs-lg); color: var(--corp-navy); line-height: 1.1; }
.gact-ag-d span[b-khtina72ol] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); text-transform: uppercase; font-weight: 700; }
.gact-ag-t[b-khtina72ol] { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.gact-ag-t b[b-khtina72ol] { font-size: var(--corp-fs-sm); color: #1e293b; }
.gact-ag-t .d[b-khtina72ol] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); line-height: 1.35; }
.gact-ag-t .h[b-khtina72ol] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }
.gact-ag-m[b-khtina72ol] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-navy); white-space: nowrap; }

/* ── Teléfono: cifras de a dos; el nombre y el subtítulo del proyecto parten renglón en
   vez de cortarse, porque en el teléfono no hay tooltip para leerlos enteros ── */
@media (max-width: 640px) {
    .gact-kpis[b-khtina72ol] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gact-head-title[b-khtina72ol], .gact-head-sub[b-khtina72ol] { white-space: normal; }
    .gact-score[b-khtina72ol] { gap: 0.6rem; }
}
/* /Components/Pages/Gerencia/PagGerenciaMain.razor.rz.scp.css */
/* =============================================================
   Centro de Mando · Gerencia de Operaciones
   Mismo lenguaje visual que el Escritorio de Compras: blanco y gris
   para todo, el color SOLO donde algo pide una decisión (pendientes,
   críticos, vencidos), cifras en monoespaciada y etiquetas en
   versalitas. La única barra navy es la toolbar.
   Prefijo gcm-. Este archivo es CSS aislado del componente: los
   selectores ya no alcanzan a otras pantallas, pero igual cuelgan
   de clases propias para no depender de eso.
   ============================================================= */

/* ── Piezas comunes ──────────────────────────────────────────── */
.gcm-of[b-t5ddp4e1xr] {
    font-size: var(--corp-fs-xs);
    font-weight: 500;
    color: var(--corp-text-muted);
}

/* Índices de la statsbar: un CPI/SPI sano va en el color normal de la cifra. */
.gcm-idx.warn[b-t5ddp4e1xr] { color: var(--corp-warn); }
.gcm-idx.bad[b-t5ddp4e1xr]  { color: var(--corp-bad); }

.gcm-dot[b-t5ddp4e1xr] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
    background: var(--corp-text-muted);
}
.gcm-dot.info[b-t5ddp4e1xr] { background: var(--corp-accent); }
.gcm-dot.warn[b-t5ddp4e1xr] { background: var(--corp-warn-strong); }
.gcm-dot.bad[b-t5ddp4e1xr],
.gcm-dot.crit[b-t5ddp4e1xr] { background: var(--corp-bad-strong); }
.gcm-dot.ok[b-t5ddp4e1xr]   { background: var(--corp-ok-strong); }
.gcm-dot.mut[b-t5ddp4e1xr],
.gcm-dot.closed[b-t5ddp4e1xr],
.gcm-dot.na[b-t5ddp4e1xr]   { background: var(--corp-border); }

.gcm-lbl[b-t5ddp4e1xr] {
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--corp-text-muted);
    margin-bottom: 0.3rem;
}

/* Pista tenue a la derecha de la cabecera de una tarjeta. */
.gcm-hint[b-t5ddp4e1xr] {
    margin-left: auto;
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    color: var(--corp-text-muted);
    text-align: right;
    min-width: 0;
}

/* ── Avisos ──────────────────────────────────────────────────── */
.gcm-alert[b-t5ddp4e1xr] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.75rem;
    background: var(--corp-bg-card);
    border: 1px solid var(--corp-border);
    border-left-width: 3px;
    border-radius: var(--corp-radius);
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-main);
}
.gcm-alert.bad[b-t5ddp4e1xr]  { border-left-color: var(--corp-bad-strong); color: var(--corp-bad); }
.gcm-alert.warn[b-t5ddp4e1xr] { border-left-color: var(--corp-warn-strong); color: var(--corp-warn); }
.gcm-alert-txt[b-t5ddp4e1xr] { flex: 1; min-width: 0; }

/* ── 1. Bandeja de decisión: una caja por cola de firma ──────── */
/* Seis colas (compra, indirecto, maquinaria, contratista, voucher y liquidación): una fila
   de seis en escritorio, dos filas llenas de tres en una ventana media. */
.gcm-pipe[b-t5ddp4e1xr] {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 0.5rem;
}

.gcm-pst[b-t5ddp4e1xr] {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    text-align: left;
    min-width: 0;
    background: var(--corp-bg-card);
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    padding: 0.5rem 0.65rem;
    font-family: inherit;
    cursor: pointer;
    transition: border-color 0.12s, transform 0.12s;
}
.gcm-pst:hover[b-t5ddp4e1xr] { border-color: var(--corp-accent); transform: translateY(-1px); }
.gcm-pst:focus-visible[b-t5ddp4e1xr] { outline: 2px solid var(--corp-accent); outline-offset: 1px; }

.gcm-pst .k[b-t5ddp4e1xr] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding-right: 0.8rem;
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--corp-text-head);
    min-width: 0;
}
.gcm-pst .kt[b-t5ddp4e1xr] { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.gcm-pst .v[b-t5ddp4e1xr] {
    font-family: var(--corp-mono);
    font-size: 1.3rem;
    font-weight: 800;
    color: var(--corp-navy);
    line-height: 1.1;
    margin-top: 0.2rem;
}
.gcm-pst .v.zero[b-t5ddp4e1xr] { color: var(--corp-border); }
.gcm-pst .s[b-t5ddp4e1xr] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; }
.gcm-pst .s.warn[b-t5ddp4e1xr] { color: var(--corp-warn); font-weight: 600; }
.gcm-pst .go[b-t5ddp4e1xr] {
    position: absolute;
    right: 0.5rem;
    top: 0.35rem;
    color: var(--corp-text-muted);
    font-size: var(--corp-fs-lg);
    line-height: 1;
}
.gcm-pst:hover .go[b-t5ddp4e1xr] { color: var(--corp-accent); }

/* ── Columnas: atención + fases | semáforo + liquidez ────────── */
/* Cada columna toma su alto natural (start): estirarlas dejaba un vacío blanco
   dentro de la tarjeta más corta, que se lee como contenido faltante. */
.gcm-cols[b-t5ddp4e1xr] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 400px;
    gap: 0.75rem;
    align-items: start;
}

.gcm-col[b-t5ddp4e1xr] { display: flex; flex-direction: column; gap: 0.75rem; min-width: 0; }

/* ── 2. Focos de atención ────────────────────────────────────── */
/* El tope evita que una cartera con muchos desvíos empuje la tabla fuera de la
   pantalla: la lista se desplaza dentro de la tarjeta. */
.gcm-focos[b-t5ddp4e1xr] { max-height: 430px; overflow-y: auto; }

.gcm-foco[b-t5ddp4e1xr] {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.6rem;
    padding: 0.4rem 0.75rem;
    border-bottom: 1px solid var(--corp-border-row);
    cursor: pointer;
}
.gcm-foco:last-child[b-t5ddp4e1xr] { border-bottom: 0; }
.gcm-foco:hover[b-t5ddp4e1xr] { background: #fafbfc; }
.gcm-foco:focus-visible[b-t5ddp4e1xr] { outline: 2px solid var(--corp-accent); outline-offset: -2px; }

.gcm-foco-main[b-t5ddp4e1xr] { min-width: 0; }
.gcm-foco-top[b-t5ddp4e1xr] { display: flex; align-items: baseline; gap: 0.45rem; min-width: 0; }
.gcm-foco-tipo[b-t5ddp4e1xr] { font-size: var(--corp-fs-sm); font-weight: 600; color: #1e293b; white-space: nowrap; }
.gcm-foco-sev[b-t5ddp4e1xr] {
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}
.gcm-foco-sev.bad[b-t5ddp4e1xr]  { color: var(--corp-bad); }
.gcm-foco-sev.warn[b-t5ddp4e1xr] { color: var(--corp-warn); }
.gcm-foco-proy[b-t5ddp4e1xr] {
    font-size: var(--corp-fs-xs);
    color: var(--corp-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}
.gcm-foco-det[b-t5ddp4e1xr] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); margin-top: 0.05rem; }

.gcm-foco-imp[b-t5ddp4e1xr] { display: flex; flex-direction: column; align-items: flex-end; text-align: right; }
.gcm-foco-val[b-t5ddp4e1xr] {
    font-family: var(--corp-mono);
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    color: var(--corp-navy);
    white-space: nowrap;
}
.gcm-foco-val.bad[b-t5ddp4e1xr] { color: var(--corp-bad); }
.gcm-foco-lbl[b-t5ddp4e1xr] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); white-space: nowrap; }

/* ── Fases: en la columna ancha van de a dos para no dejar barras
   kilométricas contra un conteo de una cifra. ─────────────────── */
.gcm-fases[b-t5ddp4e1xr] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 1.5rem;
}
.gcm-fase[b-t5ddp4e1xr] { display: flex; align-items: center; gap: 0.5rem; padding: 0.22rem 0; }
.gcm-fase-lbl[b-t5ddp4e1xr] { font-size: var(--corp-fs-sm); color: var(--corp-text-main); width: 74px; flex-shrink: 0; }
.gcm-fase .gcm-track[b-t5ddp4e1xr] { flex: 1; }
.gcm-fase-cnt[b-t5ddp4e1xr] {
    font-family: var(--corp-mono);
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    color: var(--corp-navy);
    width: 22px;
    text-align: right;
}

/* ── 3. Semáforo y liquidez ──────────────────────────────────── */
.gcm-sem-grid[b-t5ddp4e1xr] { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.4rem; }

.gcm-sem[b-t5ddp4e1xr] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.15rem;
    padding: 0.45rem 0.6rem;
    background: var(--corp-bg-card);
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    font-family: inherit;
    text-align: left;
    cursor: pointer;
    min-width: 0;
    transition: border-color 0.12s;
}
.gcm-sem:hover[b-t5ddp4e1xr] { border-color: var(--corp-accent); }
.gcm-sem.on[b-t5ddp4e1xr] { border-color: var(--corp-accent); box-shadow: inset 0 -2px 0 var(--corp-accent); }
.gcm-sem:focus-visible[b-t5ddp4e1xr] { outline: 2px solid var(--corp-accent); outline-offset: 1px; }
.gcm-sem .k[b-t5ddp4e1xr] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--corp-text-head);
    white-space: nowrap;
}
.gcm-sem .v[b-t5ddp4e1xr] { font-family: var(--corp-mono); font-size: var(--corp-fs-xl); font-weight: 800; line-height: 1.1; color: var(--corp-navy); }
.gcm-sem .v.zero[b-t5ddp4e1xr] { color: var(--corp-border); }
.gcm-sem .v.warn[b-t5ddp4e1xr] { color: var(--corp-warn); }
.gcm-sem .v.bad[b-t5ddp4e1xr]  { color: var(--corp-bad); }

.gcm-sep[b-t5ddp4e1xr] { height: 1px; background: var(--corp-border-row); margin: 0.65rem 0; }
.gcm-mt[b-t5ddp4e1xr] { margin-top: 0.5rem; }

.gcm-bar-head[b-t5ddp4e1xr] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.5rem;
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-sub);
    margin-bottom: 0.25rem;
}
.gcm-num[b-t5ddp4e1xr] { font-family: var(--corp-mono); font-weight: 700; color: var(--corp-navy); white-space: nowrap; }
.gcm-num.warn[b-t5ddp4e1xr] { color: var(--corp-warn); }
.gcm-num.bad[b-t5ddp4e1xr]  { color: var(--corp-bad); }

.gcm-bar-hint[b-t5ddp4e1xr] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.35rem; line-height: 1.35; }
.gcm-bar-hint.bad[b-t5ddp4e1xr] { color: var(--corp-bad); font-weight: 600; }
.gcm-bar-hint b[b-t5ddp4e1xr] { color: var(--corp-text-main); font-family: var(--corp-mono); }

/* Barra de progreso con marca de referencia (plazo / avance). */
.gcm-track[b-t5ddp4e1xr] {
    position: relative;
    height: 8px;
    background: var(--corp-border-row);
    border-radius: 99px;
    overflow: hidden;
}
.gcm-track.sm[b-t5ddp4e1xr] { height: 6px; }
.gcm-track.xs[b-t5ddp4e1xr] { height: 5px; }

.gcm-fill[b-t5ddp4e1xr] { height: 100%; border-radius: inherit; background: var(--corp-accent); transition: width 0.3s; }
.gcm-fill.info[b-t5ddp4e1xr] { background: var(--corp-accent); }
.gcm-fill.navy[b-t5ddp4e1xr] { background: var(--corp-navy); }
.gcm-fill.mut[b-t5ddp4e1xr]  { background: var(--corp-text-muted); }
.gcm-fill.warn[b-t5ddp4e1xr] { background: var(--corp-warn-strong); }
.gcm-fill.bad[b-t5ddp4e1xr]  { background: var(--corp-bad-strong); }

.gcm-mark[b-t5ddp4e1xr] {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--corp-navy);
    transform: translateX(-1px);
}

.gcm-kv[b-t5ddp4e1xr] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.5rem;
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-sub);
    padding: 0.25rem 0;
    border-bottom: 1px solid var(--corp-border-row);
}
.gcm-kv:last-child[b-t5ddp4e1xr] { border-bottom: 0; }
.gcm-kv b[b-t5ddp4e1xr] { font-family: var(--corp-mono); color: var(--corp-navy); white-space: nowrap; }
.gcm-kv b.warn[b-t5ddp4e1xr] { color: var(--corp-warn); }
.gcm-kv b.bad[b-t5ddp4e1xr]  { color: var(--corp-bad); }

/* ── 4. Tabla ejecutiva ──────────────────────────────────────── */
.gcm-tabla-head[b-t5ddp4e1xr] { flex-wrap: wrap; }

.gcm-filtros[b-t5ddp4e1xr] {
    display: flex;
    gap: 0.3rem;
    flex-wrap: wrap;
    text-transform: none;
    letter-spacing: 0;
}
.gcm-filtros .corp-chip[b-t5ddp4e1xr] { font-family: inherit; }
.gcm-filtros .corp-chip-count.bad[b-t5ddp4e1xr] { background: var(--corp-bad-bg); color: var(--corp-bad); }
.gcm-filtros .corp-chip.active .corp-chip-count.bad[b-t5ddp4e1xr] { background: rgba(255, 255, 255, 0.2); color: #fff; }

/* Desplaza en los dos ejes: en el teléfono la tabla es más ancha que la pantalla y
   la página no debe moverse en horizontal. */
.gcm-tabla-scroll[b-t5ddp4e1xr] { max-height: 460px; overflow: auto; }

.gcm-col-avance[b-t5ddp4e1xr] { width: 170px; }

.gcm-row[b-t5ddp4e1xr] { cursor: pointer; }
.gcm-row:focus-visible[b-t5ddp4e1xr] { outline: 2px solid var(--corp-accent); outline-offset: -2px; }
.gcm-row.closed[b-t5ddp4e1xr] { opacity: 0.62; }

.gcm-proy[b-t5ddp4e1xr] { font-weight: 600; color: #1e293b; font-size: var(--corp-fs-body); }
.gcm-cell-sub[b-t5ddp4e1xr] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; }
.gcm-cell-sub.warn[b-t5ddp4e1xr] { color: var(--corp-warn); font-weight: 600; }
.gcm-cell-sub.bad[b-t5ddp4e1xr]  { color: var(--corp-bad); font-weight: 600; }
.gcm-fase-txt[b-t5ddp4e1xr] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }
.gcm-fecha[b-t5ddp4e1xr] { font-family: var(--corp-mono); font-weight: 700; color: var(--corp-navy); }
.gcm-amt[b-t5ddp4e1xr] { font-weight: 700; color: var(--corp-navy); }
.gcm-amt.bad[b-t5ddp4e1xr] { color: var(--corp-bad); }
.gcm-na[b-t5ddp4e1xr] { color: var(--corp-text-muted); font-size: var(--corp-fs-xs); }

.gcm-tbl .corp-pill[b-t5ddp4e1xr] { margin: 0 0.08rem; font-family: var(--corp-mono); }

.gcm-st[b-t5ddp4e1xr] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: var(--corp-fs-xs);
    font-weight: 600;
    color: var(--corp-text-sub);
    white-space: nowrap;
}
.gcm-st.closed[b-t5ddp4e1xr],
.gcm-st.na[b-t5ddp4e1xr] { color: var(--corp-text-muted); }

/* ── Nota al pie ─────────────────────────────────────────────── */
.gcm-note[b-t5ddp4e1xr] {
    font-size: var(--corp-fs-xs);
    color: var(--corp-text-muted);
    line-height: 1.55;
    padding: 0.45rem 0.75rem;
    background: var(--corp-bg-card);
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
}
.gcm-note b[b-t5ddp4e1xr] { color: var(--corp-text-head); }

/* ── Responsive ──────────────────────────────────────────────── */
@media (max-width: 1400px) {
    .gcm-pipe[b-t5ddp4e1xr] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 1200px) {
    .gcm-cols[b-t5ddp4e1xr] { grid-template-columns: minmax(0, 1fr); }
    .gcm-focos[b-t5ddp4e1xr], .gcm-tabla-scroll[b-t5ddp4e1xr] { max-height: none; }
}

/* Teléfono (~400 px): cajas de a dos, fases en una columna y el impacto de cada
   desvío baja debajo del texto en vez de apretarlo. */
@media (max-width: 640px) {
    .gcm-tsub[b-t5ddp4e1xr] { white-space: normal; flex-shrink: 1; min-width: 0; }
    .gcm-pipe[b-t5ddp4e1xr] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gcm-fases[b-t5ddp4e1xr] { grid-template-columns: minmax(0, 1fr); }
    .gcm-foco[b-t5ddp4e1xr] { grid-template-columns: auto minmax(0, 1fr); }
    .gcm-foco-imp[b-t5ddp4e1xr] { grid-column: 2; flex-direction: row; align-items: baseline; gap: 0.35rem; }
    .gcm-foco-top[b-t5ddp4e1xr] { flex-wrap: wrap; }
}

/* ── Impresión ───────────────────────────────────────────────── */
@media print {
    .gcm-shell[b-t5ddp4e1xr], .gcm-main[b-t5ddp4e1xr] { height: auto; min-height: 0; overflow: visible; }
    .gcm-focos[b-t5ddp4e1xr], .gcm-tabla-scroll[b-t5ddp4e1xr] { max-height: none; overflow: visible; }
    .gcm-pst[b-t5ddp4e1xr], .gcm-sem[b-t5ddp4e1xr] { cursor: default; }
    .gcm-tbl.corp-tbl thead[b-t5ddp4e1xr] { position: static; }
}
/* /Components/Pages/Ingenieria/ComChecklistPropuesta.razor.rz.scp.css */
.cp-root[b-65ask8577y] { gap: 0.75rem; }
.cp-grid[b-65ask8577y] { display: grid; grid-template-columns: 260px 1fr; gap: 0.75rem; }
@media (max-width: 900px) { .cp-grid[b-65ask8577y] { grid-template-columns: 1fr; } }

.cp-score-card[b-65ask8577y] {
    background: #fff; border: 1px solid var(--corp-border); border-radius: 10px; padding: 1rem;
    display: flex; flex-direction: column; align-items: center; text-align: center; gap: 0.35rem; align-self: start;
}
.cp-score-num[b-65ask8577y] { font-size: 2.6rem; font-weight: 900; line-height: 1; letter-spacing: -0.03em; }
.cp-score-num span[b-65ask8577y] { font-size: var(--corp-fs-lg); color: #94a3b8; font-weight: 700; margin-left: 0.15rem; }
.cp-score-lbl[b-65ask8577y] { font-size: var(--corp-fs-xs); text-transform: uppercase; letter-spacing: 0.06em; color: #64748b; font-weight: 700; }
.cp-score-msg[b-65ask8577y] { font-size: var(--corp-fs-body); color: #334155; font-weight: 600; }
.cp-score-bar[b-65ask8577y] { width: 100%; height: 8px; border-radius: 99px; background: #e2e8f0; overflow: hidden; margin-top: 0.25rem; }
.cp-score-bar > div[b-65ask8577y] { height: 100%; border-radius: 99px; transition: width 0.3s; }
.cp-score-sub[b-65ask8577y] { font-size: var(--corp-fs-xs); color: #94a3b8; }

.cp-sections[b-65ask8577y] { display: flex; flex-direction: column; gap: 0.6rem; }
.cp-sec[b-65ask8577y] { background: #fff; border: 1px solid var(--corp-border); border-radius: 10px; overflow: hidden; }
.cp-sec-head[b-65ask8577y] {
    display: flex; justify-content: space-between; align-items: center; padding: 0.45rem 0.8rem;
    background: var(--corp-bg-head); border-bottom: 1px solid var(--corp-border);
    font-size: var(--corp-fs-sm); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: #1e3a5a;
}
.cp-sec-pts[b-65ask8577y] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); }
.cp-crit[b-65ask8577y] {
    display: flex; align-items: center; gap: 0.6rem; padding: 0.45rem 0.8rem; cursor: pointer;
    border-bottom: 1px solid #f1f5f9;
}
.cp-crit:last-child[b-65ask8577y] { border-bottom: none; }
.cp-crit:hover[b-65ask8577y] { background: #fafbfc; }
.cp-crit-ico[b-65ask8577y] { width: 20px; height: 20px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: var(--corp-fs-sm); font-weight: 800; flex-shrink: 0; }
.cp-crit.ok .cp-crit-ico[b-65ask8577y] { background: #dcfce7; color: #166534; }
.cp-crit.fail .cp-crit-ico[b-65ask8577y] { background: #fee2e2; color: #991b1b; }
.cp-crit-txt[b-65ask8577y] { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.cp-crit-name[b-65ask8577y] { font-size: var(--corp-fs-body); font-weight: 600; color: #1e293b; }
.cp-crit-det[b-65ask8577y] { font-size: var(--corp-fs-sm); color: #64748b; }
.cp-crit.fail .cp-crit-det[b-65ask8577y] { color: var(--corp-bad-strong); }
.cp-crit-pts[b-65ask8577y] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; color: #334155; white-space: nowrap; }

.cp-alerts[b-65ask8577y] { background: #fff; border: 1px solid var(--corp-border); border-radius: 10px; padding: 0.6rem 0.8rem; display: flex; flex-direction: column; gap: 0.5rem; }
.cp-alerts-head[b-65ask8577y] { display: flex; align-items: center; gap: 0.4rem; font-size: var(--corp-fs-sm); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: #1e3a5a; }
/* /Components/Pages/Ingenieria/ComMemoriaPropuesta.razor.rz.scp.css */
.mp-card[b-8mfczqmw7w] { margin: 0; }
.mp-head-right[b-8mfczqmw7w] { margin-left: auto; }
.mp-grid[b-8mfczqmw7w] { display: grid; grid-template-columns: 1fr 1fr; gap: 0.6rem 0.9rem; }
.mp-bloque[b-8mfczqmw7w] { display: flex; flex-direction: column; }
.mp-bloque textarea[b-8mfczqmw7w] { resize: vertical; font-family: inherit; line-height: 1.4; }
.mp-full[b-8mfczqmw7w] { grid-column: 1 / -1; }
.mp-cond-head[b-8mfczqmw7w] { margin: 0.9rem 0 0.4rem; font-size: var(--corp-fs-sm); font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--corp-text-head); border-top: 1px solid var(--corp-border); padding-top: 0.6rem; }
.mp-cond[b-8mfczqmw7w] { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.6rem 0.9rem; }
@media (max-width: 900px) { .mp-grid[b-8mfczqmw7w], .mp-cond[b-8mfczqmw7w] { grid-template-columns: 1fr; } }
.mp-foot[b-8mfczqmw7w] { display: flex; align-items: center; gap: 0.6rem; margin-top: 0.8rem; }
.mp-aviso[b-8mfczqmw7w] { font-size: var(--corp-fs-sm); color: var(--corp-ok); font-weight: 600; }
/* Completa: texto verde sin pastilla; la pastilla ámbar queda solo para lo incompleto. */
.mp-ok[b-8mfczqmw7w] { font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-ok); text-transform: none; letter-spacing: 0; }
.mp-error[b-8mfczqmw7w] { font-size: var(--corp-fs-sm); color: var(--corp-bad-strong); font-weight: 600; }
/* /Components/Pages/Ingenieria/CompGestionPresupuesto.razor.rz.scp.css */
/* Container */
.budget-container[b-db9tkv6qol] {
    padding: 0.75rem;
    height: calc(100vh - 280px);
}
/* Header compacto - Minimalist */
.budget-header[b-db9tkv6qol] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: transparent;
    border-bottom: 1px solid #e2e8f0;
    padding: 0.5rem 0.25rem;
    margin-bottom: 0.75rem;
    color: #334155;
}

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

.header-left > i[b-db9tkv6qol] {
    font-size: var(--corp-fs-lg);
    color: #64748b;
}

.project-name[b-db9tkv6qol] {
    font-weight: 600;
    font-size: var(--corp-fs-lg);
    color: #0f172a;
}

.badge-stats[b-db9tkv6qol] {
    background: #f1f5f9;
    color: #64748b;
    padding: 0.15rem 0.5rem;
    border-radius: 9999px;
    font-size: var(--corp-fs-sm);
    font-weight: 500;
    border: 1px solid #e2e8f0;
}

.btn-new-ficha[b-db9tkv6qol] {
    background: #ffffff;
    border: 1px solid #cbd5e1;
    color: #475569;
    padding: 0.3rem 0.75rem;
    border-radius: 6px;
    font-size: var(--corp-fs-body);
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease;
    display: inline-flex;
    align-items: center;
}

.btn-new-ficha:hover[b-db9tkv6qol] {
    background: #f8fafc;
    border-color: #94a3b8;
    color: #1e293b;
}

.btn-new-ficha i[b-db9tkv6qol] {
    margin-right: 0.35rem;
}

/* Card */
.budget-card[b-db9tkv6qol] {
    background: white;
    border-radius: 8px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); /* Subtle shadow */
    overflow: hidden;
    border: 1px solid #e2e8f0;
}

/* Tabla compacta */
.budget-table[b-db9tkv6qol] {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    font-size: var(--corp-fs-md);
}

.budget-table thead[b-db9tkv6qol] {
    background: #f8fafc;
    border-bottom: 1px solid #e2e8f0;
}

.budget-table thead th[b-db9tkv6qol] {
    padding: 0.6rem 0.75rem;
    font-weight: 600;
    font-size: var(--corp-fs-sm);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #64748b;
    text-align: left;
}

.budget-table thead th:nth-child(n+4)[b-db9tkv6qol] {
    text-align: right;
}

.budget-table thead th:last-child[b-db9tkv6qol] {
    text-align: center;
}

/* Filas de grupo - Neutral */
.group-row[b-db9tkv6qol] {
    background: #f8fafc; /* Very light cool gray */
}

.group-row td[b-db9tkv6qol] {
    padding: 0.5rem 0.75rem;
    font-weight: 600;
    font-size: var(--corp-fs-body);
    color: #334155;
    border-bottom: 1px solid #e2e8f0;
    border-top: 1px solid #e2e8f0;
}

.group-row i[b-db9tkv6qol] {
    color: #94a3b8; /* Muted icon */
    margin-right: 0.35rem;
    font-size: var(--corp-fs-body);
}

.group-num[b-db9tkv6qol] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    background: #e2e8f0;
    color: #475569;
    border-radius: 4px;
    font-size: var(--corp-fs-sm);
    font-weight: 700;
}

.amt-group[b-db9tkv6qol] {
    font-family: 'Consolas', monospace;
    font-weight: 700;
    color: #334155;
}

/* Filas de items */
.item-row td[b-db9tkv6qol] {
    padding: 0.4rem 0.75rem;
    border-bottom: 1px solid #f1f5f9;
    color: #4b5563;
}

.item-row:last-child td[b-db9tkv6qol] {
    border-bottom: none;
}

.item-row:hover[b-db9tkv6qol] {
    background: #fcfcfc;
}

.item-row .num[b-db9tkv6qol] {
    color: #9ca3af;
    font-family: 'Consolas', monospace;
    font-size: var(--corp-fs-sm);
}

.item-row .desc[b-db9tkv6qol] {
    font-weight: 400;
    color: #334155;
}

.item-row .unit[b-db9tkv6qol] {
    text-align: center;
    color: #94a3b8;
    font-size: var(--corp-fs-sm);
}

.item-row .amt[b-db9tkv6qol] {
    text-align: right;
    font-family: 'Consolas', monospace;
    color: #4b5563;
}

.item-row .actions[b-db9tkv6qol] {
    text-align: center;
}

/* Input Styles */
.budget-input[b-db9tkv6qol] {
    border: 1px solid transparent !important;
    background-color: transparent !important;
    transition: all 0.2s ease;
    width: 100%;
    padding: 0.15rem 0.5rem;
    font-size: var(--corp-fs-body);
    font-family: 'Consolas', monospace;
}

.budget-input:focus[b-db9tkv6qol] {
    border-color: #cbd5e1 !important;
    background-color: #ffffff !important;
    box-shadow: 0 0 0 2px rgba(203, 213, 225, 0.3) !important;
    outline: none;
}

/* Custom action buttons inside table */
.item-row .btn-outline-primary[b-db9tkv6qol] {
    color: #64748b;
    border-color: transparent;
}
.item-row .btn-outline-primary:hover[b-db9tkv6qol] {
    color: #2563eb;
    background: #eff6ff;
    border-color: #bfdbfe;
}

.item-row .btn-outline-danger[b-db9tkv6qol] {
    color: #64748b;
    border-color: transparent;
}
.item-row .btn-outline-danger:hover[b-db9tkv6qol] {
    color: var(--corp-bad-strong);
    background: #fef2f2;
    border-color: #fecaca;
}


/* Footer total */
.total-row[b-db9tkv6qol] {
    background: #f8fafc;
    border-top: 2px solid #e2e8f0;
}

.total-row td[b-db9tkv6qol] {
    padding: 0.75rem;
    color: #0f172a;
    font-weight: 700;
    font-size: var(--corp-fs-lg);
    border: none;
}

.total-row td:nth-child(2)[b-db9tkv6qol] {
    font-family: 'Consolas', monospace;
}

/* Loading */
.loading-container[b-db9tkv6qol] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    padding: 2rem;
    color: #6b7280;
    font-size: var(--corp-fs-md);
}

.loading-spinner[b-db9tkv6qol] {
    width: 20px;
    height: 20px;
    border: 2px solid #e5e7eb;
    border-top-color: #2563eb;
    border-radius: 50%;
    animation: spin-b-db9tkv6qol 0.6s linear infinite;
}

@keyframes spin-b-db9tkv6qol {
    to { transform: rotate(360deg); }
}

/* Empty state */
.empty-state[b-db9tkv6qol] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 2rem;
    color: #9ca3af;
    font-size: var(--corp-fs-md);
}

.empty-state i[b-db9tkv6qol] {
    font-size: 1.25rem;
}

/* Responsive */
@media (max-width: 768px) {
    .budget-container[b-db9tkv6qol] {
        padding: 0.5rem;
    }

    .budget-header[b-db9tkv6qol] {
        padding: 0.4rem 0.75rem;
    }

    .project-name[b-db9tkv6qol] {
        font-size: var(--corp-fs-md);
    }

    .budget-table[b-db9tkv6qol] {
        font-size: var(--corp-fs-sm);
    }
}

/* Drag-and-drop */
.drag-handle[b-db9tkv6qol] {
    cursor: grab;
    user-select: none;
}

.drag-handle:active[b-db9tkv6qol] {
    cursor: grabbing;
}

tr.dragging[b-db9tkv6qol] {
    opacity: 0.4;
}

tr.drag-over[b-db9tkv6qol] {
    box-shadow: inset 0 -2px 0 0 #3b82f6;
}

.group-row.drag-over[b-db9tkv6qol] {
    box-shadow: inset 0 -3px 0 0 #2563eb;
    background: #eff6ff;
}

.item-row.drag-over[b-db9tkv6qol] {
    background: #f0f9ff;
}

/* ── Densidad de la tabla (ING-10) ──────────────────────────────────────────
   La descripción de una partida de obra pública llega a 300 caracteres. Sin
   recortar, una sola fila ocupaba siete renglones y en un monitor de 1600x900
   cabían CUATRO partidas de 55: revisar el presupuesto eran catorce pantallazos
   y comparar dos partidas separadas era imposible. Recortada a dos líneas caben
   ~20. El texto completo no se pierde: va en el `title` de la celda y vuelve
   entero con el botón «Ver completo». */
/* Una sola línea con «…», como el resto de tablas del sistema: el recorte a dos líneas con
   -webkit-box sobre la propia celda la sacaba del modelo de tabla y el segundo renglón quedaba
   cortado a la mitad. El texto completo sigue en el title y en «Ver completo». */
.budget-table.compacta .item-row .desc[b-db9tkv6qol] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    /* max-width 0 + width 100%: la descripción se queda con el ancho que SOBRA. Con un tope fijo
       empujaba el total fuera de la tarjeta y recortaba la cantidad (3200.0000 se leía «320»). */
    max-width: 0;
    width: 100%;
}
/* Las columnas de cifras no ceden ancho a la descripción: la cantidad es un campo editable y
   angosto recortaba el número sin avisar (3200.0000 se veía «320»). */
.budget-table.compacta .item-row td.amt[b-db9tkv6qol] { min-width: 100px; }

/* Fila de capítulo: se contrae con un clic, así que tiene que parecer pulsable. */
.group-row .group-toggle[b-db9tkv6qol] {
    cursor: pointer;
    user-select: none;
}
.group-row .group-toggle:hover[b-db9tkv6qol] { text-decoration: underline; }

.group-row .group-count[b-db9tkv6qol] {
    margin-left: 0.5rem;
    font-weight: 400;
    font-size: var(--corp-fs-sm);
    color: #94a3b8;
    text-transform: none;
}
/* /Components/Pages/Ingenieria/ComPlanCuadrillas.razor.rz.scp.css */
.pc-root[b-piowjv5lwz] { display: flex; flex-direction: column; gap: 0.6rem; padding: 0.75rem; }
.pc-head[b-piowjv5lwz] { display: flex; flex-direction: column; gap: 0.5rem; }
.pc-kpis[b-piowjv5lwz] { margin: 0; }
.pc-fecha[b-piowjv5lwz] { width: 150px; font-size: var(--corp-fs-body); padding: 0.15rem 0.4rem; font-weight: 600; }
.pc-actions[b-piowjv5lwz] { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.pc-aviso[b-piowjv5lwz] { background: #f0fdf4; border: 1px solid #bbf7d0; color: #166534; border-radius: 6px; padding: 0.4rem 0.7rem; font-size: var(--corp-fs-body); font-weight: 600; }

.pc-scroll[b-piowjv5lwz] { max-height: 58vh; border: 1px solid var(--corp-border); border-radius: 6px; }
.pc-tbl tbody tr.pc-grp-first td[b-piowjv5lwz] { border-top: 2px solid #cbd5e1; }
.pc-tbl tbody tr.pc-grp-first td:first-child[b-piowjv5lwz] { font-weight: 700; color: #1e3a5a; }
.pc-cuad[b-piowjv5lwz] { display: inline-flex; align-items: center; gap: 0.25rem; }
.pc-num[b-piowjv5lwz] { width: 64px; text-align: center; padding: 0.2rem 0.3rem; font-family: var(--corp-mono); font-size: var(--corp-fs-sm); }
.pc-mini[b-piowjv5lwz] { background: #fff; border: 1px solid var(--corp-border); border-radius: 4px; cursor: pointer; font-size: var(--corp-fs-sm); color: #475569; padding: 0.1rem 0.35rem; }
.pc-mini:hover[b-piowjv5lwz] { background: #f1f5f9; }

.pc-curva[b-piowjv5lwz] { display: flex; align-items: flex-end; gap: 0.5rem; padding: 0.75rem 0.75rem 0.25rem; overflow-x: auto; border: 1px solid var(--corp-border); border-radius: 6px; background: #fff; min-height: 190px; }
.pc-bar[b-piowjv5lwz] { display: flex; flex-direction: column; align-items: center; gap: 0.25rem; min-width: 56px; flex: 1; }
.pc-bar-pct[b-piowjv5lwz] { font-size: var(--corp-fs-xs); color: #64748b; font-family: var(--corp-mono); }
.pc-bar-track[b-piowjv5lwz] { width: 100%; height: 120px; display: flex; align-items: flex-end; background: #f8fafc; border-radius: 4px; }
.pc-bar-fill[b-piowjv5lwz] { width: 100%; background: #93c5fd; border-radius: 4px 4px 0 0; display: flex; align-items: flex-end; min-height: 2px; }
.pc-bar-dir[b-piowjv5lwz] { width: 100%; background: #1565c0; border-radius: 4px 4px 0 0; }
.pc-bar-lbl[b-piowjv5lwz] { font-size: var(--corp-fs-xs); color: #334155; font-weight: 600; white-space: nowrap; }

/* ING-10 · la descripción de la partida se recorta a dos líneas; el texto íntegro
   queda en el `title`. Sin esto una sola fila ocupaba siete renglones y del plan
   de 55 actividades se veían cuatro. */
.pc-desc[b-piowjv5lwz] {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    max-height: 2.6em;
    line-height: 1.3;
}
/* /Components/Pages/Ingenieria/CompPresupuestoCronograma.razor.rz.scp.css */
/* ═══════════════════════════════════════════
   CompPresupuestoCronograma – Full-width Gantt
   ═══════════════════════════════════════════ */

.pc-container[b-xomt0iy5ir] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 280px);
    min-height: 500px;
}

/* ── Toolbar ── */
.pc-toolbar[b-xomt0iy5ir] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid #e2e8f0;
    background: #fafbfc;
    flex-shrink: 0;
}

.pc-toolbar-left[b-xomt0iy5ir] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.pc-panel-icon[b-xomt0iy5ir] {
    font-size: var(--corp-fs-lg);
}

.pc-project-name[b-xomt0iy5ir] {
    font-weight: 600;
    font-size: var(--corp-fs-lg);
    color: #0f172a;
}

.pc-badge[b-xomt0iy5ir] {
    background: #f1f5f9;
    color: #64748b;
    padding: 0.12rem 0.5rem;
    border-radius: 9999px;
    font-size: var(--corp-fs-sm);
    font-weight: 500;
    border: 1px solid #e2e8f0;
}

.pc-badge-gantt[b-xomt0iy5ir] {
    background: #fff;
    color: var(--corp-text-sub);
    border-color: var(--corp-border);
}

.pc-toolbar-right[b-xomt0iy5ir] {
    display: flex;
    gap: 0.4rem;
}

/* ── Buttons ── */
.pc-btn[b-xomt0iy5ir] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.3rem 0.7rem;
    border-radius: 6px;
    font-size: var(--corp-fs-body);
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s;
    border: 1px solid #cbd5e1;
    background: #fff;
    color: #475569;
}

.pc-btn:hover[b-xomt0iy5ir] {
    background: #f8fafc;
    border-color: #94a3b8;
}

.pc-btn-new[b-xomt0iy5ir] {
    background: var(--corp-accent);
    color: white;
    border-color: var(--corp-accent);
}

.pc-btn-new:hover[b-xomt0iy5ir] {
    background: #0d6e66;
    border-color: #0d6e66;
}

.pc-btn-export[b-xomt0iy5ir] {
    color: var(--corp-ok-strong);
    border-color: #bbf7d0;
}

.pc-btn-export:hover[b-xomt0iy5ir] {
    background: #f0fdf4;
}

.pc-btn-import[b-xomt0iy5ir] {
    color: #7c3aed;
    border-color: #ddd6fe;
}

.pc-btn-import:hover[b-xomt0iy5ir] {
    background: #f5f3ff;
}

/* Resultado de la última importación: se queda en pantalla hasta que se cierra a mano,
   porque puede listar las fichas que no se pudieron guardar. */
.pc-import-msg[b-xomt0iy5ir] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    margin: 0.5rem 0.75rem 0;
    padding: 0.5rem 0.7rem;
    border-radius: 6px;
    font-size: var(--corp-fs-sm);
    border: 1px solid #bbf7d0;
    background: #f0fdf4;
    color: #166534;
}

.pc-import-msg.error[b-xomt0iy5ir] {
    border-color: #fecaca;
    background: #fef2f2;
    color: #991b1b;
}

.pc-import-msg button[b-xomt0iy5ir] {
    margin-left: auto;
    border: none;
    background: transparent;
    cursor: pointer;
    color: inherit;
    font-weight: 700;
}

/* Verde azulado y degradados fuera: los botones y pestañas usan el acento del sistema. */
.pc-btn-generate[b-xomt0iy5ir] {
    border: none;
    background: var(--corp-accent);
    color: white;
    padding: 0.5rem 1.25rem;
    border-radius: 8px;
    font-weight: 700;
    margin-top: 1rem;
    cursor: pointer;
    transition: transform 0.15s, box-shadow 0.15s;
}

.pc-btn-generate:hover[b-xomt0iy5ir] {
    transform: translateY(-1px);
    background: var(--corp-navy);
}

.pc-btn-add[b-xomt0iy5ir] {
    border: none;
    background: var(--corp-accent);
    color: white;
    padding: 0.4rem 0.8rem;
    border-radius: 6px;
    font-weight: 700;
    font-size: var(--corp-fs-body);
    white-space: nowrap;
    cursor: pointer;
}

.pc-btn-add:disabled[b-xomt0iy5ir] {
    opacity: 0.5;
    cursor: not-allowed;
}

.pc-btn-del[b-xomt0iy5ir] {
    border: none;
    background: transparent;
    color: var(--corp-bad-strong);
    font-size: var(--corp-fs-lg);
    cursor: pointer;
    padding: 0.2rem 0.4rem;
    border-radius: 4px;
}

.pc-btn-del:hover[b-xomt0iy5ir] {
    background: #fef2f2;
}

/* ── Full-width Gantt ── */
.pc-gantt-full[b-xomt0iy5ir] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    width: 100%;
}

.pc-gantt-empty[b-xomt0iy5ir] {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 3rem 2rem;
    background: #fff;
}

.pc-gantt-empty-icon[b-xomt0iy5ir] {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--corp-bg-head);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2rem;
    margin-bottom: 1rem;
}

.pc-gantt-empty-title[b-xomt0iy5ir] {
    font-size: var(--corp-fs-xl);
    font-weight: 700;
    color: #1e293b;
    margin-bottom: 0.4rem;
}

.pc-gantt-empty-text[b-xomt0iy5ir] {
    color: #64748b;
    max-width: 420px;
    font-size: var(--corp-fs-md);
    line-height: 1.5;
    margin: 0;
}

/* ── Loading ── */
.pc-loading[b-xomt0iy5ir] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    color: #6b7280;
    font-size: var(--corp-fs-md);
}

.pc-spinner[b-xomt0iy5ir] {
    width: 20px;
    height: 20px;
    border: 2px solid #e5e7eb;
    border-top-color: var(--corp-accent);
    border-radius: 50%;
    animation: pc-spin-b-xomt0iy5ir 0.6s linear infinite;
}

@keyframes pc-spin-b-xomt0iy5ir {
    to {
        transform: rotate(360deg);
    }
}

/* ── Config dialog ── */
.pc-config-tabs[b-xomt0iy5ir] {
    display: flex;
    gap: 0;
    border-bottom: 2px solid #e2e8f0;
    margin-bottom: 1.25rem;
}

.pc-config-tab[b-xomt0iy5ir] {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    padding: 0.65rem 1rem;
    border: none;
    background: transparent;
    color: #64748b;
    font-size: var(--corp-fs-md);
    font-weight: 600;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    transition: color 0.15s, border-color 0.15s;
}

.pc-config-tab:hover[b-xomt0iy5ir] {
    color: var(--corp-accent);
    background: #f8fafc;
}

.pc-config-tab.active[b-xomt0iy5ir] {
    color: var(--corp-accent);
    border-bottom-color: var(--corp-accent);
}

.pc-config-content[b-xomt0iy5ir] {
    min-height: 200px;
}

.pc-config-section[b-xomt0iy5ir] {
    margin-bottom: 1.5rem;
}

.pc-config-section h4[b-xomt0iy5ir] {
    margin: 0 0 0.75rem;
    font-size: var(--corp-fs-lg);
    font-weight: 700;
    color: #1e293b;
}

.pc-config-days[b-xomt0iy5ir] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 1.5rem;
}

.pc-config-hours[b-xomt0iy5ir] {
    display: flex;
    gap: 1.5rem;
}

.pc-config-hours > div[b-xomt0iy5ir] {
    flex: 1;
}

.pc-config-hours label[b-xomt0iy5ir] {
    display: block;
    font-size: var(--corp-fs-body);
    font-weight: 600;
    color: #64748b;
    margin-bottom: 0.3rem;
}

.pc-config-form-row[b-xomt0iy5ir] {
    display: flex;
    gap: 0.75rem;
    align-items: flex-end;
    margin-bottom: 0.75rem;
}

.pc-config-table[b-xomt0iy5ir] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--corp-fs-md);
}

.pc-config-table th[b-xomt0iy5ir] {
    text-align: left;
    padding: 0.4rem 0.5rem;
    border-bottom: 2px solid #e2e8f0;
    color: #64748b;
    font-weight: 600;
}

.pc-config-table td[b-xomt0iy5ir] {
    padding: 0.4rem 0.5rem;
    border-bottom: 1px solid #f1f5f9;
}

.pc-no-items[b-xomt0iy5ir] {
    color: #94a3b8;
    font-size: var(--corp-fs-md);
    font-style: italic;
    margin: 0.5rem 0 0;
}

/* ── Row action buttons inside Gantt ── */
.pc-row-actions[b-xomt0iy5ir] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
}

.pc-row-btn[b-xomt0iy5ir] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border: 1px solid transparent;
    border-radius: 5px;
    background: transparent;
    cursor: pointer;
    font-size: var(--corp-fs-md);
    color: #94a3b8;
    transition: all 0.15s;
    padding: 0;
}

.pc-row-btn:hover[b-xomt0iy5ir] {
    transform: scale(1.1);
}

.pc-row-btn-edit:hover[b-xomt0iy5ir] {
    color: #2563eb;
    background: #eff6ff;
    border-color: #bfdbfe;
}

.pc-row-btn-delete:hover[b-xomt0iy5ir] {
    color: var(--corp-bad-strong);
    background: #fef2f2;
    border-color: #fecaca;
}

/* ── Responsive ── */
@media (max-width: 768px) {
    .pc-toolbar[b-xomt0iy5ir] {
        flex-direction: column;
        gap: 0.5rem;
        align-items: stretch;
    }

    .pc-toolbar-right[b-xomt0iy5ir] {
        justify-content: flex-end;
    }
}
/* /Components/Pages/Ingenieria/ComVersionesPropuesta.razor.rz.scp.css */
.vp-root[b-wf1f5olt02] { display: flex; flex-direction: column; gap: 0.6rem; padding: 0.75rem; }
.vp-toolbar[b-wf1f5olt02] { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; }
.vp-congelar[b-wf1f5olt02] { display: flex; gap: 0.4rem; align-items: center; flex: 1; min-width: 320px; max-width: 640px; }
.vp-aviso[b-wf1f5olt02] { font-size: var(--corp-fs-sm); color: var(--corp-ok); font-weight: 600; }
.vp-error[b-wf1f5olt02] { font-size: var(--corp-fs-sm); color: var(--corp-bad-strong); font-weight: 600; }

.vp-grid[b-wf1f5olt02] { display: grid; grid-template-columns: 380px 1fr; gap: 0.75rem; align-items: start; }
@media (max-width: 1000px) { .vp-grid[b-wf1f5olt02] { grid-template-columns: 1fr; } }
.vp-lista[b-wf1f5olt02] { border: 1px solid var(--corp-border); border-radius: var(--corp-radius); overflow: hidden; background: #fff; }
.vp-lista tr.vp-sel td[b-wf1f5olt02] { background: #eff6ff; box-shadow: inset 3px 0 0 var(--corp-accent); }

.vp-diff[b-wf1f5olt02] { display: flex; flex-direction: column; gap: 0.5rem; min-width: 0; }
.vp-diff-head[b-wf1f5olt02] { display: flex; align-items: center; gap: 0.5rem; font-size: var(--corp-fs-sm); font-weight: 600; color: #334155; flex-wrap: wrap; }
.vp-sel-ver[b-wf1f5olt02] { width: auto; min-width: 170px; }
.vp-kpis[b-wf1f5olt02] { margin: 0; }
.vp-kpi-mini[b-wf1f5olt02] { font-size: var(--corp-fs-xs); color: #94a3b8; font-weight: 600; margin-right: 0.3rem; }
.vp-up[b-wf1f5olt02] { color: #b45309 !important; }
.vp-down[b-wf1f5olt02] { color: #047857 !important; }
.vp-scroll[b-wf1f5olt02] { max-height: 52vh; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); }
.vp-cambios[b-wf1f5olt02] { font-size: var(--corp-fs-xs); color: #92400e; }
/* El estado de cada ficha va como punto + texto y una marca a la izquierda de la fila:
   pintar la fila entera de verde, rojo o ámbar volvía la comparación un arcoíris. */
tr.vp-nueva td:first-child[b-wf1f5olt02] { box-shadow: inset 3px 0 0 var(--corp-ok-strong); }
tr.vp-eliminada td:first-child[b-wf1f5olt02] { box-shadow: inset 3px 0 0 var(--corp-bad-strong); }
tr.vp-cambiada td:first-child[b-wf1f5olt02] { box-shadow: inset 3px 0 0 var(--corp-warn-strong); }
tr.vp-eliminada td[b-wf1f5olt02] { color: var(--corp-text-muted); }
.vp-st[b-wf1f5olt02] { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }
.vp-st[b-wf1f5olt02]::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #cbd5e1; flex-shrink: 0; }
.vp-st.ok[b-wf1f5olt02]::before { background: var(--corp-ok-strong); }
.vp-st.bad[b-wf1f5olt02] { color: var(--corp-bad); }
.vp-st.bad[b-wf1f5olt02]::before { background: var(--corp-bad-strong); }
.vp-st.warn[b-wf1f5olt02] { color: var(--corp-warn); }
.vp-st.warn[b-wf1f5olt02]::before { background: var(--corp-warn-strong); }
.vp-motivo[b-wf1f5olt02] { font-size: var(--corp-fs-sm); }
/* /Components/Pages/Ingenieria/DialogDisenoEvaluacion.razor.rz.scp.css */
/* Diálogo Diseñar Evaluación — estilo corporativo (corp-*) */

.dlg-diseno-title[b-0zgy9el8bb] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: var(--corp-fs-lg);
    font-weight: 700;
    color: var(--corp-navy);
}

.dlg-diseno-title-icon[b-0zgy9el8bb] {
    width: 26px;
    height: 26px;
    border-radius: var(--corp-radius);
    background: var(--corp-accent);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

    .dlg-diseno-title-icon .e-icons[b-0zgy9el8bb] {
        font-size: var(--corp-fs-md);
        color: #fff;
        line-height: 1;
    }

.dlg-diseno-title-activity[b-0zgy9el8bb] {
    font-weight: 400;
    color: var(--corp-text-sub);
    font-size: var(--corp-fs-sm);
}

.dlg-diseno-body[b-0zgy9el8bb] {
    min-width: 620px;
    height: 68vh;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.25rem 0.15rem;
}

/* Notice banner */
.dlg-diseno-notice[b-0zgy9el8bb] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.55rem 0.85rem;
    background: var(--corp-info-bg);
    border: 1px solid #bfdbfe;
    border-left: 3px solid var(--corp-accent);
    border-radius: var(--corp-radius);
    font-size: var(--corp-fs-sm);
    color: var(--corp-info-txt);
    line-height: 1.5;
}

    .dlg-diseno-notice .e-icons[b-0zgy9el8bb] {
        font-size: var(--corp-fs-lg);
        color: var(--corp-accent);
        flex-shrink: 0;
        line-height: 1;
    }

/* Group card */
.dlg-diseno-group[b-0zgy9el8bb] {
    border: 1px solid var(--corp-border);
    border-left: 3px solid var(--corp-accent);
    border-radius: var(--corp-radius);
    padding: 0;
    background: var(--corp-bg-card);
    transition: box-shadow 0.15s;
    overflow: hidden;
}

    .dlg-diseno-group:hover[b-0zgy9el8bb] {
        box-shadow: 0 2px 10px rgba(30, 58, 90, 0.06);
    }

.dlg-diseno-group-header[b-0zgy9el8bb] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.6rem 0.85rem;
    cursor: pointer;
    user-select: none;
    background: var(--corp-bg-head);
    transition: background 0.15s;
}

    .dlg-diseno-group-header:hover[b-0zgy9el8bb] {
        background: #eef2f6;
    }

    .dlg-diseno-group.expanded .dlg-diseno-group-header[b-0zgy9el8bb] {
        border-bottom: 1px solid var(--corp-border);
    }

.dlg-diseno-group-left[b-0zgy9el8bb] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 1;
}

/* Chevron for group accordion */
.e-icons.dlg-diseno-chevron[b-0zgy9el8bb] {
    font-size: var(--corp-fs-md);
    color: var(--corp-accent);
    transition: transform 0.2s ease;
    flex-shrink: 0;
    width: 14px;
    text-align: center;
    line-height: 1;
}

    .e-icons.dlg-diseno-chevron.rotated[b-0zgy9el8bb] {
        transform: rotate(90deg);
    }

.e-icons.dlg-diseno-icon-preview[b-0zgy9el8bb] {
    font-size: var(--corp-fs-lg);
    color: var(--corp-navy);
    width: 20px;
    text-align: center;
    line-height: 1;
}

/* Group name displayed in header */
.dlg-diseno-group-name[b-0zgy9el8bb] {
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    color: var(--corp-navy);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* Badge showing param count when collapsed */
.dlg-diseno-group-badge[b-0zgy9el8bb] {
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    color: var(--corp-accent);
    background: var(--corp-info-bg);
    padding: 1px 7px;
    border-radius: 10px;
    margin-left: 0.25rem;
    flex-shrink: 0;
}

/* Expanded group content area */
.dlg-diseno-group-content[b-0zgy9el8bb] {
    padding: 0.75rem 0.85rem 0.85rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* Group edit row (icon select + name input) */
.dlg-diseno-group-edit-row[b-0zgy9el8bb] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.35rem;
}

.dlg-diseno-icon-select[b-0zgy9el8bb] {
    width: 130px;
    font-size: var(--corp-fs-sm);
    padding: 0.3rem 0.55rem;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    background: #fff;
    color: var(--corp-text-main);
    cursor: pointer;
    transition: border-color 0.15s;
    box-sizing: border-box;
}

    .dlg-diseno-icon-select:focus[b-0zgy9el8bb] {
        outline: none;
        border-color: var(--corp-accent);
    }

.dlg-diseno-group-input[b-0zgy9el8bb] {
    flex: 1;
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    padding: 0.3rem 0.55rem;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    background: #fff;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--corp-navy);
    transition: border-color 0.15s;
    box-sizing: border-box;
}

    .dlg-diseno-group-input:focus[b-0zgy9el8bb] {
        outline: none;
        border-color: var(--corp-accent);
    }

/* Parameter card */
.dlg-diseno-param-card[b-0zgy9el8bb] {
    background: #fff;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    padding: 0.6rem 0.7rem;
    transition: border-color 0.15s, box-shadow 0.15s;
}

    .dlg-diseno-param-card.collapsed[b-0zgy9el8bb] {
        padding: 0;
        cursor: pointer;
    }

        .dlg-diseno-param-card.collapsed:hover[b-0zgy9el8bb] {
            border-color: var(--corp-accent);
            background: #f8fafc;
        }

    .dlg-diseno-param-card.expanded[b-0zgy9el8bb] {
        border-color: var(--corp-accent);
        box-shadow: 0 1px 5px rgba(21, 101, 192, 0.08);
    }

/* Parameter summary row (collapsed) */
.dlg-diseno-param-summary[b-0zgy9el8bb] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.45rem 0.6rem;
}

.e-icons.dlg-diseno-chevron-sm[b-0zgy9el8bb] {
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-muted);
    flex-shrink: 0;
    width: 12px;
    text-align: center;
    line-height: 1;
}

.dlg-diseno-param-summary-name[b-0zgy9el8bb] {
    font-size: var(--corp-fs-body);
    font-weight: 600;
    color: var(--corp-text-main);
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dlg-diseno-param-summary-type[b-0zgy9el8bb] {
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    color: var(--corp-text-sub);
    background: var(--corp-bg-head);
    border: 1px solid var(--corp-border-row);
    padding: 1px 7px;
    border-radius: 10px;
    flex-shrink: 0;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.dlg-diseno-param-row[b-0zgy9el8bb] {
    display: flex;
    gap: 0.55rem;
    align-items: flex-end;
    margin-bottom: 0.5rem;
}

    .dlg-diseno-param-row:last-child[b-0zgy9el8bb] {
        margin-bottom: 0;
    }

/* Field styling */
.dlg-diseno-field[b-0zgy9el8bb] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    flex: 1;
}

    .dlg-diseno-field.full[b-0zgy9el8bb] {
        flex: 1 1 100%;
    }

/* Bool toggle */
.dlg-diseno-bool-toggle[b-0zgy9el8bb] {
    display: flex;
    gap: 0;
    border-radius: var(--corp-radius);
    overflow: hidden;
    border: 1px solid var(--corp-border);
}

.dlg-diseno-bool-btn[b-0zgy9el8bb] {
    padding: 0.32rem 0.85rem;
    font-size: var(--corp-fs-sm);
    font-weight: 600;
    border: none;
    background: #fff;
    color: var(--corp-text-sub);
    cursor: pointer;
    transition: all 0.15s;
    flex: 1;
    text-align: center;
}

    .dlg-diseno-bool-btn.si.active[b-0zgy9el8bb] {
        background: var(--corp-ok-bg);
        color: var(--corp-ok);
    }

    .dlg-diseno-bool-btn.no.active[b-0zgy9el8bb] {
        background: var(--corp-bad-bg);
        color: var(--corp-bad);
    }

    .dlg-diseno-bool-btn:hover:not(.active)[b-0zgy9el8bb] {
        background: #f1f5f9;
    }

/* Delete buttons */
.dlg-diseno-btn-delete[b-0zgy9el8bb] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border: 1px solid #fca5a5;
    border-radius: var(--corp-radius);
    background: #fff;
    color: var(--corp-bad);
    cursor: pointer;
    font-size: var(--corp-fs-sm);
    flex-shrink: 0;
    transition: all 0.15s;
}

    .dlg-diseno-btn-delete:hover[b-0zgy9el8bb] {
        background: var(--corp-bad-bg);
    }

.dlg-diseno-btn-delete-param[b-0zgy9el8bb] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border: none;
    border-radius: var(--corp-radius);
    background: transparent;
    color: var(--corp-text-muted);
    cursor: pointer;
    font-size: var(--corp-fs-sm);
    flex-shrink: 0;
    transition: all 0.15s;
    align-self: center;
}

    .dlg-diseno-btn-delete-param:hover[b-0zgy9el8bb] {
        background: var(--corp-bad-bg);
        color: var(--corp-bad);
    }

/* Add buttons */
.dlg-diseno-btn-add-param[b-0zgy9el8bb] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    justify-content: center;
    padding: 0.4rem 0.85rem;
    margin-top: 0.5rem;
    font-size: var(--corp-fs-sm);
    font-weight: 600;
    border: 1px dashed #9db8d6;
    border-radius: var(--corp-radius);
    background: transparent;
    color: var(--corp-accent);
    cursor: pointer;
    transition: all 0.15s;
    width: 100%;
}

    .dlg-diseno-btn-add-param:hover[b-0zgy9el8bb] {
        background: var(--corp-info-bg);
        border-color: var(--corp-accent);
    }

.dlg-diseno-btn-add-group[b-0zgy9el8bb] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    justify-content: center;
    padding: 0.65rem;
    font-size: var(--corp-fs-md);
    font-weight: 600;
    border: 2px dashed #9db8d6;
    border-radius: var(--corp-radius);
    background: transparent;
    color: var(--corp-accent);
    cursor: pointer;
    transition: all 0.15s;
    width: 100%;
}

    .dlg-diseno-btn-add-group:hover[b-0zgy9el8bb] {
        background: var(--corp-info-bg);
        border-color: var(--corp-accent);
    }

/* Íconos e-icons dentro de botones: heredan color y toman tamaño acorde al botón */
.dlg-diseno-btn-delete .e-icons[b-0zgy9el8bb],
.dlg-diseno-btn-delete-param .e-icons[b-0zgy9el8bb] {
    font-size: var(--corp-fs-md);
    color: inherit;
    line-height: 1;
}

.dlg-diseno-btn-add-param .e-icons[b-0zgy9el8bb],
.dlg-diseno-btn-add-group .e-icons[b-0zgy9el8bb] {
    font-size: var(--corp-fs-md);
    color: inherit;
    line-height: 1;
}
/* /Components/Pages/NoEncontrado.razor.rz.scp.css */
/* Página de 404 / códigos de navegación. Autónoma: cada valor lleva su respaldo. */

.ne-escena[b-sfzbe8li7a] {
    min-height: 60vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem 1rem;
    background: var(--corp-bg-body, #f5f6f8);
}

.ne-tarjeta[b-sfzbe8li7a] {
    background: var(--corp-bg-card, #ffffff);
    border: 1px solid var(--corp-border, #d1d9e0);
    border-radius: var(--corp-radius, 4px);
    box-shadow: 0 6px 20px -8px rgba(15, 23, 42, .22);
    padding: 1.9rem 2rem 1.6rem;
    max-width: 520px;
    width: 100%;
    text-align: center;
}

.ne-codigo[b-sfzbe8li7a] {
    font-family: var(--corp-mono, Consolas, monospace);
    font-size: 2.6rem;
    font-weight: 700;
    line-height: 1;
    color: var(--corp-border, #d1d9e0);
    letter-spacing: .06em;
    margin-bottom: .75rem;
}

.ne-tarjeta h1[b-sfzbe8li7a] {
    font-size: var(--corp-fs-xl, 1.1rem);
    font-weight: 700;
    color: var(--corp-navy, #1e3a5a);
    margin: 0 0 .5rem;
}

.ne-texto[b-sfzbe8li7a] {
    font-size: var(--corp-fs-body, .78rem);
    color: var(--corp-text-main, #334155);
    line-height: 1.55;
    margin: 0 auto;
    max-width: 42ch;
}

.ne-acciones[b-sfzbe8li7a] {
    margin-top: 1.4rem;
    display: flex;
    gap: .5rem;
    justify-content: center;
}

.ne-btn[b-sfzbe8li7a] {
    display: inline-flex;
    align-items: center;
    padding: .45rem .9rem;
    border-radius: var(--corp-radius, 4px);
    font-size: var(--corp-fs-sm, .72rem);
    font-weight: 600;
    text-decoration: none;
    border: 1px solid transparent;
}

.ne-btn-primario[b-sfzbe8li7a] {
    background: var(--corp-accent, #1565c0);
    color: #fff;
}

.ne-btn-primario:hover[b-sfzbe8li7a] { filter: brightness(1.08); }

.ne-btn:focus-visible[b-sfzbe8li7a] {
    outline: 2px solid var(--corp-accent, #1565c0);
    outline-offset: 2px;
}
/* /Components/Pages/PM/ComAsignacionOT.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   Módulo de OT (asignación, ejecuciones, parte diario, dashboard) · CSS aislado.
   Mismo lenguaje que el Escritorio de Compras: blanco y gris para todo, el color
   aparece SOLO donde algo pide acción (horas muertas, actividades en riesgo o
   atrasadas, ejecuciones sin revisión), cifras en monoespaciada, etiquetas en
   versalitas y bordes de 1px. Nada de franjas oscuras dentro del contenido.
   Lo genérico (pestañas, tarjetas, tablas, botones, statsbar) viene de corporate.css.
   El kebab de MudMenu va en el bloque de estilos del .razor: su envoltorio no lleva
   el atributo de alcance de este componente.
   ══════════════════════════════════════════════════════════════════════ */

.otc-root[b-7w2fl8jgio] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-width: 0;
}

/* ── Vistas del módulo + recarga ── */
.otc-head[b-7w2fl8jgio] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background: #fff;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    padding-right: 0.5rem;
    min-width: 0;
}
/* Cuatro vistas no caben a 400 px: desplazan en vez de salirse de la página. */
.otc-tabs[b-7w2fl8jgio] {
    flex: 1;
    min-width: 0;
    padding: 0 0.5rem;
    border-bottom: 0;
    overflow-x: auto;
    scrollbar-width: none;
}
.otc-tabs[b-7w2fl8jgio]::-webkit-scrollbar { height: 0; }
.otc-tabs .corp-tab[b-7w2fl8jgio] { white-space: nowrap; flex-shrink: 0; margin-bottom: 0; }
.otc-refresh[b-7w2fl8jgio] { flex-shrink: 0; }

/* Statsbar dentro del módulo: con marco propio, porque aquí no hay toolbar encima. */
.otc-stats[b-7w2fl8jgio] {
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    padding: 0.45rem 0.75rem;
}
.otc-stats .corp-stat-val[b-7w2fl8jgio] { font-family: var(--corp-mono); }

/* ── Tarjetas y encabezados de sección ── */
.otc-card[b-7w2fl8jgio] { flex-shrink: 0; min-width: 0; }
.otc-sec[b-7w2fl8jgio] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    flex-wrap: wrap;
    padding: 0.4rem 0.75rem;
    background: var(--corp-bg-head);
    border-bottom: 1px solid var(--corp-border);
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    color: var(--corp-text-head);
}
.otc-sec .hint[b-7w2fl8jgio] { font-weight: 400; font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }
.otc-sec .n[b-7w2fl8jgio] {
    margin-left: auto;
    background: #eef2f6;
    color: var(--corp-text-sub);
    font-family: var(--corp-mono);
    font-size: var(--corp-fs-xs);
    padding: 0 6px;
    border-radius: 9px;
}
.otc-pad[b-7w2fl8jgio] { padding: 0.6rem 0.75rem; }

.otc-headline[b-7w2fl8jgio] { display: flex; align-items: baseline; gap: 0.5rem; flex-wrap: wrap; padding: 0 0.1rem; }
.otc-headline b[b-7w2fl8jgio] { font-size: var(--corp-fs-md); color: var(--corp-text-head); }
.otc-headline span[b-7w2fl8jgio] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }

/* ── Tablas ── */
.otc-tblwrap[b-7w2fl8jgio] { overflow-x: auto; min-width: 0; }
.otc-tblwrap .corp-tbl tbody tr:last-child td[b-7w2fl8jgio] { border-bottom: 0; }

.otc-mono[b-7w2fl8jgio] { font-family: var(--corp-mono); }
.otc-task[b-7w2fl8jgio] { font-weight: 600; color: #1e293b; }
.otc-sub[b-7w2fl8jgio] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }
.otc-date[b-7w2fl8jgio] { font-family: var(--corp-mono); white-space: nowrap; color: var(--corp-text-sub); }
.otc-mut[b-7w2fl8jgio] { color: var(--corp-text-muted); }
.otc-warn[b-7w2fl8jgio] { color: var(--corp-warn); font-weight: 700; }

.otc-col-exp[b-7w2fl8jgio] { width: 2rem; }
.otc-col-bar[b-7w2fl8jgio] { min-width: 8rem; }

/* Punto de estado + texto gris (misma pieza que el Escritorio). */
.otc-dot[b-7w2fl8jgio] { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; display: inline-block; background: var(--corp-text-muted); }
.otc-dot.info[b-7w2fl8jgio] { background: var(--corp-accent); }
.otc-dot.warn[b-7w2fl8jgio] { background: var(--corp-warn-strong); }
.otc-dot.bad[b-7w2fl8jgio]  { background: var(--corp-bad-strong); }
.otc-dot.ok[b-7w2fl8jgio]   { background: var(--corp-ok-strong); }
.otc-dot.mut[b-7w2fl8jgio]  { background: #cbd5e1; }
.otc-st[b-7w2fl8jgio] { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }
.otc-st.mut[b-7w2fl8jgio] { color: var(--corp-text-muted); }

/* Barra de avance: neutra (azul) salvo al acercarse al 100 %. */
.otc-bar[b-7w2fl8jgio] { display: flex; align-items: center; gap: 0.4rem; }
.otc-bar-track[b-7w2fl8jgio] { flex: 1; min-width: 3rem; height: 6px; background: var(--corp-border-row); border-radius: 99px; overflow: hidden; display: block; }
.otc-bar-track i[b-7w2fl8jgio] { display: block; height: 100%; border-radius: 99px; background: var(--corp-accent); }
.otc-bar-track i.ok[b-7w2fl8jgio]   { background: var(--corp-ok-strong); }
.otc-bar-track i.zero[b-7w2fl8jgio] { background: #cbd5e1; }
.otc-bar b[b-7w2fl8jgio] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-text-sub); white-space: nowrap; min-width: 2.75rem; text-align: right; }

/* Fila de asignación desplegable y su detalle de ejecuciones. */
.otc-expand[b-7w2fl8jgio] {
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--corp-radius);
    color: var(--corp-text-sub);
    cursor: pointer;
    font-size: var(--corp-fs-xs);
    padding: 0.1rem 0.35rem;
}
.otc-expand:hover[b-7w2fl8jgio] { border-color: var(--corp-border); color: var(--corp-accent); }
.otc-open > td[b-7w2fl8jgio] { background: #eff6ff; }
.otc-detail > td[b-7w2fl8jgio] { background: var(--corp-bg-head); padding: 0.4rem 0.6rem 0.6rem; }

.otc-subtable[b-7w2fl8jgio] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--corp-fs-sm);
    background: #fff;
    border: 1px solid var(--corp-border);
}
.otc-subtable thead th[b-7w2fl8jgio] {
    background: var(--corp-bg-head);
    color: var(--corp-text-head);
    text-align: left;
    font-weight: 700;
    font-size: var(--corp-fs-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.35rem 0.5rem;
    border-bottom: 1px solid var(--corp-border);
}
.otc-subtable tbody td[b-7w2fl8jgio] {
    padding: 0.35rem 0.5rem;
    border-bottom: 1px solid var(--corp-border-row);
    vertical-align: middle;
    color: var(--corp-text-main);
}
.otc-subtable tbody tr:last-child td[b-7w2fl8jgio] { border-bottom: 0; }
.otc-subtable th.r[b-7w2fl8jgio], .otc-subtable td.r[b-7w2fl8jgio] { text-align: right; }
.otc-subtable td.r[b-7w2fl8jgio] { font-family: var(--corp-mono); white-space: nowrap; }
.otc-subtable th.c[b-7w2fl8jgio], .otc-subtable td.c[b-7w2fl8jgio] { text-align: center; }
.otc-obs[b-7w2fl8jgio] { color: var(--corp-text-sub); }

.otc-tag[b-7w2fl8jgio] {
    display: inline-block;
    margin: 1px 3px 1px 0;
    padding: 0 0.4rem;
    font-size: var(--corp-fs-xs);
    font-weight: 600;
    color: var(--corp-text-sub);
    background: var(--corp-bg-head);
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    white-space: nowrap;
}
.otc-acts[b-7w2fl8jgio] { display: inline-flex; align-items: center; justify-content: center; gap: 0.25rem; flex-wrap: nowrap; }

/* ── Dashboard: cajas de cifras ── */
.otc-kpis[b-7w2fl8jgio] { display: grid; grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); gap: 0.5rem; }
.otc-kpi[b-7w2fl8jgio] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.45rem 0.65rem; min-width: 0; }
.otc-kpi .k[b-7w2fl8jgio] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.otc-kpi .v[b-7w2fl8jgio] { font-family: var(--corp-mono); font-size: var(--corp-fs-lg); font-weight: 800; color: #0f172a; line-height: 1.2; margin-top: 0.15rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.otc-kpi .v.zero[b-7w2fl8jgio] { color: #cbd5e1; }
.otc-kpi .v.warn[b-7w2fl8jgio] { color: var(--corp-warn); }
.otc-kpi .v.bad[b-7w2fl8jgio]  { color: var(--corp-bad); }
.otc-kpi .s[b-7w2fl8jgio] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.otc-dash-grid[b-7w2fl8jgio] { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 0.5rem; }

/* Barras apiladas por día: efectivas en azul neutro, muertas en ámbar (lo que se perdió). */
.otc-barchart[b-7w2fl8jgio] { display: flex; align-items: flex-end; gap: 3px; height: 200px; padding: 0.2rem 0; overflow-x: auto; }
.otc-bar-col[b-7w2fl8jgio] { display: flex; flex-direction: column; align-items: center; min-width: 22px; flex: 1; }
.otc-bar-stack[b-7w2fl8jgio] {
    width: 100%;
    height: 170px;
    display: flex;
    flex-direction: column-reverse;
    background: var(--corp-bg-head);
    border: 1px solid var(--corp-border-row);
    border-radius: 2px;
    overflow: hidden;
}
.otc-bar-efec[b-7w2fl8jgio]   { width: 100%; background: var(--corp-accent); }
.otc-bar-muerta[b-7w2fl8jgio] { width: 100%; background: var(--corp-warn-strong); }
.otc-bar-lbl[b-7w2fl8jgio] {
    font-family: var(--corp-mono);
    font-size: var(--corp-fs-xs);
    color: var(--corp-text-muted);
    margin-top: 2px;
    transform: rotate(-30deg);
    transform-origin: center;
    white-space: nowrap;
}
.otc-bar-legend[b-7w2fl8jgio] { display: flex; gap: 0.85rem; justify-content: center; flex-wrap: wrap; margin-top: 1.25rem; font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }
.otc-bar-legend span[b-7w2fl8jgio] { display: inline-flex; align-items: center; gap: 0.3rem; }
.otc-bar-legend i[b-7w2fl8jgio] { display: inline-block; width: 9px; height: 9px; border-radius: 2px; }
.otc-lg-ef[b-7w2fl8jgio] { background: var(--corp-accent); }
.otc-lg-mu[b-7w2fl8jgio] { background: var(--corp-warn-strong); }

.otc-motivos[b-7w2fl8jgio] { display: flex; flex-direction: column; gap: 0.5rem; }
.otc-motivo-row[b-7w2fl8jgio] { min-width: 0; }
.otc-motivo-head[b-7w2fl8jgio] { display: flex; justify-content: space-between; gap: 0.5rem; font-size: var(--corp-fs-sm); color: var(--corp-text-sub); margin-bottom: 3px; }
.otc-motivo-nom[b-7w2fl8jgio] { font-weight: 600; color: #1e293b; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.otc-motivo-val[b-7w2fl8jgio] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); white-space: nowrap; }
.otc-motivo-bar[b-7w2fl8jgio] { height: 6px; background: var(--corp-border-row); border-radius: 99px; overflow: hidden; }
.otc-motivo-fill[b-7w2fl8jgio] { height: 100%; border-radius: 99px; background: var(--corp-warn-strong); }

/* ── Diálogos ── */
.otc-dlg-head[b-7w2fl8jgio] { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; font-size: var(--corp-fs-md); font-weight: 700; color: #0f172a; }
.otc-dlg-head-sub[b-7w2fl8jgio] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 400; color: var(--corp-text-sub); }

.otc-dlg-body[b-7w2fl8jgio] { display: flex; flex-direction: column; gap: 0.65rem; font-size: var(--corp-fs-body); }
.otc-dlg-row[b-7w2fl8jgio] { display: flex; flex-direction: column; gap: 0.2rem; min-width: 0; }
.otc-dlg-grid2[b-7w2fl8jgio] { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.6rem; }
.otc-dlg-lbl[b-7w2fl8jgio] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); }
.otc-dlg-val[b-7w2fl8jgio] { font-size: var(--corp-fs-body); font-weight: 600; color: #1e293b; }
.otc-dlg-err[b-7w2fl8jgio] { flex: 1; text-align: left; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-bad); }

.otc-dlg-section[b-7w2fl8jgio] { border-top: 1px solid var(--corp-border); padding-top: 0.55rem; display: flex; flex-direction: column; gap: 0.45rem; }
.otc-dlg-section-head[b-7w2fl8jgio] { display: flex; align-items: center; gap: 0.45rem; font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head); }
.otc-dlg-section-head > button[b-7w2fl8jgio] { margin-left: auto; }
.otc-dlg-section-head .n[b-7w2fl8jgio] { background: #eef2f6; color: var(--corp-text-sub); font-family: var(--corp-mono); font-size: var(--corp-fs-xs); padding: 0 6px; border-radius: 9px; }
.otc-dlg-hint[b-7w2fl8jgio] {
    font-size: var(--corp-fs-xs);
    color: var(--corp-text-sub);
    background: #fff;
    border: 1px solid var(--corp-border);
    border-left: 3px solid var(--corp-border);
    padding: 0.35rem 0.55rem;
    border-radius: var(--corp-radius);
    line-height: 1.4;
}

.otc-dlg-upload-area[b-7w2fl8jgio] { display: flex; flex-direction: column; align-items: flex-start; gap: 0.4rem; }
.otc-upload[b-7w2fl8jgio] { cursor: pointer; }
.otc-adj-list[b-7w2fl8jgio] { display: flex; flex-wrap: wrap; gap: 0.3rem; }
.otc-adj-chip[b-7w2fl8jgio] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.35rem;
    background: var(--corp-bg-head);
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    padding: 1px 8px;
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-main);
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.otc-adj-size[b-7w2fl8jgio] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }

/* Tabla de captura del personal ejecutor: sin recorte, los controles necesitan su ancho. */
.otc-edit-wrap[b-7w2fl8jgio] { border: 1px solid var(--corp-border); border-radius: var(--corp-radius); }
.otc-edit[b-7w2fl8jgio] { border: 0; min-width: 30rem; }
.otc-edit tbody td[b-7w2fl8jgio] { vertical-align: middle; }

.otc-info-full[b-7w2fl8jgio] { grid-column: 1 / -1; }

.otc-grp[b-7w2fl8jgio] { border: 1px solid var(--corp-border); border-radius: var(--corp-radius); background: #fff; overflow: hidden; }
.otc-grp .otc-sec[b-7w2fl8jgio] { border-radius: 0; }

/* ── Galería de evidencia ── */
.otc-media-grid[b-7w2fl8jgio] { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 0.6rem; }
.otc-media-card[b-7w2fl8jgio] {
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    overflow: hidden;
    background: #fff;
    display: flex;
    flex-direction: column;
    cursor: pointer;
    transition: border-color 0.12s;
}
.otc-media-card:hover[b-7w2fl8jgio] { border-color: var(--corp-accent); }
.otc-media-thumb[b-7w2fl8jgio] { width: 100%; aspect-ratio: 4/3; overflow: hidden; background: var(--corp-bg-head); display: flex; align-items: center; justify-content: center; }
.otc-media-thumb img[b-7w2fl8jgio] { width: 100%; height: 100%; object-fit: cover; display: block; }
.otc-media-video[b-7w2fl8jgio] { position: relative; }
.otc-media-vid[b-7w2fl8jgio] { width: 100%; height: 100%; object-fit: cover; }
.otc-media-play[b-7w2fl8jgio] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.6rem;
    color: #fff;
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.6);
    background: rgba(0, 0, 0, 0.2);
    pointer-events: none;
}
.otc-media-icon-bg[b-7w2fl8jgio] { background: var(--corp-bg-head); }
.otc-media-ico[b-7w2fl8jgio] { font-size: 1.8rem; }
.otc-media-name[b-7w2fl8jgio] { font-size: var(--corp-fs-sm); font-weight: 600; color: #1e293b; padding: 0.3rem 0.45rem 0.1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.otc-media-actions[b-7w2fl8jgio] { display: flex; gap: 0.25rem; padding: 0.25rem 0.45rem 0.45rem; }

/* ── Teléfono ── */
@media (max-width: 640px) {
    .otc-dash-grid[b-7w2fl8jgio] { grid-template-columns: minmax(0, 1fr); }
    .otc-dlg-grid2[b-7w2fl8jgio] { grid-template-columns: minmax(0, 1fr); }
    .otc-kpis[b-7w2fl8jgio] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .otc-sec .hint[b-7w2fl8jgio] { flex-basis: 100%; order: 3; }
    .otc-stats[b-7w2fl8jgio] { padding: 0.4rem 0.6rem; }
}
/* /Components/Pages/PM/ComConfiguracionProyecto.razor.rz.scp.css */
/* Configuración del proyecto (PM). Encabezado claro y campo con etiqueta en versalitas,
   como el resto de los formularios del sistema de diseño. */

.cfg-title[b-t01njjb67v] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.cfg-section[b-t01njjb67v] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.cfg-label[b-t01njjb67v] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--corp-text-head);
}

.cfg-hint[b-t01njjb67v] {
    font-size: var(--corp-fs-xs);
    color: var(--corp-text-muted);
    line-height: 1.4;
}

.cfg-textarea[b-t01njjb67v] {
    resize: vertical;
    min-height: 70px;
    font-family: inherit;
    font-size: var(--corp-fs-body);
    width: 100%;
    box-sizing: border-box;
}

/* Error del guardado: blanco con filete rojo, uno por problema. */
.cfg-error[b-t01njjb67v] {
    padding: 0.4rem 0.75rem;
    background: #fff;
    border: 1px solid #fecaca;
    border-left: 3px solid var(--corp-bad-strong);
    border-radius: var(--corp-radius);
    font-size: var(--corp-fs-sm);
    color: var(--corp-bad);
    line-height: 1.45;
}

/* En el teléfono los botones del pie se tocan con el dedo. */
@media (max-width: 640px) {
    .cfg-foot .corp-btn[b-t01njjb67v] {
        min-height: 36px;
        flex: 1 1 0;
        justify-content: center;
    }
}
/* /Components/Pages/PM/ComDetalleActividades.razor.rz.scp.css */
/* Container */
.budget-container[b-zh93hibxmi] {
    padding: 0.75rem;
}

/* Header compacto - Minimalist */
.budget-header[b-zh93hibxmi] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: transparent;
    border-bottom: 1px solid #e2e8f0;
    padding: 0.5rem 0.25rem;
    margin-bottom: 0.75rem;
    color: #334155;
}

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

.header-left > i[b-zh93hibxmi] {
    font-size: var(--corp-fs-lg);
    color: #64748b;
}

.project-name[b-zh93hibxmi] {
    font-weight: 600;
    font-size: var(--corp-fs-lg);
    color: #0f172a;
}

.badge-stats[b-zh93hibxmi] {
    background: #f1f5f9;
    color: #64748b;
    padding: 0.15rem 0.5rem;
    border-radius: 9999px;
    font-size: var(--corp-fs-sm);
    font-weight: 500;
    border: 1px solid #e2e8f0;
}

.btn-new-ficha[b-zh93hibxmi] {
    background: #ffffff;
    border: 1px solid #cbd5e1;
    color: #475569;
    padding: 0.3rem 0.75rem;
    border-radius: 6px;
    font-size: var(--corp-fs-body);
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease;
    display: inline-flex;
    align-items: center;
}

.btn-new-ficha:hover[b-zh93hibxmi] {
    background: #f8fafc;
    border-color: #94a3b8;
    color: #1e293b;
}

.btn-new-ficha i[b-zh93hibxmi] {
    margin-right: 0.35rem;
}

/* Card */
.budget-card[b-zh93hibxmi] {
    background: white;
    border-radius: 8px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); /* Subtle shadow */
    overflow: hidden;
    border: 1px solid #e2e8f0;
}

/* Tabla compacta */
.budget-table[b-zh93hibxmi] {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    font-size: var(--corp-fs-md);
}

.budget-table thead[b-zh93hibxmi] {
    background: #f8fafc;
    border-bottom: 1px solid #e2e8f0;
}

.budget-table thead th[b-zh93hibxmi] {
    padding: 0.6rem 0.75rem;
    font-weight: 600;
    font-size: var(--corp-fs-sm);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #64748b;
    text-align: left;
}

.budget-table thead th:nth-child(n+4)[b-zh93hibxmi] {
    text-align: right;
}

.budget-table thead th:last-child[b-zh93hibxmi] {
    text-align: center;
}

/* Filas de grupo - Neutral */
.group-row[b-zh93hibxmi] {
    background: #f8fafc; /* Very light cool gray */
}

.group-row td[b-zh93hibxmi] {
    padding: 0.5rem 0.75rem;
    font-weight: 600;
    font-size: var(--corp-fs-body);
    color: #334155;
    border-bottom: 1px solid #e2e8f0;
    border-top: 1px solid #e2e8f0;
}

.group-row i[b-zh93hibxmi] {
    color: #94a3b8; /* Muted icon */
    margin-right: 0.35rem;
    font-size: var(--corp-fs-body);
}

.group-num[b-zh93hibxmi] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    background: #e2e8f0;
    color: #475569;
    border-radius: 4px;
    font-size: var(--corp-fs-sm);
    font-weight: 700;
}

.amt-group[b-zh93hibxmi] {
    font-family: 'Consolas', monospace;
    font-weight: 700;
    color: #334155;
}

/* Filas de items */
.item-row td[b-zh93hibxmi] {
    padding: 0.4rem 0.75rem;
    border-bottom: 1px solid #f1f5f9;
    color: #4b5563;
}

.item-row:last-child td[b-zh93hibxmi] {
    border-bottom: none;
}

.item-row:hover[b-zh93hibxmi] {
    background: #fcfcfc;
}

.item-row .num[b-zh93hibxmi] {
    color: #9ca3af;
    font-family: 'Consolas', monospace;
    font-size: var(--corp-fs-sm);
}

.item-row .desc[b-zh93hibxmi] {
    font-weight: 400;
    color: #334155;
}

.item-row .unit[b-zh93hibxmi] {
    text-align: center;
    color: #94a3b8;
    font-size: var(--corp-fs-sm);
}

.item-row .amt[b-zh93hibxmi] {
    text-align: right;
    font-family: 'Consolas', monospace;
    color: #4b5563;
}

.item-row .actions[b-zh93hibxmi] {
    text-align: center;
}

/* Input Styles */
.budget-input[b-zh93hibxmi] {
    border: 1px solid transparent !important;
    background-color: transparent !important;
    transition: all 0.2s ease;
    width: 100%;
    padding: 0.15rem 0.5rem;
    font-size: var(--corp-fs-body);
    font-family: 'Consolas', monospace;
}

.budget-input:focus[b-zh93hibxmi] {
    border-color: #cbd5e1 !important;
    background-color: #ffffff !important;
    box-shadow: 0 0 0 2px rgba(203, 213, 225, 0.3) !important;
    outline: none;
}

/* Custom action buttons inside table */
.item-row .btn-outline-primary[b-zh93hibxmi] {
    color: #64748b;
    border-color: transparent;
}
.item-row .btn-outline-primary:hover[b-zh93hibxmi] {
    color: #2563eb;
    background: #eff6ff;
    border-color: #bfdbfe;
}

.item-row .btn-outline-danger[b-zh93hibxmi] {
    color: #64748b;
    border-color: transparent;
}
.item-row .btn-outline-danger:hover[b-zh93hibxmi] {
    color: var(--corp-bad-strong);
    background: #fef2f2;
    border-color: #fecaca;
}


/* Footer total */
.total-row[b-zh93hibxmi] {
    background: #f8fafc;
    border-top: 2px solid #e2e8f0;
}

.total-row td[b-zh93hibxmi] {
    padding: 0.75rem;
    color: #0f172a;
    font-weight: 700;
    font-size: var(--corp-fs-lg);
    border: none;
}

.total-row td:nth-child(2)[b-zh93hibxmi] {
    font-family: 'Consolas', monospace;
}

/* Loading */
.loading-container[b-zh93hibxmi] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    padding: 2rem;
    color: #6b7280;
    font-size: var(--corp-fs-md);
}

.loading-spinner[b-zh93hibxmi] {
    width: 20px;
    height: 20px;
    border: 2px solid #e5e7eb;
    border-top-color: #2563eb;
    border-radius: 50%;
    animation: spin-b-zh93hibxmi 0.6s linear infinite;
}

@keyframes spin-b-zh93hibxmi {
    to { transform: rotate(360deg); }
}

/* Empty state */
.empty-state[b-zh93hibxmi] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 2rem;
    color: #9ca3af;
    font-size: var(--corp-fs-md);
}

.empty-state i[b-zh93hibxmi] {
    font-size: 1.25rem;
}

/* Responsive */
@media (max-width: 768px) {
    .budget-container[b-zh93hibxmi] {
        padding: 0.5rem;
    }
    
    .budget-header[b-zh93hibxmi] {
        padding: 0.4rem 0.75rem;
    }
    
    .project-name[b-zh93hibxmi] {
        font-size: var(--corp-fs-md);
    }
    
    .budget-table[b-zh93hibxmi] {
        font-size: var(--corp-fs-sm);
    }
}
/* /Components/Pages/PM/ComDetalleAvanceActividad.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   Análisis de avance de una actividad · CSS aislado del componente.
   Mismo lenguaje que el Escritorio de Compras: blanco y gris, el color solo
   donde la actividad va por detrás (desviación negativa, término proyectado
   tarde, estado en riesgo o atrasado), cifras en monoespaciada, etiquetas en
   versalitas pequeñas y bordes de 1px. Sin franja oscura en el encabezado.
   La cabecera y el contenido del SfDialog se escriben en este .razor, así que
   llevan el atributo de alcance y no necesitan ::deep.
   ══════════════════════════════════════════════════════════════════════ */

/* ── Cabecera del diálogo: título + estado con punto ── */
.dav-header[b-pyw2smas0s] { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; padding: 0.15rem 0; }
.dav-header-title[b-pyw2smas0s] { font-size: var(--corp-fs-md); font-weight: 700; color: var(--corp-navy); }

.dav-dot[b-pyw2smas0s] { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; display: inline-block; background: var(--corp-text-muted); }
.dav-dot.info[b-pyw2smas0s]    { background: var(--corp-accent); }
.dav-dot.ok[b-pyw2smas0s]      { background: var(--corp-ok-strong); }
.dav-dot.warn[b-pyw2smas0s]    { background: var(--corp-warn-strong); }
.dav-dot.bad[b-pyw2smas0s]     { background: var(--corp-bad-strong); }
.dav-dot.neutral[b-pyw2smas0s],
.dav-dot.mut[b-pyw2smas0s]     { background: #cbd5e1; }
.dav-st[b-pyw2smas0s] { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }
.dav-st.warn[b-pyw2smas0s] { color: var(--corp-warn); }
.dav-st.bad[b-pyw2smas0s]  { color: var(--corp-bad); }
.dav-st.neutral[b-pyw2smas0s],
.dav-st.mut[b-pyw2smas0s]  { color: var(--corp-text-muted); }

/* ── Contenido ── */
.dav-content[b-pyw2smas0s] { display: flex; flex-direction: column; gap: 0.65rem; padding: 0.1rem; }

/* Identidad de la actividad sobre el gris, sin franja navy. */
.dav-actinfo[b-pyw2smas0s] {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 0.75rem;
    flex-wrap: wrap;
    padding: 0.55rem 0.75rem;
    background: var(--corp-bg-head);
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
}
.dav-actinfo-main[b-pyw2smas0s] { flex: 1 1 18rem; min-width: 0; }
.dav-act-desc[b-pyw2smas0s] { font-size: var(--corp-fs-xl); font-weight: 700; color: #0f172a; line-height: 1.2; overflow-wrap: anywhere; }
.dav-act-sub[b-pyw2smas0s] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.15rem; }
.dav-actinfo-cant[b-pyw2smas0s] { text-align: right; }
.dav-cant-big[b-pyw2smas0s] { font-family: var(--corp-mono); font-size: var(--corp-fs-xl); font-weight: 800; color: #0f172a; white-space: nowrap; }
.dav-cant-unit[b-pyw2smas0s] { font-weight: 400; color: var(--corp-text-sub); font-size: var(--corp-fs-sm); }
.dav-cant-rest[b-pyw2smas0s] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; }

/* ── Cajas de cifras ── */
.dav-kpis[b-pyw2smas0s] { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0.5rem; }
.dav-kpi[b-pyw2smas0s] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.45rem 0.65rem; min-width: 0; }
.dav-kpi-lbl[b-pyw2smas0s] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dav-kpi-val[b-pyw2smas0s] { font-family: var(--corp-mono); font-size: var(--corp-fs-lg); font-weight: 800; color: #0f172a; line-height: 1.2; margin-top: 0.15rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dav-kpi-val.bad[b-pyw2smas0s] { color: var(--corp-bad); }
.dav-kpi-val.dav-zero[b-pyw2smas0s] { color: #cbd5e1; }
.dav-kpi-sub[b-pyw2smas0s] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dav-kpi-sub-bad[b-pyw2smas0s] { color: var(--corp-bad); font-weight: 600; }

/* ── Tarjetas: encabezado gris, cuerpo blanco ── */
.dav-card[b-pyw2smas0s] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); overflow: hidden; min-width: 0; }
.dav-card-head[b-pyw2smas0s] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.4rem 0.75rem;
    background: var(--corp-bg-head);
    border-bottom: 1px solid var(--corp-border);
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    color: var(--corp-text-head);
}
.dav-card-head .n[b-pyw2smas0s] { margin-left: auto; background: #eef2f6; color: var(--corp-text-sub); font-size: var(--corp-fs-xs); font-family: var(--corp-mono); padding: 0 6px; border-radius: 9px; }
.dav-card-body[b-pyw2smas0s] { padding: 0.55rem 0.75rem; }

.dav-grid-2[b-pyw2smas0s] { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 0.65rem; }

/* ── Real vs esperado: el real en el azul neutro, el esperado en gris ── */
.dav-doublebar[b-pyw2smas0s] { display: flex; flex-direction: column; gap: 0.4rem; }
.dav-doublebar-row[b-pyw2smas0s] { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr) 3.75rem; gap: 0.6rem; align-items: center; }
.dav-doublebar-lbl[b-pyw2smas0s] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); }
.dav-doublebar-bar[b-pyw2smas0s] { height: 8px; background: var(--corp-border-row); border-radius: 99px; overflow: hidden; }
.dav-doublebar-fill[b-pyw2smas0s] { height: 100%; border-radius: 99px; transition: width 0.3s ease; }
.dav-doublebar-fill.real[b-pyw2smas0s] { background: var(--corp-accent); }
.dav-doublebar-fill.esp[b-pyw2smas0s]  { background: #cbd5e1; }
.dav-doublebar-val[b-pyw2smas0s] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; text-align: right; color: #1e293b; white-space: nowrap; }

/* ── Curva: el SVG llega como marcado crudo, sin atributo de alcance ── */
.dav-svg-wrap[b-pyw2smas0s] { width: 100%; overflow-x: auto; }
.dav-svg-wrap[b-pyw2smas0s]  .dav-svg { width: 100%; min-width: 360px; height: auto; display: block; }

.dav-legend[b-pyw2smas0s] { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; margin-top: 0.4rem; font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }
.dav-legend span[b-pyw2smas0s] { display: inline-flex; align-items: center; gap: 0.3rem; }
.dav-legend i[b-pyw2smas0s] { display: inline-block; width: 14px; height: 3px; border-radius: 2px; }
.dav-lg-real[b-pyw2smas0s] { background: var(--corp-accent); }
.dav-lg-esp[b-pyw2smas0s]  { background: var(--corp-text-muted); }

/* ── Tablas: desplazan dentro de la tarjeta, nunca la página ── */
.dav-scroll[b-pyw2smas0s] { overflow-x: auto; scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent; }
.dav-tbl tbody tr:last-child td[b-pyw2smas0s] { border-bottom: 0; }
.dav-tbl-md[b-pyw2smas0s] { min-width: 32rem; }
.dav-obs[b-pyw2smas0s] { min-width: 12rem; }

/* ── Motivos de tiempo muerto ── */
.dav-motivos[b-pyw2smas0s] { display: flex; flex-direction: column; gap: 0.5rem; }
.dav-motivo[b-pyw2smas0s] { min-width: 0; }
.dav-motivo-head[b-pyw2smas0s] { display: flex; justify-content: space-between; gap: 0.5rem; font-size: var(--corp-fs-sm); margin-bottom: 3px; }
.dav-motivo-nom[b-pyw2smas0s] { font-weight: 600; color: #1e293b; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dav-motivo-val[b-pyw2smas0s] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-text-sub); white-space: nowrap; }
.dav-motivo-bar[b-pyw2smas0s] { background: var(--corp-border-row); border-radius: 99px; height: 6px; overflow: hidden; }
.dav-motivo-fill[b-pyw2smas0s] { background: var(--corp-warn-strong); height: 100%; border-radius: 99px; }

@media (max-width: 1100px) {
    .dav-kpis[b-pyw2smas0s] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .dav-grid-2[b-pyw2smas0s] { grid-template-columns: minmax(0, 1fr); }
}

/* ── Teléfono: cifras de a dos y la cantidad ejecutada baja bajo el título ── */
@media (max-width: 640px) {
    .dav-kpis[b-pyw2smas0s] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .dav-actinfo[b-pyw2smas0s] { align-items: stretch; }
    .dav-actinfo-cant[b-pyw2smas0s] { text-align: left; }
    .dav-doublebar-row[b-pyw2smas0s] { grid-template-columns: 4rem minmax(0, 1fr) 3.25rem; gap: 0.4rem; }
}
/* /Components/Pages/PM/ComEjecucionCronograma.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   Cronograma y avance · CSS aislado del componente.
   Mismo lenguaje que el Escritorio de Compras: blanco y gris para todo, el
   color aparece SOLO donde algo pide acción (atraso, fin estimado fuera de
   plan), cifras en monoespaciada, etiquetas en versalitas y bordes de 1px.
   Lo genérico (pestañas, estados vacíos, botones) viene de corporate.css.
   ══════════════════════════════════════════════════════════════════════ */

/* Contenedor anclado al alto de la pestaña del proyecto: el Gantt y el parte
   diario desplazan por dentro y la barra de pestañas queda fija arriba. */
.crono-root[b-sy9pi2fpq8] {
    height: calc(100vh - 280px);
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    background: var(--corp-bg-body);
}

.crono-tabs[b-sy9pi2fpq8] {
    position: sticky;
    top: 0;
    z-index: 3;
}
.crono-tabs .corp-tab[b-sy9pi2fpq8] { flex-shrink: 0; }

.crono-pane[b-sy9pi2fpq8] {
    flex-shrink: 0;
    padding: 0.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.crono-card[b-sy9pi2fpq8] {
    background: #fff;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    min-width: 0;
    flex-shrink: 0;
}
.crono-pad[b-sy9pi2fpq8] { padding: 0.6rem 0.75rem; }
/* El Gantt trae su propio desplazamiento; el de la tarjeta es solo la red por si
   el splitter queda más ancho que el panel. */
.crono-gantt[b-sy9pi2fpq8] { overflow-x: auto; }

/* ── Estado vacío: lo que traerá el cronograma, en etiquetas tenues ── */
.crono-empty-txt[b-sy9pi2fpq8] { max-width: 34rem; text-align: center; line-height: 1.45; }
.crono-feats[b-sy9pi2fpq8] { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.35rem; }
.crono-feats span[b-sy9pi2fpq8] {
    font-size: var(--corp-fs-xs);
    font-weight: 600;
    color: var(--corp-text-sub);
    background: var(--corp-bg-head);
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    padding: 0.1rem 0.5rem;
}

/* ── Cajas de cifras sobre el Gantt ── */
.crono-kpis[b-sy9pi2fpq8] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
    gap: 0.5rem;
}
.crono-kpi[b-sy9pi2fpq8] {
    background: #fff;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    padding: 0.45rem 0.65rem;
    min-width: 0;
}
.crono-kpi .k[b-sy9pi2fpq8] {
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--corp-text-head);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.crono-kpi .v[b-sy9pi2fpq8] {
    font-family: var(--corp-mono);
    font-size: var(--corp-fs-lg);
    font-weight: 800;
    color: #0f172a;
    line-height: 1.2;
    margin-top: 0.15rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.crono-kpi .v.txt[b-sy9pi2fpq8]  { font-family: var(--corp-font); font-size: var(--corp-fs-md); font-weight: 700; line-height: 1.45; }
.crono-kpi .v.zero[b-sy9pi2fpq8] { color: #cbd5e1; }
.crono-kpi .v.ok[b-sy9pi2fpq8]   { color: var(--corp-ok); }
.crono-kpi .v.bad[b-sy9pi2fpq8]  { color: var(--corp-bad); }
.crono-kpi .v .u[b-sy9pi2fpq8]   { font-family: var(--corp-font); font-size: var(--corp-fs-sm); font-weight: 500; color: var(--corp-text-sub); }
.crono-kpi .s[b-sy9pi2fpq8] {
    font-size: var(--corp-fs-xs);
    color: var(--corp-text-muted);
    margin-top: 0.1rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.crono-kpi .s.ok[b-sy9pi2fpq8]  { color: var(--corp-ok); font-weight: 600; }
.crono-kpi .s.bad[b-sy9pi2fpq8] { color: var(--corp-bad); font-weight: 600; }

/* Completadas / en progreso / sin iniciar: punto de color + cifra en mono. */
.crono-mix[b-sy9pi2fpq8] { display: flex; align-items: center; gap: 0.6rem; }
.crono-mix span[b-sy9pi2fpq8] { display: inline-flex; align-items: center; gap: 0.25rem; font-family: var(--corp-mono); font-weight: 700; color: var(--corp-text-sub); }

.crono-dot[b-sy9pi2fpq8] { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; display: inline-block; background: var(--corp-text-muted); }
.crono-dot.info[b-sy9pi2fpq8] { background: var(--corp-accent); }
.crono-dot.ok[b-sy9pi2fpq8]   { background: var(--corp-ok-strong); }
.crono-dot.mut[b-sy9pi2fpq8]  { background: #cbd5e1; }

/* Barra de avance: neutra (azul) salvo al completar. */
.crono-prog[b-sy9pi2fpq8] { height: 5px; margin-top: 0.35rem; background: var(--corp-border-row); border-radius: 99px; overflow: hidden; }
.crono-prog span[b-sy9pi2fpq8] { display: block; height: 100%; border-radius: 99px; background: var(--corp-accent); transition: width 0.3s ease; }
.crono-prog span.ok[b-sy9pi2fpq8] { background: var(--corp-ok-strong); }

/* ── Icono de ficha dentro del Gantt ── */
.crono-ficha-btn[b-sy9pi2fpq8] {
    background: none;
    border: none;
    cursor: pointer;
    padding: 0 2px;
    font-size: var(--corp-fs-body);
    line-height: 1;
    opacity: 0.7;
    transition: opacity 0.15s;
}
.crono-ficha-btn:hover[b-sy9pi2fpq8] { opacity: 1; }

/* ── Teléfono: el PM captura el parte en obra. Sin contenedor anclado (desplaza
   la página, no una caja dentro de otra) y las cifras van de a dos. ── */
@media (max-width: 640px) {
    .crono-root[b-sy9pi2fpq8] { height: auto; overflow-y: visible; }
    .crono-pane[b-sy9pi2fpq8] { padding: 0.4rem; }
    .crono-kpis[b-sy9pi2fpq8] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* /Components/Pages/PM/ComEstimacionCantidades.razor.rz.scp.css */
/* Hoja de cantidades de obra · CSS aislado del componente (prefijo ec-).
   Mismo lenguaje que el Escritorio de Compras: blanco y gris, cifras en monoespaciada,
   etiquetas en versalitas; el color aparece solo donde algo pide acción (excede saldo). */

.ec-modal[b-9ey6nxqpp9] { max-width: 1240px; width: 97%; }
.ec-body[b-9ey6nxqpp9] { display: flex; flex-direction: column; gap: 0.5rem; }

.ec-head[b-9ey6nxqpp9] { display: inline-flex; align-items: center; gap: 0.55rem; flex-wrap: wrap; min-width: 0; }
.ec-head-num[b-9ey6nxqpp9] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-navy); background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0 0.4rem; line-height: 1.6; }

.ec-toolbar[b-9ey6nxqpp9] { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem 0.75rem; flex-wrap: wrap; }
.ec-info[b-9ey6nxqpp9] { display: flex; align-items: center; gap: 0.35rem 1.1rem; flex-wrap: wrap; }
.ec-fact[b-9ey6nxqpp9] { display: inline-flex; align-items: baseline; gap: 0.4rem; white-space: nowrap; }
.ec-fact .k[b-9ey6nxqpp9] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); }
.ec-fact b[b-9ey6nxqpp9] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); color: #0f172a; }
.ec-actions[b-9ey6nxqpp9] { display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; }

.ec-scroll[b-9ey6nxqpp9] { max-height: 58vh; }
.ec-tbl[b-9ey6nxqpp9] { min-width: 1080px; }
.ec-tbl tbody td[b-9ey6nxqpp9] { padding: 0.3rem 0.4rem; vertical-align: middle; }
/* Fila que entra en la estimación: filete azul a la izquierda, sin teñir la fila. */
.ec-tbl tbody tr.ec-on td:first-child[b-9ey6nxqpp9] { box-shadow: inset 3px 0 0 var(--corp-accent); }
.ec-tbl tbody tr.ec-excede td[b-9ey6nxqpp9] { background: #fff5f5; }
.ec-tbl tbody tr.ec-excede td:first-child[b-9ey6nxqpp9] { box-shadow: inset 3px 0 0 var(--corp-bad-strong); }
.ec-tbl td.ec-imp[b-9ey6nxqpp9] { color: var(--corp-text-muted); }
.ec-tbl td.ec-imp.on[b-9ey6nxqpp9] { font-weight: 700; color: #0f172a; }
.ec-tbl .corp-c-sub .corp-pill[b-9ey6nxqpp9] { margin-right: 0.35rem; }

/* Total claro: `fin` y no `tot` (corporate.css pinta tr.tot como barra navy). */
.ec-tbl tfoot tr.fin td[b-9ey6nxqpp9] { background: var(--corp-bg-head); color: var(--corp-navy); font-weight: 700; border-top: 1px solid var(--corp-border); }
.ec-tbl tfoot tr.fin td.lbl[b-9ey6nxqpp9] { text-align: right; font-size: var(--corp-fs-sm); color: var(--corp-text-head); }
.ec-tbl tfoot tr.fin td.r[b-9ey6nxqpp9] { text-align: right; }

.ec-num[b-9ey6nxqpp9] { width: 96px; min-height: 1.9rem; text-align: right; padding: 0.22rem 0.35rem; font-size: var(--corp-fs-sm); font-family: var(--corp-mono); }

/* Sugerido: botón claro, un toque lo copia a «Este período». */
.ec-sug[b-9ey6nxqpp9] { background: #fff; border: 1px solid var(--corp-border); color: var(--corp-accent); border-radius: var(--corp-radius); cursor: pointer; font-size: var(--corp-fs-sm); font-family: var(--corp-mono); font-weight: 600; padding: 0.15rem 0.4rem; min-height: 1.6rem; }
.ec-sug:hover[b-9ey6nxqpp9] { border-color: var(--corp-accent); background: var(--corp-bg-head); }

.ec-alert[b-9ey6nxqpp9] { padding: 0.45rem 0.75rem; background: #fff; border: 1px solid #fecaca; border-left: 3px solid var(--corp-bad-strong); border-radius: var(--corp-radius); font-size: var(--corp-fs-sm); color: var(--corp-bad); }

.ec-foot[b-9ey6nxqpp9] { flex-wrap: wrap; align-items: center; }
.ec-foot-hint[b-9ey6nxqpp9] { flex: 1 1 18rem; font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }

/* Teléfono: la tabla desplaza dentro de su marco y los controles de captura quedan
   del tamaño del dedo. */
@media (max-width: 640px) {
    .ec-modal[b-9ey6nxqpp9] { width: 100%; }
    .ec-fact[b-9ey6nxqpp9] { white-space: normal; }
    .ec-actions .corp-btn[b-9ey6nxqpp9], .ec-actions .corp-chip[b-9ey6nxqpp9], .ec-actions .corp-search-lite[b-9ey6nxqpp9] { min-height: 2.25rem; }
    .ec-actions .corp-search-lite[b-9ey6nxqpp9] { flex: 1 1 100%; }
    .ec-num[b-9ey6nxqpp9] { min-height: 2.25rem; }
    .ec-sug[b-9ey6nxqpp9] { min-height: 2.25rem; }
    .ec-foot .corp-btn[b-9ey6nxqpp9] { min-height: 2.25rem; }
}
/* /Components/Pages/PM/ComFichaDetalleCronograma.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   Detalle de ficha de costo (APU) desde el cronograma · CSS aislado.
   Mismo lenguaje que el Escritorio de Compras: blanco y gris, el color solo
   donde algo pide acción (material que no alcanza), cifras en monoespaciada,
   etiquetas en versalitas pequeñas y bordes de 1px. Sin franjas oscuras: la
   cabecera del diálogo y la del contrato son claras.
   Lo genérico (pestañas, tabla, botones, vacíos) viene de corporate.css.
   ══════════════════════════════════════════════════════════════════════ */

/* ── Velo y diálogo ── */
.fdc-back[b-bde8u1h5ft] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1050;
    padding: 1rem;
}

.fdc-modal[b-bde8u1h5ft] {
    background: var(--corp-bg-card);
    border-radius: var(--corp-radius);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
    width: 100%;
    max-width: 900px;
    height: 600px;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.fdc-top[b-bde8u1h5ft] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.55rem 0.85rem;
    border-bottom: 1px solid var(--corp-border);
    flex-shrink: 0;
}

.fdc-top-title[b-bde8u1h5ft] { font-size: var(--corp-fs-md); font-weight: 700; color: var(--corp-navy); }

.fdc-x[b-bde8u1h5ft] {
    background: transparent;
    border: 1px solid transparent;
    color: var(--corp-text-sub);
    width: 1.75rem;
    height: 1.75rem;
    border-radius: var(--corp-radius);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: var(--corp-fs-sm);
}
.fdc-x:hover[b-bde8u1h5ft] { background: var(--corp-bg-head); border-color: var(--corp-border); color: var(--corp-navy); }

/* ── Identidad de la ficha + cajas de cifras ── */
.fdc-head[b-bde8u1h5ft] {
    display: flex;
    align-items: flex-end;
    gap: 0.75rem;
    flex-wrap: wrap;
    padding: 0.6rem 0.85rem;
    background: var(--corp-bg-body);
    border-bottom: 1px solid var(--corp-border);
    flex-shrink: 0;
}

.fdc-head-id[b-bde8u1h5ft] { flex: 1 1 16rem; min-width: 0; display: flex; flex-direction: column; gap: 0.1rem; }
.fdc-head-lbl[b-bde8u1h5ft] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-muted); }
.fdc-head-title[b-bde8u1h5ft] { font-size: var(--corp-fs-lg); font-weight: 700; color: #0f172a; line-height: 1.25; overflow-wrap: anywhere; }

.fdc-kpis[b-bde8u1h5ft] { display: grid; grid-template-columns: minmax(0, 5rem) minmax(0, 7rem) minmax(0, 10rem); gap: 0.5rem; }
.fdc-kpi[b-bde8u1h5ft] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.35rem 0.6rem; min-width: 0; display: flex; flex-direction: column; gap: 0.1rem; }
.fdc-kpi .k[b-bde8u1h5ft] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fdc-kpi .v[b-bde8u1h5ft] { font-family: var(--corp-mono); font-size: var(--corp-fs-md); font-weight: 700; color: #0f172a; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fdc-kpi .v.fin[b-bde8u1h5ft] { color: var(--corp-navy); }

/* ── Pestañas: tres no caben a 400 px, desplazan en vez de salirse ── */
.fdc-tabs[b-bde8u1h5ft] { padding: 0 0.5rem; overflow-x: auto; scrollbar-width: none; }
.fdc-tabs[b-bde8u1h5ft]::-webkit-scrollbar { height: 0; }
.fdc-tabs .corp-tab[b-bde8u1h5ft] { white-space: nowrap; flex-shrink: 0; }

/* ── Cuerpo: sin padding para que el encabezado pegajoso de la tabla no deje carril ── */
.fdc-body[b-bde8u1h5ft] { flex: 1; min-height: 0; overflow: auto; }

/* corporate.css alinea td.r solo en tbody: el pie necesita la etiqueta a la derecha. */
.fdc-tbl tfoot td.lbl[b-bde8u1h5ft] { text-align: right; color: var(--corp-text-head); }
.fdc-tbl tfoot td.r[b-bde8u1h5ft] { color: var(--corp-navy); }
.fdc-tbl td.fdc-falta[b-bde8u1h5ft] { color: var(--corp-bad); font-weight: 700; }

.fdc-dot[b-bde8u1h5ft] { width: 7px; height: 7px; border-radius: 50%; display: inline-block; vertical-align: middle; margin-right: 0.3rem; background: var(--corp-text-muted); }
.fdc-dot.bad[b-bde8u1h5ft] { background: var(--corp-bad-strong); }

/* ── Columna de contratos ── */
.fdc-contratos[b-bde8u1h5ft] { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 0.3rem; }

.fdc-ini[b-bde8u1h5ft] {
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    border: 1px solid var(--corp-border);
    background: var(--corp-bg-head);
    color: var(--corp-navy);
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    letter-spacing: 0.03em;
    padding: 0;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    user-select: none;
}
.fdc-ini:hover[b-bde8u1h5ft] { border-color: var(--corp-accent); color: var(--corp-accent); }

.fdc-prov[b-bde8u1h5ft] {
    background: #fff;
    border: 1px solid var(--corp-border);
    color: var(--corp-text-sub);
    padding: 0.12rem 0.45rem;
    border-radius: 10px;
    font-size: var(--corp-fs-xs);
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    white-space: nowrap;
}
.fdc-prov:hover[b-bde8u1h5ft] { border-color: var(--corp-accent); color: var(--corp-accent); }
.fdc-prov-name[b-bde8u1h5ft] { max-width: 90px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── Desglose del costo unitario (pie de cifras) ── */
.fdc-tot[b-bde8u1h5ft] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.4rem 1.25rem;
    padding: 0.45rem 0.85rem;
    border-top: 1px solid var(--corp-border);
    background: var(--corp-bg-head);
    flex-shrink: 0;
}
.fdc-tot-i[b-bde8u1h5ft] { display: flex; flex-direction: column; gap: 0.05rem; min-width: 0; }
.fdc-tot-i span[b-bde8u1h5ft] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-muted); white-space: nowrap; }
.fdc-tot-i b[b-bde8u1h5ft] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-main); white-space: nowrap; }
.fdc-tot-i.fin[b-bde8u1h5ft] { margin-left: auto; text-align: right; }
.fdc-tot-i.fin span[b-bde8u1h5ft] { color: var(--corp-text-head); }
.fdc-tot-i.fin b[b-bde8u1h5ft] { font-size: var(--corp-fs-lg); color: var(--corp-navy); }

/* ── Pie de acciones ── */
.fdc-foot[b-bde8u1h5ft] {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 0.4rem;
    padding: 0.5rem 0.85rem;
    border-top: 1px solid var(--corp-border);
    flex-shrink: 0;
}

/* ── Ficha del contrato (empleado o proveedor) ── */
.fdc-pop-back[b-bde8u1h5ft] {
    position: fixed;
    inset: 0;
    z-index: 1100;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(15, 23, 42, 0.35);
    padding: 1rem;
}

.fdc-pop[b-bde8u1h5ft] {
    background: var(--corp-bg-card);
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
    width: 100%;
    max-width: 380px;
    overflow: hidden;
}

.fdc-pop-head[b-bde8u1h5ft] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.65rem 0.85rem;
    border-bottom: 1px solid var(--corp-border);
}

.fdc-pop-ava[b-bde8u1h5ft] {
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    background: var(--corp-bg-head);
    border: 1px solid var(--corp-border);
    color: var(--corp-navy);
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    letter-spacing: 0.03em;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.fdc-pop-id[b-bde8u1h5ft] { flex: 1; min-width: 0; }
.fdc-pop-name[b-bde8u1h5ft] { font-size: var(--corp-fs-md); font-weight: 700; color: #0f172a; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fdc-pop-sub[b-bde8u1h5ft] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.05rem; }

.fdc-pop-body[b-bde8u1h5ft] {
    padding: 0.25rem 0.85rem 0.65rem;
    max-height: 340px;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: #cbd5e1 transparent;
}

.fdc-def[b-bde8u1h5ft] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.75rem;
    padding: 0.3rem 0;
    border-bottom: 1px solid var(--corp-border-row);
    font-size: var(--corp-fs-sm);
}
.fdc-def span[b-bde8u1h5ft] { color: var(--corp-text-sub); white-space: nowrap; }
.fdc-def b[b-bde8u1h5ft] { color: #1e293b; font-weight: 600; text-align: right; overflow-wrap: anywhere; }
.fdc-def b .corp-pill[b-bde8u1h5ft] { margin-left: 0.25rem; }
.fdc-mono[b-bde8u1h5ft] { font-family: var(--corp-mono); }

.fdc-pop-sep[b-bde8u1h5ft] { height: 0.4rem; }

.fdc-pop-sec[b-bde8u1h5ft] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0.6rem -0.85rem 0;
    padding: 0.35rem 0.85rem;
    background: var(--corp-bg-head);
    border-top: 1px solid var(--corp-border);
    border-bottom: 1px solid var(--corp-border);
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    color: var(--corp-text-head);
}
.fdc-pop-sec .n[b-bde8u1h5ft] { margin-left: auto; background: #eef2f6; color: var(--corp-text-sub); font-size: var(--corp-fs-xs); font-family: var(--corp-mono); padding: 0 6px; border-radius: 9px; }

.fdc-act[b-bde8u1h5ft] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.3rem 0;
    border-bottom: 1px solid var(--corp-border-row);
    font-size: var(--corp-fs-sm);
}
.fdc-act:last-child[b-bde8u1h5ft] { border-bottom: 0; }
.fdc-act .t[b-bde8u1h5ft] { color: #1e293b; min-width: 0; }
.fdc-act .m[b-bde8u1h5ft] { margin-left: auto; font-family: var(--corp-mono); font-weight: 700; color: var(--corp-navy); white-space: nowrap; }

/* ── Teléfono: el diálogo toma casi toda la pantalla, las cifras van de a dos y los
   controles tocables crecen al tamaño del dedo. La tabla desplaza dentro del cuerpo. ── */
@media (max-width: 640px) {
    .fdc-back[b-bde8u1h5ft] { padding: 0.5rem; }
    .fdc-modal[b-bde8u1h5ft] { height: calc(100vh - 1rem); max-height: none; }
    .fdc-head[b-bde8u1h5ft] { padding: 0.5rem 0.6rem; }
    .fdc-kpis[b-bde8u1h5ft] { flex: 1 1 100%; grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .fdc-kpi:last-child[b-bde8u1h5ft] { grid-column: 1 / -1; }
    .fdc-tot[b-bde8u1h5ft] { padding: 0.45rem 0.6rem; gap: 0.35rem 0.9rem; }
    .fdc-tot-i.fin[b-bde8u1h5ft] { flex-basis: 100%; }
    .fdc-foot[b-bde8u1h5ft] { padding: 0.5rem 0.6rem; }
    .fdc-foot .corp-btn[b-bde8u1h5ft] { min-height: 2.25rem; }
    .fdc-x[b-bde8u1h5ft] { width: 2.25rem; height: 2.25rem; }
    .fdc-ini[b-bde8u1h5ft] { width: 2.1rem; height: 2.1rem; }
    .fdc-prov[b-bde8u1h5ft] { min-height: 2.1rem; }
}
/* /Components/Pages/PM/ComLookAhead.razor.rz.scp.css */
/* Look-ahead de planificación · CSS aislado. Mismo lenguaje que el Escritorio de Compras:
   blanco y gris, el color solo donde falta algo (punto rojo o ámbar + texto), cifras en
   monoespaciada, encabezados de caja en gris claro. Se usa desde el TELÉFONO en obra: la
   página nunca desplaza en horizontal y los controles crecen al tamaño del dedo. */

.la-root[b-xqant09fqf] { display: flex; flex-direction: column; gap: 0.6rem; min-width: 0; }

/* ── Encabezado ── */
.la-head[b-xqant09fqf] { display: flex; justify-content: space-between; align-items: flex-end; gap: 0.5rem 1rem; flex-wrap: wrap; padding-bottom: 0.5rem; border-bottom: 1px solid var(--corp-border); }
.la-head-left[b-xqant09fqf] { display: flex; flex-direction: column; gap: 0.15rem; max-width: 720px; min-width: 0; }
.la-title[b-xqant09fqf] { font-size: var(--corp-fs-md); font-weight: 700; color: var(--corp-navy); }
.la-sub[b-xqant09fqf] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); line-height: 1.45; }
.la-sub b[b-xqant09fqf] { font-family: var(--corp-mono); color: #1e293b; }
.la-head-ctrls[b-xqant09fqf] { display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; }

/* ── Cifras ── */
.la-kpis[b-xqant09fqf] { margin: 0; }
.la-kpis .corp-kpi-val.la-bad[b-xqant09fqf]  { color: var(--corp-bad); }
.la-kpis .corp-kpi-val.la-warn[b-xqant09fqf] { color: var(--corp-warn); }
.la-kpis .corp-kpi-val.la-zero[b-xqant09fqf] { color: #cbd5e1; }

/* ── Barra de filtros y leyenda ── */
.la-legend[b-xqant09fqf] { display: inline-flex; align-items: center; gap: 0.35rem 0.75rem; flex-wrap: wrap; font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }
.la-legend-i[b-xqant09fqf] { display: inline-flex; align-items: center; gap: 0.3rem; white-space: nowrap; }

/* ── Tabla ── */
.la-scroll[b-xqant09fqf] { max-height: 62vh; }
/* Fila con faltantes: un filete rojo a la izquierda en vez de teñir toda la fila. */
.la-tbl tbody tr.la-row-falta > td:first-child[b-xqant09fqf] { box-shadow: inset 3px 0 0 var(--corp-bad-strong); }
.la-tbl tbody tr.la-row-open > td[b-xqant09fqf] { background: var(--corp-bg-head); }
/* Avance en el azul neutro: el color de alarma lo ponen los semáforos, no la barra. */
.la-bar .corp-bar-fill:not(.mut)[b-xqant09fqf] { background: var(--corp-accent); }

/* ── Punto de estado (semáforo) ── */
.la-dot[b-xqant09fqf] { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #cbd5e1; flex-shrink: 0; }
.la-dot.sm[b-xqant09fqf] { width: 7px; height: 7px; margin-right: 0.15rem; vertical-align: middle; }
.la-dot.ok[b-xqant09fqf] { background: var(--corp-ok-strong); }
.la-dot.parcial[b-xqant09fqf] { background: var(--corp-warn-strong); }
.la-dot.falta[b-xqant09fqf] { background: var(--corp-bad-strong); }
.la-dot.info[b-xqant09fqf] { background: var(--corp-accent); }
.la-dot.na[b-xqant09fqf] { background: #e2e8f0; }

.la-st[b-xqant09fqf] { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }
.la-st.falta[b-xqant09fqf] { color: var(--corp-bad); }
.la-st.na[b-xqant09fqf] { color: var(--corp-text-muted); }
.la-st.na .la-dot[b-xqant09fqf] { background: #cbd5e1; }

/* Semáforo por columna: punto + texto gris; el texto se colorea solo si falta algo. */
.la-sem[b-xqant09fqf] { display: inline-flex; align-items: center; gap: 0.3rem; font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-text-sub); white-space: nowrap; }
.la-sem-txt[b-xqant09fqf] { font-family: var(--corp-mono); }
.la-sem.parcial[b-xqant09fqf] { color: var(--corp-warn); }
.la-sem.falta[b-xqant09fqf] { color: var(--corp-bad); }
.la-sem.na[b-xqant09fqf] { color: var(--corp-text-muted); }

/* ── Detalle desplegado ── */
.la-detail > td[b-xqant09fqf] { background: var(--corp-bg-body) !important; padding: 0.5rem 0.6rem 0.75rem; }
.la-detail-grid[b-xqant09fqf] { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1.1fr); gap: 0.6rem; }
@media (max-width: 1100px) { .la-detail-grid[b-xqant09fqf] { grid-template-columns: minmax(0, 1fr); } }

.la-box[b-xqant09fqf] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); display: flex; flex-direction: column; min-width: 0; overflow: hidden; }
.la-box-head[b-xqant09fqf] { display: flex; align-items: center; gap: 0.4rem; padding: 0.35rem 0.6rem; background: var(--corp-bg-head); border-bottom: 1px solid var(--corp-border); font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head); }
.la-box-empty[b-xqant09fqf] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); padding: 0.5rem 0.6rem; }
.la-box-empty.falta[b-xqant09fqf] { color: var(--corp-bad); font-weight: 600; }

.la-subtbl thead th[b-xqant09fqf] { padding: 0.28rem 0.5rem; }
.la-subtbl tbody td[b-xqant09fqf] { padding: 0.28rem 0.5rem; }
.la-subtbl tbody tr:last-child td[b-xqant09fqf] { border-bottom: 0; }
.la-subtbl td.la-falta[b-xqant09fqf] { color: var(--corp-bad); font-weight: 700; }

.la-list[b-xqant09fqf] { margin: 0; padding: 0; list-style: none; font-size: var(--corp-fs-sm); color: var(--corp-text-main); }
.la-list li[b-xqant09fqf] { padding: 0.3rem 0.6rem; border-bottom: 1px solid var(--corp-border-row); }
.la-list li:last-child[b-xqant09fqf] { border-bottom: 0; }
.la-list li b[b-xqant09fqf] { font-weight: 600; color: #1e293b; }

/* ── Teléfono: controles al tamaño del dedo, el buscador toma su renglón ── */
@media (max-width: 640px) {
    .la-head-ctrls[b-xqant09fqf] { width: 100%; }
    .la-head-ctrls .corp-seg-btn[b-xqant09fqf] { min-height: 2.25rem; padding: 0 0.65rem; }
    .la-head-ctrls .corp-btn[b-xqant09fqf] { min-height: 2.25rem; margin-left: auto; }
    .la-tblbar .corp-chip[b-xqant09fqf] { min-height: 2rem; display: inline-flex; align-items: center; }
    .la-tblbar .corp-search-lite[b-xqant09fqf] { flex: 1 1 100%; min-height: 2.25rem; order: 5; }
    .la-tblbar .spacer[b-xqant09fqf] { display: none; }
    .la-legend[b-xqant09fqf] { order: 6; }
    .la-scroll[b-xqant09fqf] { max-height: 70vh; }
}
/* /Components/Pages/PM/ComParteDiarioOT.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   Parte diario de obra · CSS aislado del componente.
   Mismo lenguaje que el Escritorio de Compras: blanco y gris, color solo donde algo
   pide acción (cuadrilla vacía, horas muertas, avance bajo), cifras en mono.
   Es la captura que el PM hace desde el TELÉFONO: a 640 px cada fila de la tabla se
   vuelve una tarjeta con sus campos en rejilla, los controles miden al menos 36 px
   y el pie con «Registrar» queda pegado abajo.
   ══════════════════════════════════════════════════════════════════════ */

.pdo-root[b-m2dyj4x1ex] {
    background: #fff;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    padding: 0.6rem 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    min-width: 0;
}

/* ── Encabezado: identidad a la izquierda, datos comunes del parte a la derecha ── */
.pdo-head[b-m2dyj4x1ex] {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 0.6rem 1rem;
    flex-wrap: wrap;
    padding-bottom: 0.55rem;
    border-bottom: 1px solid var(--corp-border);
}
.pdo-head-id[b-m2dyj4x1ex] { flex: 1 1 18rem; min-width: 0; display: flex; flex-direction: column; gap: 0.1rem; }
.pdo-title[b-m2dyj4x1ex] { font-size: var(--corp-fs-md); font-weight: 700; color: #0f172a; }
.pdo-sub[b-m2dyj4x1ex] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); line-height: 1.4; }
.pdo-head-ctrls[b-m2dyj4x1ex] { display: flex; gap: 0.6rem; align-items: flex-end; flex-wrap: wrap; }
.pdo-field[b-m2dyj4x1ex] { display: flex; flex-direction: column; gap: 0.15rem; min-width: 150px; }
.pdo-jornada[b-m2dyj4x1ex] { display: flex; gap: 0.3rem; align-items: center; }
.pdo-jornada .pdo-num[b-m2dyj4x1ex] { width: 80px; }

.pdo-tblbar .spacer[b-m2dyj4x1ex] { flex: 1; }

/* ── Tabla de captura ── */
.pdo-scroll[b-m2dyj4x1ex] { overflow: auto; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); max-height: 62vh; }
.pdo-tbl[b-m2dyj4x1ex] { min-width: 1150px; }
/* Encabezado pegajoso solo de la tabla principal: la de la cuadrilla va anidada y no debe pegarse. */
.pdo-tbl > thead > tr > th[b-m2dyj4x1ex] { position: sticky; top: 0; z-index: 2; background: var(--corp-bg-head); white-space: nowrap; }
.pdo-tbl > tbody > tr > td[b-m2dyj4x1ex] { vertical-align: top; padding: 0.35rem 0.4rem; }
.pdo-tbl > tbody > tr.pdo-off > td[b-m2dyj4x1ex] { opacity: 0.62; }
.pdo-tbl > tbody > tr.pdo-on > td[b-m2dyj4x1ex] { background: #eff6ff; }
.pdo-tbl > tbody > tr.pdo-on > td:first-child[b-m2dyj4x1ex] { box-shadow: inset 3px 0 0 var(--corp-accent); }

.pdo-chk[b-m2dyj4x1ex] { width: 16px; height: 16px; cursor: pointer; accent-color: var(--corp-accent); }

.pdo-task[b-m2dyj4x1ex] { font-weight: 600; color: #1e293b; font-size: var(--corp-fs-sm); }
.pdo-task-sub[b-m2dyj4x1ex] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); display: flex; gap: 0.35rem; align-items: center; flex-wrap: wrap; }
.pdo-ot[b-m2dyj4x1ex], .pdo-mono[b-m2dyj4x1ex] { font-family: var(--corp-mono); }

/* Avance de la actividad: neutro; ámbar si va por debajo del 60 %, verde al completar. */
.pdo-bar[b-m2dyj4x1ex] { display: flex; align-items: center; gap: 0.4rem; }
.pdo-bar-track[b-m2dyj4x1ex] { flex: 1; min-width: 3rem; height: 6px; background: var(--corp-border-row); border-radius: 99px; overflow: hidden; display: block; }
.pdo-bar-track i[b-m2dyj4x1ex] { display: block; height: 100%; border-radius: 99px; background: var(--corp-accent); }
.pdo-bar-track i.ok[b-m2dyj4x1ex]   { background: var(--corp-ok-strong); }
.pdo-bar-track i.warn[b-m2dyj4x1ex] { background: var(--corp-warn-strong); }
.pdo-bar b[b-m2dyj4x1ex] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-text-sub); white-space: nowrap; }

.pdo-num-wrap[b-m2dyj4x1ex] { display: flex; align-items: center; gap: 0.25rem; justify-content: flex-end; }
.pdo-num[b-m2dyj4x1ex] { width: 84px; text-align: right; padding: 0.22rem 0.35rem; font-size: var(--corp-fs-sm); font-family: var(--corp-mono); }
.pdo-und[b-m2dyj4x1ex] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); min-width: 24px; text-align: left; }
.pdo-sel[b-m2dyj4x1ex] { padding: 0.22rem 0.35rem; font-size: var(--corp-fs-sm); }
.pdo-obs[b-m2dyj4x1ex] { padding: 0.22rem 0.4rem; font-size: var(--corp-fs-sm); }

/* Botón de la cuadrilla: gris; rojo solo si nadie quedó marcado (sin personas no hay horas). */
.pdo-crew[b-m2dyj4x1ex] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    background: #fff;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    padding: 0.15rem 0.55rem;
    font-family: var(--corp-mono);
    font-size: var(--corp-fs-sm);
    font-weight: 700;
    color: var(--corp-text-sub);
    white-space: nowrap;
    cursor: pointer;
}
.pdo-crew:hover[b-m2dyj4x1ex], .pdo-crew.open[b-m2dyj4x1ex] { background: #eff6ff; border-color: var(--corp-accent); color: var(--corp-accent); }
.pdo-crew.empty[b-m2dyj4x1ex] { color: var(--corp-bad); border-color: #fecaca; background: #fff; }

.pdo-crew-row > td[b-m2dyj4x1ex] { background: var(--corp-bg-head); padding: 0.25rem 0.5rem 0.6rem; }
.pdo-crew-box[b-m2dyj4x1ex] { border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.5rem 0.6rem; background: #fff; display: flex; flex-direction: column; gap: 0.45rem; }
.pdo-crew-head[b-m2dyj4x1ex] { display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; font-size: var(--corp-fs-xs); color: var(--corp-text-sub); flex-wrap: wrap; }
.pdo-add[b-m2dyj4x1ex] { max-width: 240px; width: auto; }
.pdo-crew-scroll[b-m2dyj4x1ex] { overflow-x: auto; }
.pdo-crew-tbl[b-m2dyj4x1ex] { max-width: 620px; }
.pdo-crew-tbl tbody tr.pdo-off td[b-m2dyj4x1ex] { opacity: 0.55; }

/* ── Avisos: blancos con filete de color ── */
.pdo-alert[b-m2dyj4x1ex] { display: flex; align-items: center; gap: 0.45rem; padding: 0.4rem 0.75rem; border-radius: var(--corp-radius); font-size: var(--corp-fs-sm); background: #fff; border: 1px solid var(--corp-border); border-left-width: 3px; }
.pdo-alert-ok[b-m2dyj4x1ex]  { border-color: #bbf7d0; border-left-color: var(--corp-ok-strong); color: var(--corp-ok); }
.pdo-alert-err[b-m2dyj4x1ex] { border-color: #fecaca; border-left-color: var(--corp-bad-strong); color: var(--corp-bad); }

/* ── Pie: resumen + único botón primario ── */
.pdo-foot[b-m2dyj4x1ex] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem 0.75rem;
    flex-wrap: wrap;
    border-top: 1px solid var(--corp-border);
    padding-top: 0.55rem;
    background: #fff;
}
.pdo-summary[b-m2dyj4x1ex] { display: flex; align-items: center; gap: 0.5rem; font-size: var(--corp-fs-sm); color: var(--corp-text-sub); flex-wrap: wrap; }
.pdo-summary b[b-m2dyj4x1ex] { font-family: var(--corp-mono); color: #1e293b; }
.pdo-summary b.warn[b-m2dyj4x1ex] { color: var(--corp-warn); }
.pdo-sep[b-m2dyj4x1ex] { width: 4px; height: 4px; border-radius: 50%; background: #cbd5e1; }
.pdo-spin[b-m2dyj4x1ex] { width: 12px; height: 12px; border-width: 2px; }

/* ── Dedo: controles de al menos 36 px en pantallas táctiles ── */
@media (max-width: 640px), (pointer: coarse) {
    .pdo-ctl[b-m2dyj4x1ex], .pdo-num[b-m2dyj4x1ex], .pdo-sel[b-m2dyj4x1ex], .pdo-obs[b-m2dyj4x1ex], .pdo-crew[b-m2dyj4x1ex], .pdo-tap[b-m2dyj4x1ex], .pdo-buscar[b-m2dyj4x1ex] { min-height: 36px; }
    .pdo-chk[b-m2dyj4x1ex] { width: 20px; height: 20px; }
}

/* ── Teléfono: cada fila de la tabla pasa a ser una tarjeta ──
   Rejilla de seis columnas: casilla + actividad; avance; cantidad | HH | HH muertas;
   motivo | cuadrilla; observación. El encabezado se oculta y cada campo toma su rótulo
   de data-lbl. La página desplaza (no una caja dentro de otra). */
@media (max-width: 640px) {
    .pdo-root[b-m2dyj4x1ex] { padding: 0.5rem 0.55rem; }

    .pdo-head-ctrls[b-m2dyj4x1ex] { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
    .pdo-field[b-m2dyj4x1ex] { min-width: 0; }
    .pdo-field:last-child[b-m2dyj4x1ex] { grid-column: 1 / -1; }
    .pdo-ctl[b-m2dyj4x1ex] { width: 100%; }
    .pdo-jornada .pdo-num[b-m2dyj4x1ex] { flex: 1; width: auto; min-width: 0; }

    .pdo-tblbar .spacer[b-m2dyj4x1ex] { display: none; }
    .pdo-buscar[b-m2dyj4x1ex] { flex: 1 1 100%; }

    .pdo-scroll[b-m2dyj4x1ex] { max-height: none; overflow: visible; border: 0; border-radius: 0; }
    .pdo-tbl[b-m2dyj4x1ex], .pdo-tbl > tbody[b-m2dyj4x1ex] { display: block; width: 100%; min-width: 0; }
    .pdo-tbl > thead[b-m2dyj4x1ex] { display: none; }

    .pdo-tbl > tbody > tr.pdo-fila[b-m2dyj4x1ex] {
        display: grid;
        grid-template-columns: repeat(6, minmax(0, 1fr));
        gap: 0.45rem 0.5rem;
        padding: 0.55rem 0.6rem;
        margin-bottom: 0.45rem;
        background: #fff;
        border: 1px solid var(--corp-border);
        border-radius: var(--corp-radius);
    }
    .pdo-tbl > tbody > tr.pdo-fila > td[b-m2dyj4x1ex] {
        display: block;
        min-width: 0;
        max-width: none;
        padding: 0;
        border: 0;
        background: transparent;
        text-align: left;
        white-space: normal;
        overflow: visible;
    }
    .pdo-tbl > tbody > tr.pdo-on[b-m2dyj4x1ex] { background: #eff6ff; border-color: #bfdbfe; box-shadow: inset 3px 0 0 var(--corp-accent); }
    .pdo-tbl > tbody > tr.pdo-on > td[b-m2dyj4x1ex] { background: transparent; }
    .pdo-tbl > tbody > tr.pdo-on > td:first-child[b-m2dyj4x1ex] { box-shadow: none; }

    .pdo-tbl > tbody > tr.pdo-fila > td[data-lbl][b-m2dyj4x1ex]::before {
        content: attr(data-lbl);
        display: block;
        margin-bottom: 0.15rem;
        font-size: var(--corp-fs-xs);
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        color: var(--corp-text-head);
    }

    .pdo-c-chk[b-m2dyj4x1ex]  { grid-column: 1; grid-row: 1; display: flex; justify-content: center; padding-top: 0.1rem; }
    .pdo-c-act[b-m2dyj4x1ex]  { grid-column: 2 / -1; grid-row: 1; }
    .pdo-c-av[b-m2dyj4x1ex]   { grid-column: 1 / -1; }
    .pdo-c-cant[b-m2dyj4x1ex] { grid-column: 1 / 3; }
    .pdo-c-hh[b-m2dyj4x1ex]   { grid-column: 3 / 5; }
    .pdo-c-hhtm[b-m2dyj4x1ex] { grid-column: 5 / 7; }
    .pdo-c-mot[b-m2dyj4x1ex]  { grid-column: 1 / 5; }
    .pdo-c-crew[b-m2dyj4x1ex] { grid-column: 5 / 7; }
    .pdo-c-obs[b-m2dyj4x1ex]  { grid-column: 1 / -1; }

    .pdo-num[b-m2dyj4x1ex], .pdo-sel[b-m2dyj4x1ex], .pdo-obs[b-m2dyj4x1ex] { width: 100%; }
    .pdo-num-wrap[b-m2dyj4x1ex] { justify-content: flex-start; }
    .pdo-num-wrap .pdo-num[b-m2dyj4x1ex] { flex: 1; min-width: 0; }
    .pdo-crew[b-m2dyj4x1ex] { width: 100%; justify-content: center; }

    .pdo-tbl > tbody > tr.pdo-crew-row[b-m2dyj4x1ex] { display: block; margin: -0.3rem 0 0.45rem; }
    .pdo-tbl > tbody > tr.pdo-crew-row > td[b-m2dyj4x1ex] { display: block; padding: 0; border: 0; background: transparent; max-width: none; }
    .pdo-tbl > tbody > tr.pdo-crew-row > td:first-child[b-m2dyj4x1ex] { display: none; }
    .pdo-add[b-m2dyj4x1ex] { max-width: none; width: 100%; }
    .pdo-crew-tbl[b-m2dyj4x1ex] { max-width: none; }
    .pdo-crew-tbl .pdo-num[b-m2dyj4x1ex] { width: 4.5rem; }

    /* El botón de registrar queda a la vista mientras se recorren las tarjetas. */
    .pdo-foot[b-m2dyj4x1ex] {
        position: sticky;
        bottom: 0;
        z-index: 4;
        margin: 0 -0.55rem -0.5rem;
        padding: 0.5rem 0.55rem;
        box-shadow: 0 -2px 8px rgba(15, 23, 42, 0.08);
    }
    .pdo-registrar[b-m2dyj4x1ex] { width: 100%; justify-content: center; min-height: 40px; }
}
/* /Components/Pages/PM/ComSaludFinanciera.razor.rz.scp.css */
/* ════════════════════════════════════════════════════════════════════════
   Salud financiera del proyecto · CSS aislado del componente (prefijo sf-).
   Mismo lenguaje que el Escritorio de Compras: blanco y gris para todo, el
   color aparece SOLO donde algo pide acción (sobregiro, caja negativa,
   vencido), cifras en monoespaciada, etiquetas en versalitas y bordes de 1px.
   Las rejillas que siguen el ancho del panel y las reglas de los gráficos
   (marcado armado como texto) van en el bloque de estilos del .razor.
   ════════════════════════════════════════════════════════════════════════ */

/* Fondo gris propio: en el proyecto del PM el panel va dentro de una tarjeta
   blanca, y sin él las tarjetas quedaban blanco sobre blanco. */
.sf-shell[b-56s0t91t2v] { display: flex; flex-direction: column; gap: 0.65rem; padding: 0.5rem; background: var(--corp-bg-body); min-width: 0; }

/* ── Punto de estado + texto gris ── */
.sf-dot[b-56s0t91t2v] { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; display: inline-block; background: var(--corp-text-muted); }
.sf-dot.info[b-56s0t91t2v] { background: var(--corp-accent); }
.sf-dot.warn[b-56s0t91t2v] { background: var(--corp-warn-strong); }
.sf-dot.bad[b-56s0t91t2v]  { background: var(--corp-bad-strong); }
.sf-dot.ok[b-56s0t91t2v]   { background: var(--corp-ok-strong); }
.sf-st[b-56s0t91t2v] { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }

/* Muestra de color de una categoría de gasto: es la leyenda de los gráficos,
   por eso las categorías conservan su color propio. */
.sf-cat-dot[b-56s0t91t2v] { width: 8px; height: 8px; border-radius: 2px; display: inline-block; margin-right: 0.4rem; vertical-align: middle; flex-shrink: 0; }

.sf-lbl[b-56s0t91t2v] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; }

/* ── Cajas de cifras (la rejilla está en el bloque de estilos del .razor) ── */
.sf-kpi[b-56s0t91t2v] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.45rem 0.65rem; min-width: 0; }
.sf-kpi .k[b-56s0t91t2v] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sf-kpi .v[b-56s0t91t2v] { font-family: var(--corp-mono); font-size: var(--corp-fs-lg); font-weight: 800; color: #0f172a; line-height: 1.2; margin-top: 0.15rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sf-kpi .v.bad[b-56s0t91t2v] { color: var(--corp-bad); }
.sf-kpi .s[b-56s0t91t2v] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sf-kpi .s.bad[b-56s0t91t2v] { color: var(--corp-bad); font-weight: 600; }

/* ── Ejecución del presupuesto: barra apilada neutra ── */
.sf-box[b-56s0t91t2v] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.5rem 0.75rem; display: flex; flex-direction: column; gap: 0.4rem; }
.sf-prog-h[b-56s0t91t2v] { display: flex; align-items: baseline; justify-content: space-between; gap: 0.25rem 0.75rem; flex-wrap: wrap; }
.sf-prog-vals[b-56s0t91t2v] { font-size: var(--corp-fs-sm); color: var(--corp-text-sub); }
.sf-prog-vals b[b-56s0t91t2v] { font-family: var(--corp-mono); color: #1e293b; white-space: nowrap; }
.sf-stack[b-56s0t91t2v] { display: flex; height: 8px; background: var(--corp-border-row); border-radius: 99px; overflow: hidden; }
.sf-stack-seg[b-56s0t91t2v] { display: block; height: 100%; background: var(--corp-accent); transition: width 0.3s; }
.sf-stack-seg.warn[b-56s0t91t2v] { background: var(--corp-warn-strong); }
.sf-stack-seg.bad[b-56s0t91t2v]  { background: var(--corp-bad-strong); }
.sf-stack-seg.comp[b-56s0t91t2v],
.sf-key i.comp[b-56s0t91t2v] { background: repeating-linear-gradient(45deg, var(--corp-text-muted) 0 2px, var(--corp-border-row) 2px 5px); }
.sf-prog-f[b-56s0t91t2v] { display: flex; align-items: center; gap: 0.35rem 0.85rem; flex-wrap: wrap; font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }
.sf-key[b-56s0t91t2v] { display: inline-flex; align-items: center; gap: 0.3rem; }
.sf-key i[b-56s0t91t2v] { width: 12px; height: 6px; border-radius: 2px; display: inline-block; }
.sf-key i.ejec[b-56s0t91t2v] { background: var(--corp-accent); }
.sf-key i.rest[b-56s0t91t2v] { background: var(--corp-border-row); border: 1px solid var(--corp-border); }
.sf-prog-over[b-56s0t91t2v] { margin-left: auto; display: inline-flex; align-items: center; gap: 0.35rem; font-weight: 600; color: var(--corp-bad); }

/* ── Aviso: blanco con filete de color ── */
.sf-alert[b-56s0t91t2v] { display: flex; align-items: flex-start; gap: 0.6rem; padding: 0.45rem 0.75rem; background: #fff; border: 1px solid var(--corp-border); border-left: 3px solid var(--corp-text-muted); border-radius: var(--corp-radius); font-size: var(--corp-fs-sm); }
.sf-alert.info[b-56s0t91t2v] { border-color: #bfdbfe; border-left-color: var(--corp-accent); }
.sf-alert-b[b-56s0t91t2v] { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 0.1rem; }
.sf-alert-b b[b-56s0t91t2v] { color: #1e293b; }
.sf-alert-b span[b-56s0t91t2v] { color: var(--corp-text-sub); font-size: var(--corp-fs-xs); }

/* ── Tarjetas: encabezado gris con pista tenue y contador a la derecha ── */
.sf-card[b-56s0t91t2v] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); overflow: hidden; min-width: 0; }
.sf-card-head[b-56s0t91t2v] { display: flex; align-items: center; gap: 0.2rem 0.45rem; flex-wrap: wrap; padding: 0.4rem 0.75rem; background: var(--corp-bg-head); border-bottom: 1px solid var(--corp-border); font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head); }
.sf-card-head .hint[b-56s0t91t2v] { font-weight: 400; font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }
.sf-card-head .n[b-56s0t91t2v] { margin-left: auto; background: #eef2f6; color: var(--corp-text-sub); font-size: var(--corp-fs-xs); font-family: var(--corp-mono); padding: 0 6px; border-radius: 9px; }
.sf-card-head .n.bad[b-56s0t91t2v] { background: var(--corp-bad-bg); color: var(--corp-bad); }
.sf-head-amt[b-56s0t91t2v] { margin-left: auto; font-size: var(--corp-fs-xs); font-weight: 400; color: var(--corp-text-sub); white-space: nowrap; }
.sf-head-amt b[b-56s0t91t2v] { font-family: var(--corp-mono); color: #1e293b; }
.sf-head-amt b.bad[b-56s0t91t2v] { color: var(--corp-bad); }
.sf-card-body[b-56s0t91t2v] { padding: 0.6rem 0.75rem; }

.sf-grid-2[b-56s0t91t2v] { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.65rem; }
@media (max-width: 1100px) { .sf-grid-2[b-56s0t91t2v] { grid-template-columns: minmax(0, 1fr); } }

/* ── Tablas (corp-tbl): desplazan dentro de su tarjeta, nunca la página ── */
.sf-tblwrap[b-56s0t91t2v] { overflow-x: auto; }
.sf-tblwrap-top[b-56s0t91t2v] { border-top: 1px solid var(--corp-border); }
.sf-tbl tbody tr:last-child td[b-56s0t91t2v] { border-bottom: 0; }
/* corporate.css alinea a la derecha td.r solo en tbody: el pie necesita lo mismo. */
.sf-tbl tfoot td.r[b-56s0t91t2v] { text-align: right; }
.sf-strong[b-56s0t91t2v] { font-weight: 700; color: #1e293b; }
.sf-bad[b-56s0t91t2v] { color: var(--corp-bad); font-weight: 700; }
.sf-code[b-56s0t91t2v] { font-family: var(--corp-mono); font-weight: 700; color: var(--corp-navy); white-space: nowrap; }
.sf-tbl strong[b-56s0t91t2v] { font-weight: 600; color: #1e293b; }

/* ── Barra de avance: azul salvo que algo pida acción ── */
.sf-prog[b-56s0t91t2v] { flex: 1; display: block; height: 6px; min-width: 3rem; background: var(--corp-border-row); border-radius: 99px; overflow: hidden; }
.sf-prog > span[b-56s0t91t2v] { display: block; height: 100%; border-radius: 99px; background: var(--corp-accent); transition: width 0.3s; }
.sf-prog > span.warn[b-56s0t91t2v] { background: var(--corp-warn-strong); }
.sf-prog > span.bad[b-56s0t91t2v]  { background: var(--corp-bad-strong); }
.sf-barcell[b-56s0t91t2v] { display: flex; align-items: center; gap: 0.4rem; min-width: 6.5rem; }
.sf-barcell b[b-56s0t91t2v] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-text-sub); min-width: 2.5rem; text-align: right; }
.sf-barcell b.warn[b-56s0t91t2v] { color: var(--corp-warn); }
.sf-barcell b.bad[b-56s0t91t2v]  { color: var(--corp-bad); }

/* ── Cifras chicas dentro de una tarjeta (caja, antigüedad, drawer) ── */
.sf-mini[b-56s0t91t2v] { display: grid; grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr)); gap: 0.5rem; margin-top: 0.5rem; }
.sf-mini-i[b-56s0t91t2v] { background: var(--corp-bg-head); border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.4rem 0.6rem; min-width: 0; }
.sf-mini-i .k[b-56s0t91t2v] { display: flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sf-mini-i .v[b-56s0t91t2v] { font-family: var(--corp-mono); font-size: var(--corp-fs-md); font-weight: 700; color: #0f172a; margin-top: 0.1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sf-mini-i .v.txt[b-56s0t91t2v] { font-family: var(--corp-font); font-size: var(--corp-fs-sm); }
.sf-mini-i .v.warn[b-56s0t91t2v] { color: var(--corp-warn); }
.sf-mini-i .v.bad[b-56s0t91t2v]  { color: var(--corp-bad); }
/* Trazo de la serie en el gráfico de caja: hace de leyenda. */
.sf-line[b-56s0t91t2v] { width: 12px; height: 2px; border-radius: 1px; display: inline-block; flex-shrink: 0; }
.sf-line.in[b-56s0t91t2v]  { background: var(--corp-ok-strong); }
.sf-line.out[b-56s0t91t2v] { background: var(--corp-bad-strong); }

/* ── Rankings con barra (ingresos por procedencia, beneficiarios) ── */
.sf-toplist[b-56s0t91t2v] { display: flex; flex-direction: column; }
.sf-top[b-56s0t91t2v] { display: grid; grid-template-columns: minmax(0, 11rem) minmax(0, 1fr) auto; gap: 0.1rem 0.6rem; align-items: center; padding: 0.35rem 0; border-bottom: 1px solid var(--corp-border-row); }
.sf-top:last-child[b-56s0t91t2v] { border-bottom: 0; }
.sf-top-name[b-56s0t91t2v] { font-size: var(--corp-fs-sm); font-weight: 600; color: #1e293b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sf-top-val[b-56s0t91t2v] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; color: #1e293b; text-align: right; white-space: nowrap; }
.sf-top-meta[b-56s0t91t2v] { grid-column: 1 / -1; font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }

/* ── Filtros de egresos ── */
.sf-filters[b-56s0t91t2v] { display: flex; align-items: center; gap: 0.45rem 1rem; flex-wrap: wrap; padding: 0.45rem 0.75rem; background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); }
.sf-filter-grp[b-56s0t91t2v] { display: flex; align-items: center; gap: 0.35rem; flex-wrap: wrap; min-width: 0; }
.sf-filter-grp .sf-lbl[b-56s0t91t2v] { margin-right: 0.15rem; }
/* El chip ya separa sus hijos con gap: la muestra de color no suma margen propio. */
.sf-filter-grp .sf-cat-dot[b-56s0t91t2v] { margin-right: 0; }
.sf-filters-hint[b-56s0t91t2v] { margin-left: auto; font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }

/* ── Distribución (dona + leyenda) ── */
.sf-donut-body[b-56s0t91t2v] { display: grid; grid-template-columns: minmax(0, 13rem) minmax(0, 1fr); gap: 1rem; align-items: center; }
@media (max-width: 700px) { .sf-donut-body[b-56s0t91t2v] { grid-template-columns: minmax(0, 1fr); } }
.sf-legend[b-56s0t91t2v] { display: flex; flex-direction: column; min-width: 0; }
.sf-legend-row[b-56s0t91t2v] { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; gap: 0.5rem; align-items: center; padding: 0.3rem 0; border-bottom: 1px solid var(--corp-border-row); font-size: var(--corp-fs-sm); }
.sf-legend-row:last-child[b-56s0t91t2v] { border-bottom: 0; }
.sf-legend-row .sf-cat-dot[b-56s0t91t2v] { margin-right: 0; }
.sf-legend-row .lbl[b-56s0t91t2v] { color: var(--corp-text-main); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sf-legend-row .pct[b-56s0t91t2v] { font-family: var(--corp-mono); color: var(--corp-text-sub); min-width: 3rem; text-align: right; }
.sf-legend-row .val[b-56s0t91t2v] { font-family: var(--corp-mono); font-weight: 700; color: #1e293b; text-align: right; white-space: nowrap; }

/* ── Barras apiladas por mes ── */
.sf-stacked[b-56s0t91t2v] { display: flex; align-items: flex-end; gap: 0.4rem; height: 220px; overflow-x: auto; padding-bottom: 4px; }
.sf-stacked-col[b-56s0t91t2v] { display: flex; flex-direction: column; align-items: center; flex: 1 0 48px; min-width: 48px; height: 100%; gap: 4px; }
.sf-stacked-bar[b-56s0t91t2v] { width: 100%; flex: 1; background: var(--corp-bg-head); border: 1px solid var(--corp-border-row); border-radius: var(--corp-radius); display: flex; flex-direction: column-reverse; overflow: hidden; }
.sf-stacked-seg[b-56s0t91t2v] { width: 100%; transition: opacity 0.15s; }
.sf-stacked-seg:hover[b-56s0t91t2v] { opacity: 0.8; }
.sf-stacked-lbl[b-56s0t91t2v] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); white-space: nowrap; }
.sf-stacked-val[b-56s0t91t2v] { font-size: var(--corp-fs-xs); font-weight: 700; color: #1e293b; font-family: var(--corp-mono); white-space: nowrap; }

/* ── Mapa de calor ──
   Las columnas (semanas) se reparten TODO el ancho de la tarjeta y las celdas quedan
   cuadradas con aspect-ratio: el mapa escala con el espacio en vez de ser un bloque fijo. */
.sf-heatmap[b-56s0t91t2v] { display: flex; gap: 3px; width: 100%; }
.sf-heat-col[b-56s0t91t2v] { display: flex; flex-direction: column; gap: 3px; flex: 1 1 0; min-width: 0; }
.sf-heat-cell[b-56s0t91t2v] { width: 100%; aspect-ratio: 1 / 1; border-radius: 2px; transition: transform 0.1s; cursor: default; }
.sf-heat-cell:hover[b-56s0t91t2v] { transform: scale(1.12); }
.sf-heat-cell.empty[b-56s0t91t2v] { background: transparent; }
.sf-heat-legend[b-56s0t91t2v] { display: flex; align-items: center; gap: 0.5rem; margin-top: 0.6rem; font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }
.sf-heat-scale[b-56s0t91t2v] { display: flex; gap: 2px; }
.sf-heat-scale > div[b-56s0t91t2v] { width: 12px; height: 12px; border-radius: 2px; }

/* ── Alertas e insights: una fila por alerta ── */
.sf-arow[b-56s0t91t2v] { display: flex; align-items: flex-start; gap: 0.55rem; padding: 0.45rem 0.75rem; border-bottom: 1px solid var(--corp-border-row); }
.sf-arow:last-child[b-56s0t91t2v] { border-bottom: 0; }
.sf-arow > .sf-dot[b-56s0t91t2v] { margin-top: 0.35rem; }
.sf-arow-b[b-56s0t91t2v] { flex: 1; min-width: 0; }
.sf-arow-b .t[b-56s0t91t2v] { font-size: var(--corp-fs-sm); font-weight: 600; color: #1e293b; }
.sf-arow-b .d[b-56s0t91t2v] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); margin-top: 0.1rem; }

/* ── Movimientos: pestañas dentro de la tarjeta + pie de «mostrar más» ── */
.sf-tabs[b-56s0t91t2v] { padding: 0 0.5rem; align-items: center; flex-wrap: wrap; }
.sf-tabs .hint[b-56s0t91t2v] { margin-left: auto; padding: 0.3rem 0.25rem; font-size: var(--corp-fs-xs); color: var(--corp-text-muted); font-family: var(--corp-mono); }
.sf-more[b-56s0t91t2v] { display: flex; align-items: center; justify-content: center; gap: 0.6rem; flex-wrap: wrap; padding: 0.4rem 0.75rem; border-top: 1px solid var(--corp-border); background: var(--corp-bg-head); font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }

/* ── Drawer de detalle: claro, identidad arriba y secciones grises ── */
.sf-drawer-overlay[b-56s0t91t2v] { position: fixed; inset: 0; background: rgba(15, 23, 42, 0.32); opacity: 0; visibility: hidden; transition: opacity 0.2s; z-index: 1200; }
.sf-drawer-overlay.visible[b-56s0t91t2v] { opacity: 1; visibility: visible; }
.sf-drawer[b-56s0t91t2v] { position: fixed; top: 0; right: 0; height: 100%; width: 460px; max-width: 94vw; background: #fff; border-left: 1px solid var(--corp-border); box-shadow: -6px 0 24px rgba(15, 23, 42, 0.14); transform: translateX(100%); transition: transform 0.22s ease; z-index: 1201; display: flex; flex-direction: column; }
.sf-drawer.visible[b-56s0t91t2v] { transform: translateX(0); }

.sf-drawer-head[b-56s0t91t2v] { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.5rem; padding: 0.75rem 1rem; border-bottom: 1px solid var(--corp-border); flex-shrink: 0; }
.sf-drawer-id[b-56s0t91t2v] { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 0.15rem; }
.sf-drawer-num[b-56s0t91t2v] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-navy); background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0 0.4rem; line-height: 1.6; text-transform: uppercase; }
.sf-drawer-title[b-56s0t91t2v] { font-size: var(--corp-fs-xl); font-weight: 700; color: #0f172a; line-height: 1.2; overflow-wrap: anywhere; }
.sf-drawer-sub[b-56s0t91t2v] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }

.sf-drawer-stats[b-56s0t91t2v] { display: grid; grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr)); gap: 0.5rem; padding: 0.6rem 1rem; border-bottom: 1px solid var(--corp-border); flex-shrink: 0; }
.sf-drawer-body[b-56s0t91t2v] { overflow-y: auto; flex: 1; padding-bottom: 1rem; }
.sf-drawer-sec[b-56s0t91t2v] { display: flex; align-items: center; gap: 0.45rem; margin-top: 0.75rem; padding: 0.4rem 1rem; background: var(--corp-bg-head); border-top: 1px solid var(--corp-border); border-bottom: 1px solid var(--corp-border); font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head); }
.sf-drawer-sec:first-child[b-56s0t91t2v] { margin-top: 0; border-top: 0; }
.sf-drawer-sec .n[b-56s0t91t2v] { margin-left: auto; background: #eef2f6; color: var(--corp-text-sub); font-size: var(--corp-fs-xs); font-family: var(--corp-mono); padding: 0 6px; border-radius: 9px; }
.sf-drawer-desc[b-56s0t91t2v] { padding: 0.5rem 1rem; font-size: var(--corp-fs-body); color: var(--corp-text-main); line-height: 1.45; overflow-wrap: anywhere; }
.sf-drawer-empty[b-56s0t91t2v] { padding: 0.5rem 1rem; font-size: var(--corp-fs-sm); color: var(--corp-text-muted); }
.sf-drawer-loading[b-56s0t91t2v] { display: flex; align-items: center; gap: 0.5rem; padding: 1.5rem 1rem; color: var(--corp-text-sub); font-size: var(--corp-fs-sm); }

.sf-defs[b-56s0t91t2v] { padding: 0 1rem; }
.sf-def[b-56s0t91t2v] { display: flex; justify-content: space-between; gap: 0.75rem; padding: 0.32rem 0; border-bottom: 1px solid var(--corp-border-row); font-size: var(--corp-fs-sm); }
.sf-def:last-child[b-56s0t91t2v] { border-bottom: 0; }
.sf-def span[b-56s0t91t2v] { color: var(--corp-text-sub); }
.sf-def b[b-56s0t91t2v] { color: #1e293b; font-weight: 600; text-align: right; overflow-wrap: anywhere; }

.sf-doc[b-56s0t91t2v] { display: flex; align-items: center; gap: 0.5rem; padding: 0.4rem 1rem; border-bottom: 1px solid var(--corp-border-row); }
.sf-doc:last-child[b-56s0t91t2v] { border-bottom: 0; }
.sf-doc-nombre[b-56s0t91t2v] { flex: 1; min-width: 0; font-size: var(--corp-fs-sm); font-weight: 600; color: #1e293b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sf-doc-fecha[b-56s0t91t2v] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); font-family: var(--corp-mono); white-space: nowrap; }

/* ── Teléfono: el ranking baja la barra a su propio renglón y los filtros se
   agrandan para el dedo ── */
@media (max-width: 640px) {
    .sf-shell[b-56s0t91t2v] { padding: 0.35rem; gap: 0.5rem; }
    .sf-top[b-56s0t91t2v] { grid-template-columns: minmax(0, 1fr) auto; }
    .sf-top > .sf-prog[b-56s0t91t2v] { grid-column: 1 / -1; grid-row: 2; }
    .sf-filters .corp-seg-btn[b-56s0t91t2v], .sf-filters .corp-chip[b-56s0t91t2v] { min-height: 2.25rem; }
    .sf-filters-hint[b-56s0t91t2v] { margin-left: 0; }
    .sf-prog-over[b-56s0t91t2v] { margin-left: 0; }
    .sf-head-amt[b-56s0t91t2v] { margin-left: 0; white-space: normal; }
    .sf-doc[b-56s0t91t2v] { flex-wrap: wrap; }
}
/* /Components/Pages/PM/ComSinProyectoSeguimiento.razor.rz.scp.css */
/* Estado sin obra en ejecución (PM). Mismo lenguaje que el Escritorio de Compras: tarjeta
   blanca sobre el gris, estado vacío grande, pasos del pipeline con un punto y cifras en
   monoespaciada. El color solo marca las fases que tienen proyectos. */

.sps-wrap[b-2gdop55jgf] {
    width: 100%;
    max-width: 46rem;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

/* ── Aviso de proyecto inexistente / ajeno: blanco con filete ámbar ── */
.sps-warn[b-2gdop55jgf] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.45rem 0.75rem;
    background: #fff;
    border: 1px solid #fde68a;
    border-left: 3px solid var(--corp-warn-strong);
    border-radius: var(--corp-radius);
    font-size: var(--corp-fs-sm);
    color: var(--corp-warn);
    line-height: 1.45;
}

.sps-warn svg[b-2gdop55jgf] { flex-shrink: 0; color: var(--corp-warn-strong); }

/* ── Tarjeta principal ─────────────────────────────────────── */
.sps-hero[b-2gdop55jgf] {
    text-align: center;
    padding: 2rem 1.5rem 1.25rem;
}

.sps-ico[b-2gdop55jgf] { color: var(--corp-text-muted); }

.sps-title[b-2gdop55jgf] {
    font-size: var(--corp-fs-lg);
    color: var(--corp-navy);
}

.sps-sub[b-2gdop55jgf] {
    margin: 0;
    max-width: 34rem;
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-sub);
    line-height: 1.55;
}

.sps-sub strong[b-2gdop55jgf] { color: var(--corp-text-main); font-size: inherit; }

/* ── Pipeline de fases ─────────────────────────────────────── */
.sps-pipe[b-2gdop55jgf] {
    display: flex;
    align-items: stretch;
    justify-content: center;
    padding: 0.75rem 1rem;
    border-top: 1px solid var(--corp-border);
    background: var(--corp-bg-head);
}

.sps-pipe-step[b-2gdop55jgf] {
    flex: 1 1 0;
    min-width: 0;
    max-width: 8rem;
    position: relative;
    padding: 0.2rem 0.25rem;
    text-align: center;
}

/* Línea que une los pasos: se dibuja detrás del punto, nunca antes del primero. */
.sps-pipe-step[b-2gdop55jgf]::before {
    content: "";
    position: absolute;
    top: 8px;
    right: 50%;
    left: -50%;
    height: 1px;
    background: var(--corp-border);
}

.sps-pipe-step:first-child[b-2gdop55jgf]::before { display: none; }

.sps-pipe-dot[b-2gdop55jgf] {
    position: relative;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    margin: 4px auto 0.4rem;
    background: #cbd5e1;
    box-shadow: 0 0 0 3px var(--corp-bg-head);
}

.sps-pipe-step.on .sps-pipe-dot[b-2gdop55jgf] { background: var(--corp-accent); }

.sps-pipe-n[b-2gdop55jgf] {
    font-family: var(--corp-mono);
    font-size: var(--corp-fs-lg);
    font-weight: 800;
    color: #cbd5e1;
    line-height: 1.1;
}

.sps-pipe-step.on .sps-pipe-n[b-2gdop55jgf] { color: var(--corp-navy); }

.sps-pipe-lbl[b-2gdop55jgf] {
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    color: var(--corp-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-top: 0.15rem;
    overflow-wrap: anywhere;
}

.sps-pipe-step.on .sps-pipe-lbl[b-2gdop55jgf] { color: var(--corp-text-head); }

/* ── Aviso de "ni un proyecto en ninguna fase" ─────────────── */
.sps-none[b-2gdop55jgf] {
    padding: 0.5rem 1rem;
    border-top: 1px solid var(--corp-border-row);
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-sub);
    text-align: center;
}

/* ── Acciones ──────────────────────────────────────────────── */
.sps-actions[b-2gdop55jgf] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    justify-content: center;
    padding: 0.6rem 1rem;
    border-top: 1px solid var(--corp-border);
}

.sps-actions .corp-btn[b-2gdop55jgf] { text-decoration: none; }

@media (max-width: 640px) {
    .sps-hero[b-2gdop55jgf] { padding: 1.5rem 1rem 1rem; }
    .sps-pipe[b-2gdop55jgf] { padding: 0.6rem 0.25rem; }
    .sps-actions .corp-btn[b-2gdop55jgf] { min-height: 36px; flex: 1 1 100%; justify-content: center; }
}
/* /Components/Pages/PM/ComSolicitudCompraFicha.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   Solicitud de compra desde la ficha de costo · CSS aislado.
   Mismo lenguaje que el Escritorio de Compras: cabecera clara (sin franja
   navy), etiquetas en versalitas, cifras en monoespaciada, un solo botón
   primario. La tabla es de captura: se estiliza a mano como .corp-tbl pero
   sin el recorte de una línea, y desplaza dentro de su marco en el teléfono.
   ══════════════════════════════════════════════════════════════════════ */

/* ── Velo y diálogo ── */
.scf-backdrop[b-3ir0413a1f] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1100;
    padding: 1rem;
}

.scf-modal[b-3ir0413a1f] {
    background: var(--corp-bg-card);
    border-radius: var(--corp-radius);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
    width: 100%;
    max-width: 820px;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.scf-header[b-3ir0413a1f] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    padding: 0.55rem 0.85rem;
    border-bottom: 1px solid var(--corp-border);
    flex-shrink: 0;
}

.scf-title[b-3ir0413a1f] { font-size: var(--corp-fs-md); font-weight: 700; color: var(--corp-navy); }

.scf-btn-close[b-3ir0413a1f] {
    background: transparent;
    border: 1px solid transparent;
    color: var(--corp-text-sub);
    width: 1.75rem;
    height: 1.75rem;
    border-radius: var(--corp-radius);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: var(--corp-fs-sm);
}
.scf-btn-close:hover[b-3ir0413a1f] { background: var(--corp-bg-head); border-color: var(--corp-border); color: var(--corp-navy); }

/* ── Cuerpo ── */
.scf-body[b-3ir0413a1f] {
    flex: 1;
    overflow-y: auto;
    padding: 0.75rem 0.85rem;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
}

.scf-form-row[b-3ir0413a1f] { display: flex; gap: 0.65rem; flex-wrap: wrap; }
.scf-field[b-3ir0413a1f] { display: flex; flex-direction: column; gap: 0.2rem; flex: 1; min-width: 200px; }
.scf-field-sm[b-3ir0413a1f] { flex: 0 0 180px; min-width: 150px; }

.scf-label[b-3ir0413a1f] {
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    color: var(--corp-text-head);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.scf-required[b-3ir0413a1f] { color: var(--corp-bad-strong); }

.scf-input[b-3ir0413a1f] {
    padding: 0.32rem 0.55rem;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    font-size: var(--corp-fs-body);
    color: #1e293b;
    background: #fff;
    width: 100%;
    box-sizing: border-box;
}
.scf-input:focus[b-3ir0413a1f] { outline: none; border-color: var(--corp-accent); box-shadow: 0 0 0 2px rgba(21, 101, 192, 0.12); }

/* ── Tabla de captura ── */
.scf-table-wrapper[b-3ir0413a1f] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    scrollbar-width: thin;
    scrollbar-color: #cbd5e1 transparent;
}

.scf-table[b-3ir0413a1f] { width: 100%; min-width: 600px; border-collapse: collapse; font-size: var(--corp-fs-sm); }

.scf-table thead th[b-3ir0413a1f] {
    background: var(--corp-bg-head);
    padding: 0.38rem 0.55rem;
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    color: var(--corp-text-head);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    text-align: left;
    border-bottom: 2px solid var(--corp-border);
    white-space: nowrap;
    position: sticky;
    top: 0;
    z-index: 1;
}

.scf-table tbody td[b-3ir0413a1f] {
    padding: 0.3rem 0.55rem;
    border-bottom: 1px solid var(--corp-border-row);
    color: var(--corp-text-main);
    vertical-align: middle;
}
.scf-table tbody tr:last-child td[b-3ir0413a1f] { border-bottom: none; }
.scf-table tbody tr:hover[b-3ir0413a1f] { background: #fafbfc; }

.scf-table .center[b-3ir0413a1f] { text-align: center; }
.scf-table .right[b-3ir0413a1f] { text-align: right; font-family: var(--corp-mono); white-space: nowrap; }

.scf-name[b-3ir0413a1f] { font-weight: 600; color: #1e293b; }
.scf-mut[b-3ir0413a1f] { color: var(--corp-text-muted); }

/* Todas las filas llegan con déficit (el origen solo manda las que faltan): va en
   negrita navy y no en rojo, para no pintar la tabla entera de alarma. */
.scf-deficit[b-3ir0413a1f] { color: var(--corp-navy); font-weight: 700; }
.scf-ok[b-3ir0413a1f] { color: var(--corp-text-main); }
.scf-missing[b-3ir0413a1f] { color: var(--corp-text-muted); }

.scf-row-zero td[b-3ir0413a1f] { opacity: 0.5; }

.scf-qty-input[b-3ir0413a1f] {
    width: 100%;
    min-width: 5.5rem;
    padding: 0.28rem 0.45rem;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    font-size: var(--corp-fs-body);
    font-family: var(--corp-mono);
    text-align: right;
    color: #1e293b;
    background: #fff;
    box-sizing: border-box;
}
.scf-qty-input:focus[b-3ir0413a1f] { outline: none; border-color: var(--corp-accent); box-shadow: 0 0 0 2px rgba(21, 101, 192, 0.12); }

.scf-btn-remove[b-3ir0413a1f] {
    background: #fff;
    border: 1px solid #cbd5e1;
    color: var(--corp-text-sub);
    width: 1.75rem;
    height: 1.75rem;
    border-radius: var(--corp-radius);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: var(--corp-fs-sm);
    padding: 0;
}
.scf-btn-remove:hover[b-3ir0413a1f] { background: #fef2f2; border-color: #fca5a5; color: var(--corp-bad); }

/* ── Aviso: blanco con filete de color ── */
.scf-alert[b-3ir0413a1f] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.4rem 0.75rem;
    border-radius: var(--corp-radius);
    font-size: var(--corp-fs-sm);
    background: #fff;
    border: 1px solid #fecaca;
    border-left: 3px solid var(--corp-bad-strong);
    color: var(--corp-bad);
    flex-shrink: 0;
}

/* ── Pie ── */
.scf-footer[b-3ir0413a1f] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding: 0.5rem 0.85rem;
    border-top: 1px solid var(--corp-border);
    background: var(--corp-bg-head);
    flex-shrink: 0;
}

.scf-footer-info[b-3ir0413a1f] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }
.scf-footer-actions[b-3ir0413a1f] { display: flex; gap: 0.4rem; margin-left: auto; }

/* ── Teléfono: los campos se apilan y los controles crecen al tamaño del dedo ── */
@media (max-width: 640px) {
    .scf-backdrop[b-3ir0413a1f] { padding: 0.5rem; }
    .scf-modal[b-3ir0413a1f] { max-height: calc(100vh - 1rem); }
    .scf-body[b-3ir0413a1f] { padding: 0.6rem; }
    .scf-field[b-3ir0413a1f], .scf-field-sm[b-3ir0413a1f] { flex: 1 1 100%; min-width: 0; }
    .scf-input[b-3ir0413a1f] { min-height: 2.25rem; }
    .scf-qty-input[b-3ir0413a1f] { min-height: 2.25rem; }
    .scf-btn-remove[b-3ir0413a1f] { width: 2.25rem; height: 2.25rem; }
    .scf-btn-close[b-3ir0413a1f] { width: 2.25rem; height: 2.25rem; }
    .scf-footer[b-3ir0413a1f] { padding: 0.5rem 0.6rem; }
    .scf-btn[b-3ir0413a1f] { min-height: 2.25rem; }
}
/* /Components/Pages/PM/EvaluacionesProyecto.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   Evaluaciones del proyecto · CSS aislado.
   Mismo lenguaje que el Escritorio de Compras: blanco y gris, estado con un
   punto de color + texto gris, cifras en monoespaciada, encabezados de tarjeta
   en gris claro y nada de franjas oscuras dentro del contenido. El único
   fondo oscuro es el visor de fotos, que es un visor y no una sección.
   ══════════════════════════════════════════════════════════════════════ */
.evp-root[b-kiu4redbz5] {
    color: var(--corp-text-main);
    font-size: var(--corp-fs-body);
    padding: 0.75rem 1rem 1rem;
    min-width: 0;
}

.evp-empty[b-kiu4redbz5] { text-align: center; }

/* ── Punto de estado ── */
.evp-dot[b-kiu4redbz5] { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; display: inline-block; background: #cbd5e1; }
.evp-dot.ok[b-kiu4redbz5]   { background: var(--corp-ok-strong); }
.evp-dot.warn[b-kiu4redbz5] { background: var(--corp-warn-strong); }
.evp-dot.bad[b-kiu4redbz5]  { background: var(--corp-bad-strong); }
.evp-st[b-kiu4redbz5] { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }
.evp-st.warn[b-kiu4redbz5] { color: var(--corp-warn); }
.evp-st.bad[b-kiu4redbz5]  { color: var(--corp-bad); }
.evp-st.mut[b-kiu4redbz5]  { color: var(--corp-text-muted); }

/* ── Layout ── */
.evp-layout[b-kiu4redbz5] {
    display: grid;
    grid-template-columns: minmax(240px, 300px) minmax(0, 1fr);
    gap: 0.65rem;
    align-items: start;
}

/* ── Lista lateral ── */
.evp-side[b-kiu4redbz5] {
    background: #fff;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    max-height: 74vh;
    min-width: 0;
}

.evp-side-tools[b-kiu4redbz5] {
    padding: 0.5rem;
    border-bottom: 1px solid var(--corp-border);
    background: var(--corp-bg-head);
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.evp-search[b-kiu4redbz5] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    background: #fff;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    padding: 0.25rem 0.5rem;
    color: var(--corp-text-muted);
}
.evp-search:focus-within[b-kiu4redbz5] { border-color: var(--corp-accent); }
.evp-search input[b-kiu4redbz5] {
    border: 0;
    outline: 0;
    background: transparent;
    flex: 1;
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-main);
    min-width: 0;
}

.evp-chips[b-kiu4redbz5] { display: flex; flex-wrap: wrap; gap: 0.3rem; }

.evp-list[b-kiu4redbz5] { overflow-y: auto; flex: 1; scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent; }

.evp-item[b-kiu4redbz5] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    width: 100%;
    text-align: left;
    background: #fff;
    border: 0;
    border-bottom: 1px solid var(--corp-border-row);
    border-left: 3px solid transparent;
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    transition: background 0.1s;
}
.evp-item:hover[b-kiu4redbz5] { background: #fafbfc; }
.evp-item.active[b-kiu4redbz5] { background: #eff6ff; border-left-color: var(--corp-accent); }

.evp-item-top[b-kiu4redbz5] { display: flex; align-items: center; justify-content: space-between; gap: 0.35rem; }
.evp-item-id[b-kiu4redbz5] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-navy); }

.evp-item-title[b-kiu4redbz5] {
    font-size: var(--corp-fs-body);
    font-weight: 600;
    color: #1e293b;
    line-height: 1.25;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

.evp-item-meta[b-kiu4redbz5] { display: flex; flex-wrap: wrap; gap: 0.2rem; color: var(--corp-text-muted); font-size: var(--corp-fs-xs); margin-bottom: 0.25rem; }

/* Conformidad en el azul neutro; solo una evaluación observada pinta la barra de rojo. */
.evp-item-progress[b-kiu4redbz5] { height: 4px; border-radius: 99px; background: var(--corp-border-row); overflow: hidden; }
.evp-item-progress-fill[b-kiu4redbz5] { height: 100%; border-radius: 99px; background: var(--corp-accent); transition: width 0.2s; }
.evp-item-progress-fill.c-ok[b-kiu4redbz5],
.evp-item-progress-fill.c-pend[b-kiu4redbz5] { background: var(--corp-accent); }
.evp-item-progress-fill.c-bad[b-kiu4redbz5] { background: var(--corp-bad-strong); }
.evp-item-progress-fill.c-neutral[b-kiu4redbz5] { background: #cbd5e1; }

.evp-item-foot[b-kiu4redbz5] { display: flex; align-items: center; justify-content: space-between; gap: 0.35rem; margin-top: 0.2rem; color: var(--corp-text-sub); font-size: var(--corp-fs-xs); font-family: var(--corp-mono); }
.evp-item-photos[b-kiu4redbz5] { display: inline-flex; align-items: center; gap: 0.2rem; color: var(--corp-text-sub); }

/* ── Detalle ── */
.evp-main[b-kiu4redbz5] { display: flex; flex-direction: column; gap: 0.6rem; min-width: 0; }

/* Encabezado claro: identidad sobre el gris, sin franja navy. */
.evp-head[b-kiu4redbz5] { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; }
.evp-head-code[b-kiu4redbz5] { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
.evp-head-num[b-kiu4redbz5] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-navy); background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0 0.4rem; line-height: 1.6; }
.evp-head-title[b-kiu4redbz5] { font-size: var(--corp-fs-xl); font-weight: 700; color: #0f172a; line-height: 1.2; overflow-wrap: anywhere; }
.evp-head-sub[b-kiu4redbz5] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }

/* Cajas de cifras: color solo si hay no conformes (rojo) o pendientes (ámbar). */
.evp-kpis[b-kiu4redbz5] { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); gap: 0.5rem; }
.evp-kpi[b-kiu4redbz5] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.45rem 0.65rem; min-width: 0; }
.evp-kpi .k[b-kiu4redbz5] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.evp-kpi .v[b-kiu4redbz5] { font-family: var(--corp-mono); font-size: var(--corp-fs-lg); font-weight: 800; color: #0f172a; line-height: 1.2; margin-top: 0.15rem; white-space: nowrap; }
.evp-kpi .v.zero[b-kiu4redbz5] { color: #cbd5e1; }
.evp-kpi .v.warn[b-kiu4redbz5] { color: var(--corp-warn); }
.evp-kpi .v.bad[b-kiu4redbz5]  { color: var(--corp-bad); }
.evp-prog[b-kiu4redbz5] { height: 4px; border-radius: 99px; background: var(--corp-border-row); overflow: hidden; margin-top: 0.3rem; }
.evp-prog > span[b-kiu4redbz5] { display: block; height: 100%; border-radius: 99px; background: var(--corp-accent); }

/* Observaciones generales: blanco con filete, se leen enteras. */
.evp-note[b-kiu4redbz5] {
    background: #fff;
    border: 1px solid var(--corp-border);
    border-left: 3px solid var(--corp-accent);
    border-radius: var(--corp-radius);
    padding: 0.45rem 0.75rem;
}
.evp-note strong[b-kiu4redbz5] { display: block; font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); margin-bottom: 0.15rem; }
.evp-note p[b-kiu4redbz5] { margin: 0; font-size: var(--corp-fs-sm); line-height: 1.4; color: var(--corp-text-main); white-space: pre-line; }

/* ── Tarjetas ── */
.evp-card[b-kiu4redbz5] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); overflow: hidden; min-width: 0; }
.evp-card-empty[b-kiu4redbz5] { min-height: 280px; display: flex; align-items: center; justify-content: center; }

.evp-card-head[b-kiu4redbz5] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.4rem 0.75rem;
    border-bottom: 1px solid var(--corp-border);
    background: var(--corp-bg-head);
}
.evp-card-title[b-kiu4redbz5] { display: inline-flex; align-items: center; gap: 0.4rem; font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head); min-width: 0; }
.evp-card-ico[b-kiu4redbz5] { font-size: var(--corp-fs-body); }
.evp-card-count[b-kiu4redbz5] { margin-left: auto; background: #eef2f6; color: var(--corp-text-sub); font-size: var(--corp-fs-xs); padding: 0 6px; border-radius: 9px; white-space: nowrap; }
.evp-card-pad[b-kiu4redbz5] { padding: 0.6rem 0.75rem; }

/* ── Tabla de parámetros: desplaza dentro de la tarjeta en pantallas angostas ── */
.evp-tblwrap[b-kiu4redbz5] { overflow-x: auto; scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent; }
.evp-tbl[b-kiu4redbz5] { min-width: 40rem; }
.evp-tbl tbody tr:last-child td[b-kiu4redbz5] { border-bottom: 0; }
/* Parámetro no conforme: filete rojo a la izquierda en vez de teñir la fila. */
.evp-tbl tbody tr.evp-row-bad > td:first-child[b-kiu4redbz5] { box-shadow: inset 3px 0 0 var(--corp-bad-strong); }

.evp-param[b-kiu4redbz5] { font-weight: 600; color: #1e293b; }
.evp-param-desc[b-kiu4redbz5] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); line-height: 1.25; margin-top: 0.1rem; }
.evp-criterio[b-kiu4redbz5] { color: var(--corp-text-sub); }
.evp-valor[b-kiu4redbz5] { font-weight: 600; font-family: var(--corp-mono); }
.evp-obs[b-kiu4redbz5] { min-width: 12rem; color: var(--corp-text-head); }

/* ── Miniaturas ── */
.evp-thumbs[b-kiu4redbz5] { display: inline-flex; align-items: center; gap: 0.2rem; }
.evp-thumb[b-kiu4redbz5] {
    width: 26px;
    height: 26px;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    overflow: hidden;
    padding: 0;
    background: #fff;
    cursor: pointer;
    transition: border-color 0.1s;
}
.evp-thumb:hover[b-kiu4redbz5] { border-color: var(--corp-accent); }
.evp-thumb img[b-kiu4redbz5] { width: 100%; height: 100%; object-fit: cover; display: block; }
.evp-more[b-kiu4redbz5] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-text-sub); }

/* ── Galería ── */
.evp-gallery[b-kiu4redbz5] { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 0.5rem; }
.evp-photo[b-kiu4redbz5] {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    cursor: pointer;
    overflow: hidden;
    padding: 0;
    text-align: left;
    transition: border-color 0.1s;
    min-width: 0;
}
.evp-photo:hover[b-kiu4redbz5] { border-color: var(--corp-accent); }
.evp-photo-img[b-kiu4redbz5] { display: block; height: 90px; background: var(--corp-bg-head); }
.evp-photo-img img[b-kiu4redbz5] { width: 100%; height: 100%; object-fit: cover; display: block; }
.evp-photo-info[b-kiu4redbz5] { padding: 0.35rem 0.45rem 0.45rem; border-top: 1px solid var(--corp-border-row); }
.evp-photo-name[b-kiu4redbz5] { display: block; font-size: var(--corp-fs-xs); font-weight: 600; color: #1e293b; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.evp-photo-info small[b-kiu4redbz5] { display: block; font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; }

/* ── Visor de fotos ── */
.evp-lightbox[b-kiu4redbz5] {
    position: fixed;
    inset: 0;
    background: rgba(8, 15, 26, 0.8);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1200;
    padding: 2rem;
}

.evp-lightbox-close[b-kiu4redbz5] {
    position: absolute;
    top: 1rem;
    right: 1.2rem;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: var(--corp-radius);
    border: 1px solid rgba(255, 255, 255, 0.2);
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
    font-size: var(--corp-fs-lg);
    cursor: pointer;
}
.evp-lightbox-close:hover[b-kiu4redbz5] { background: rgba(255, 255, 255, 0.16); }

.evp-lightbox-inner[b-kiu4redbz5] {
    max-width: 90vw;
    max-height: 88vh;
    display: flex;
    flex-direction: column;
    background: var(--corp-bg-toolbar);
    border-radius: var(--corp-radius);
    overflow: hidden;
}
.evp-lightbox-inner img[b-kiu4redbz5] { max-width: 90vw; max-height: 78vh; object-fit: contain; display: block; }

.evp-lightbox-bar[b-kiu4redbz5] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.45rem 0.75rem;
    color: var(--corp-text-white);
    font-size: var(--corp-fs-sm);
}
.evp-lightbox-name[b-kiu4redbz5] { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── Pantallas angostas: la lista pasa arriba con su propio desplazamiento ── */
@media (max-width: 1000px) {
    .evp-layout[b-kiu4redbz5] { grid-template-columns: minmax(0, 1fr); }
    .evp-side[b-kiu4redbz5] { max-height: none; }
    .evp-list[b-kiu4redbz5] { max-height: 360px; }
}

/* ── Teléfono: sin márgenes de más, cifras de a dos y miniaturas al tamaño del dedo ── */
@media (max-width: 640px) {
    .evp-root[b-kiu4redbz5] { padding: 0; }
    .evp-kpis[b-kiu4redbz5] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .evp-search[b-kiu4redbz5] { min-height: 2.25rem; }
    .evp-chips .corp-chip[b-kiu4redbz5] { min-height: 2rem; }
    .evp-list[b-kiu4redbz5] { max-height: 45vh; }
    .evp-thumb[b-kiu4redbz5] { width: 2.1rem; height: 2.1rem; }
    .evp-lightbox[b-kiu4redbz5] { padding: 0.5rem; }
    .evp-lightbox-close[b-kiu4redbz5] { top: 0.5rem; right: 0.5rem; }
    .evp-lightbox-inner[b-kiu4redbz5] { max-width: 100%; }
    .evp-lightbox-inner img[b-kiu4redbz5] { max-width: 100%; }
}
/* /Components/Pages/PM/PagDetalleProjectManager.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   PagDetalleProjectManager · CSS aislado del contenedor del proyecto del PM.
   Mismo lenguaje que el Escritorio de Compras: blanco y gris para todo, el
   color aparece SOLO donde algo pide atención (entrega vencida, calendario
   agotado, saldo negativo), cifras en monoespaciada, etiquetas en versalitas
   pequeñas y bordes de 1px. La única barra navy es la toolbar.
   Aquí vive solo el contenedor (toolbar, cabecera de pestañas, Información
   General, balance y botones flotantes): cada pestaña trae su propio estilo.
   ══════════════════════════════════════════════════════════════════════ */

/* ── Punto de estado + texto gris ── */
.pmd-dot[b-ae06ink6o9] { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; display: inline-block; background: var(--corp-text-muted); }
.pmd-dot.info[b-ae06ink6o9] { background: var(--corp-accent); }
.pmd-dot.warn[b-ae06ink6o9] { background: var(--corp-warn-strong); }
.pmd-dot.bad[b-ae06ink6o9]  { background: var(--corp-bad-strong); }
.pmd-dot.ok[b-ae06ink6o9]   { background: var(--corp-ok-strong); }
.pmd-dot.mut[b-ae06ink6o9]  { background: #cbd5e1; }
.pmd-st[b-ae06ink6o9] { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }
.pmd-st.warn[b-ae06ink6o9] { color: var(--corp-warn); }
.pmd-st.bad[b-ae06ink6o9]  { color: var(--corp-bad); }
.pmd-mono[b-ae06ink6o9] { font-family: var(--corp-mono); white-space: nowrap; }

/* ── Toolbar: cifras en tenue sobre la barra navy (como el avance de Gerencia) ── */
.pmd-tb-actions[b-ae06ink6o9] { min-width: 0; }
.pmd-tstats[b-ae06ink6o9] { display: flex; align-items: center; min-width: 0; overflow-x: auto; scrollbar-width: none; }
.pmd-tstats[b-ae06ink6o9]::-webkit-scrollbar { height: 0; }
.pmd-tstat[b-ae06ink6o9] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0 0.7rem;
    border: 0;
    border-right: 1px solid var(--corp-border-dark);
    background: transparent;
    font: inherit;
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-muted);
    white-space: nowrap;
    line-height: 1.6;
}
.pmd-tstat:first-child[b-ae06ink6o9] { padding-left: 0; }
.pmd-tstat:last-child[b-ae06ink6o9]  { border-right: 0; }
.pmd-tstat .l[b-ae06ink6o9] { font-weight: 500; }
.pmd-tstat b[b-ae06ink6o9] { font-family: var(--corp-mono); font-weight: 700; color: #fff; }
.pmd-tstat.click[b-ae06ink6o9] { cursor: pointer; border-radius: var(--corp-radius); }
.pmd-tstat.click:hover[b-ae06ink6o9] { background: rgba(255,255,255,.08); }
.pmd-tstat.click:hover b[b-ae06ink6o9] { text-decoration: underline; }

/* Botones de solo icono de la toolbar: cuadrados y con el mismo alto que las cifras. */
.pmd-tb-ico[b-ae06ink6o9] { width: 30px; height: 30px; padding: 0; justify-content: center; }

/* ── El contenido de la pestaña llega al pie ──────────────────────────────────
   El SfTab medía por su contenido (.corp-main da `flex: 0 0 auto` a sus hijos), así
   que cada pestaña tenía que adivinar el alto de la ventana con un `calc(100vh - 280px)`.
   Con la cuenta pasada de la raya la tarjeta quedaba corta y debajo se veía una banda
   de gris. Aquí se encadena el alto de verdad —tab → .e-content → panel— y la pestaña
   ya no adivina nada: le basta con estirarse.
   El panel se mide con `min-height` y no con `height`: una pestaña más alta que la
   ventana crece igual que siempre y desplaza dentro del .e-content, no se achata. ── */
.pmd-main[b-ae06ink6o9]  .pmd-tabs { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-tab-header { flex-shrink: 0; }
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-content { flex: 1 1 auto; min-height: 0; overflow: auto; }
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-content > .e-item { height: 100%; }
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-content > .e-item > .corp-tab-card { min-height: 100%; }
/* .flush envuelve un sub-módulo suelto: en columna flex ese hijo puede estirarse hasta
   el pie (es lo que hace .epy en Estimaciones). Las que NO son .flush siguen en flujo
   normal, que es como está armada Información General. */
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-content > .e-item > .corp-tab-card.flush { display: flex; flex-direction: column; }

/* ── Cabecera del SfTab con la forma de .corp-tabs: blanca, subrayada, sin píldoras.
   Va por la clase del propio SfTab (CssClass) y con hijo directo, para no alcanzar los
   SfTab que traen las pestañas por dentro. La cabecera conserva el alto del tema: con
   el alto ya encadenado arriba, el panel toma lo que queda sin tener que contarla. ── */
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-tab-header {
    background: #fff;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius) var(--corp-radius) 0 0;
}
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-tab-header::before { border-color: transparent; }
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-tab-header .e-toolbar-items { background: transparent; }
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-tab-header .e-toolbar-item .e-tab-wrap { padding: 0 0.9rem; border-radius: 0; background: transparent; }
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-tab-header .e-toolbar-item .e-tab-wrap .e-tab-text {
    font-family: var(--corp-font);
    font-size: var(--corp-fs-sm);
    font-weight: 600;
    color: var(--corp-text-sub);
    text-transform: none;
}
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-tab-header .e-toolbar-item:hover .e-tab-wrap .e-tab-text { color: var(--corp-navy); }
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-tab-header .e-toolbar-item.e-active .e-tab-wrap { background: transparent; box-shadow: none; }
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-tab-header .e-toolbar-item.e-active .e-tab-wrap .e-tab-text { color: var(--corp-accent); font-weight: 600; }
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-tab-header .e-toolbar-item.e-active::before { background-color: var(--corp-accent); height: 2px; left: 0; right: 0; }
.pmd-main[b-ae06ink6o9]  .pmd-tabs > .e-tab-header .e-indicator { background: var(--corp-accent); }

/* ══ Información General ══ */
/* Sobre gris: las cajas blancas se distinguen como en el detalle de una orden. */
.corp-tab-card.pmd-info[b-ae06ink6o9] {
    background: var(--corp-bg-body);
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

/* Aviso: blanco con filete de color a la izquierda; el tono sale de GetAlertRibbon. */
.pmd-alert[b-ae06ink6o9] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.45rem 0.75rem;
    background: #fff;
    border: 1px solid var(--corp-border);
    border-left: 3px solid var(--corp-text-muted);
    border-radius: var(--corp-radius);
    font-size: var(--corp-fs-sm);
    color: var(--corp-text-main);
    line-height: 1.45;
}
.pmd-alert-ico[b-ae06ink6o9] { display: inline-flex; flex-shrink: 0; color: var(--corp-text-muted); }
.pmd-alert.info[b-ae06ink6o9] { border-left-color: var(--corp-accent); }
.pmd-alert.info .pmd-alert-ico[b-ae06ink6o9] { color: var(--corp-accent); }
.pmd-alert.warn[b-ae06ink6o9] { border-color: #fde68a; border-left-color: var(--corp-warn-strong); color: var(--corp-warn); }
.pmd-alert.warn .pmd-alert-ico[b-ae06ink6o9] { color: var(--corp-warn-strong); }
.pmd-alert.bad[b-ae06ink6o9]  { border-color: #fecaca; border-left-color: var(--corp-bad-strong); color: var(--corp-bad); font-weight: 600; }
.pmd-alert.bad .pmd-alert-ico[b-ae06ink6o9] { color: var(--corp-bad-strong); }

/* Cajas de cifras */
.pmd-kpis[b-ae06ink6o9] { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(9rem, 100%), 1fr)); gap: 0.5rem; }
.pmd-kpi[b-ae06ink6o9] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.45rem 0.65rem; min-width: 0; }
.pmd-kpi .k[b-ae06ink6o9] { display: flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pmd-kpi .v[b-ae06ink6o9] { font-family: var(--corp-mono); font-size: var(--corp-fs-lg); font-weight: 800; color: #0f172a; line-height: 1.25; margin-top: 0.15rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pmd-kpi .v.txt[b-ae06ink6o9] { font-family: var(--corp-font); font-size: var(--corp-fs-md); font-weight: 700; }
.pmd-kpi .v.bad[b-ae06ink6o9] { color: var(--corp-bad); }
.pmd-kpi .s[b-ae06ink6o9] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Caja blanca con encabezado gris (misma pieza que los grupos del Escritorio) */
/* flex-shrink:0: dentro del cuerpo del modal (flex column que desplaza) una caja con overflow
   hidden se encogería y cortaría la tabla en vez de dejar que el cuerpo desplace. */
.pmd-box[b-ae06ink6o9] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); overflow: hidden; min-width: 0; flex-shrink: 0; }
.pmd-box-h[b-ae06ink6o9] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.35rem 0.75rem;
    min-height: 2rem;
    background: var(--corp-bg-head);
    border-bottom: 1px solid var(--corp-border);
    font-size: var(--corp-fs-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--corp-text-head);
    flex-wrap: wrap;
}
.pmd-box-h .end[b-ae06ink6o9] { margin-left: auto; font-family: var(--corp-mono); font-size: var(--corp-fs-sm); color: var(--corp-navy); letter-spacing: 0; }
.pmd-box-h .end.warn[b-ae06ink6o9] { color: var(--corp-warn); }
.pmd-box-h .end.bad[b-ae06ink6o9]  { color: var(--corp-bad); }
.pmd-box-h-end[b-ae06ink6o9] { margin-left: auto; display: inline-flex; align-items: center; gap: 0.5rem; text-transform: none; letter-spacing: 0; font-weight: 400; }
.pmd-pad[b-ae06ink6o9] { padding: 0.55rem 0.75rem; }
.pmd-empty-row[b-ae06ink6o9] { display: flex; align-items: center; gap: 0.45rem; padding: 0.6rem 0.75rem; font-size: var(--corp-fs-sm); color: var(--corp-text-muted); }
.pmd-spin-sm[b-ae06ink6o9] { width: 14px; height: 14px; }

/* Línea de tiempo: barra neutra salvo con el calendario casi agotado */
.pmd-bar[b-ae06ink6o9] { height: 6px; background: var(--corp-border-row); border-radius: 99px; overflow: hidden; }
.pmd-bar > span[b-ae06ink6o9] { display: block; height: 100%; border-radius: 99px; background: var(--corp-accent); transition: width 0.4s ease; }
.pmd-bar > span.warn[b-ae06ink6o9] { background: var(--corp-warn-strong); }
.pmd-bar > span.bad[b-ae06ink6o9]  { background: var(--corp-bad-strong); }
.pmd-bar-dates[b-ae06ink6o9] { display: flex; justify-content: space-between; gap: 0.5rem; margin-top: 0.35rem; font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }

/* Dos columnas: datos + equipo a la izquierda, archivos + ubicación a la derecha */
.pmd-cols[b-ae06ink6o9] { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 0.6rem; align-items: start; }
.pmd-stack[b-ae06ink6o9] { display: flex; flex-direction: column; gap: 0.6rem; min-width: 0; }
@media (max-width: 900px) {
    .pmd-cols[b-ae06ink6o9] { grid-template-columns: minmax(0, 1fr); }
}

/* Filas clave / valor */
.pmd-row[b-ae06ink6o9] { display: flex; justify-content: space-between; align-items: baseline; gap: 0.75rem; padding: 0.35rem 0.75rem; border-bottom: 1px solid var(--corp-border-row); font-size: var(--corp-fs-sm); }
.pmd-row:last-child[b-ae06ink6o9] { border-bottom: 0; }
.pmd-row .k[b-ae06ink6o9] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); flex-shrink: 0; }
.pmd-row .v[b-ae06ink6o9] { color: #1e293b; font-weight: 600; text-align: right; min-width: 0; overflow-wrap: anywhere; }
.pmd-row .v.mono[b-ae06ink6o9] { font-family: var(--corp-mono); }

/* Equipo de trabajo */
.pmd-team[b-ae06ink6o9] { display: flex; align-items: center; gap: 0.6rem; padding: 0.4rem 0.75rem; border-bottom: 1px solid var(--corp-border-row); }
.pmd-team:last-child[b-ae06ink6o9] { border-bottom: 0; }
.pmd-av[b-ae06ink6o9] {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--corp-bg-head);
    border: 1px solid var(--corp-border);
    color: var(--corp-navy);
    font-size: var(--corp-fs-xs);
    font-weight: 700;
}
.pmd-team-b[b-ae06ink6o9] { flex: 1; min-width: 0; }
.pmd-team-name[b-ae06ink6o9] { font-size: var(--corp-fs-body); font-weight: 600; color: #1e293b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pmd-team-meta[b-ae06ink6o9] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); overflow-wrap: anywhere; }
.pmd-wa[b-ae06ink6o9] {
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius);
    background: #fff;
    color: var(--corp-ok-strong);
    text-decoration: none;
    transition: border-color 0.12s, background 0.12s;
}
.pmd-wa:hover[b-ae06ink6o9] { border-color: var(--corp-ok-strong); background: var(--corp-bg-head); }
.pmd-wa.disabled[b-ae06ink6o9] { color: #cbd5e1; pointer-events: none; cursor: not-allowed; }

/* Archivos y ubicación */
.pmd-files[b-ae06ink6o9] { padding: 0.5rem; }
.pmd-map[b-ae06ink6o9] { width: 100%; height: 260px; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); overflow: hidden; background: var(--corp-bg-head); }
@media (min-width: 1400px) {
    .pmd-map[b-ae06ink6o9] { height: 320px; }
}

/* Clima en sitio */
.pmd-wx-upd[b-ae06ink6o9] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); white-space: nowrap; }
.pmd-wx[b-ae06ink6o9] { padding: 0.6rem 0.75rem; display: flex; flex-direction: column; gap: 0.6rem; }
.pmd-wx-main[b-ae06ink6o9] { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; }
.pmd-wx-icon[b-ae06ink6o9] { width: 48px; height: 48px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; background: var(--corp-bg-head); border: 1px solid var(--corp-border); border-radius: 50%; }
.pmd-wx-t[b-ae06ink6o9] { flex: 1 1 12rem; min-width: 0; }
.pmd-wx-temp[b-ae06ink6o9] { font-family: var(--corp-mono); font-size: var(--corp-fs-xl); font-weight: 800; color: #0f172a; line-height: 1.1; }
.pmd-wx-desc[b-ae06ink6o9] { font-size: var(--corp-fs-body); font-weight: 600; color: var(--corp-text-main); margin-top: 0.1rem; }
.pmd-wx-feels[b-ae06ink6o9] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; }
.pmd-wx-grid[b-ae06ink6o9] { display: grid; grid-template-columns: repeat(auto-fit, minmax(6.5rem, 1fr)); gap: 0.4rem; }
@media (min-width: 1200px) {
    .pmd-wx-grid[b-ae06ink6o9] { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
.pmd-wx-stat[b-ae06ink6o9] { display: flex; flex-direction: column; align-items: center; gap: 0.1rem; padding: 0.45rem 0.4rem; background: var(--corp-bg-head); border: 1px solid var(--corp-border-row); border-radius: var(--corp-radius); color: var(--corp-text-muted); text-align: center; min-width: 0; }
.pmd-wx-stat .v[b-ae06ink6o9] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; color: #1e293b; white-space: nowrap; }
.pmd-wx-stat .k[b-ae06ink6o9] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); }

/* Estados vacíos de las pestañas sin presupuesto */
.pmd-empty-ico[b-ae06ink6o9] { color: var(--corp-text-muted); }

/* ══ Balance del proyecto (modal) ══ */
.pmd-bal-title[b-ae06ink6o9] { display: inline-flex; align-items: center; gap: 0.4rem; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pmd-bal-kpis[b-ae06ink6o9] { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(11rem, 100%), 1fr)); gap: 0.5rem; }
.pmd-bal .pmd-kpi .v[b-ae06ink6o9] { font-size: var(--corp-fs-md); }
.pmd-sec[b-ae06ink6o9] { display: flex; align-items: center; gap: 0.45rem; padding: 0.4rem 0.75rem; background: var(--corp-bg-head); border-bottom: 1px solid var(--corp-border); font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head); }
.pmd-sec:not(:first-child)[b-ae06ink6o9] { border-top: 1px solid var(--corp-border); }
.pmd-sec .n[b-ae06ink6o9] { margin-left: auto; background: #eef2f6; color: var(--corp-text-sub); font-family: var(--corp-mono); font-size: var(--corp-fs-xs); padding: 0 6px; border-radius: 9px; }
.pmd-tblwrap[b-ae06ink6o9] { overflow-x: auto; }
.pmd-tf-lbl[b-ae06ink6o9] { text-align: right; font-size: var(--corp-fs-xs); text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); }

/* ══ Botones flotantes de chat y notas ══ */
.pmd-fab[b-ae06ink6o9] {
    position: fixed;
    right: 1.5rem;
    z-index: 1000;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: var(--corp-fs-md);
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.18);
    transition: background 0.12s, border-color 0.12s;
}
.pmd-chat-fab[b-ae06ink6o9] { bottom: 1.5rem; background: var(--corp-accent); border: 1px solid var(--corp-accent); color: #fff; }
.pmd-chat-fab:hover[b-ae06ink6o9] { background: #0d4a96; border-color: #0d4a96; }
.pmd-notas-fab[b-ae06ink6o9] { bottom: 4.2rem; background: #fff; border: 1px solid var(--corp-border); color: var(--corp-navy); }
.pmd-notas-fab:hover[b-ae06ink6o9] { border-color: var(--corp-accent); color: var(--corp-accent); }

.pmd-chat-panel[b-ae06ink6o9],
.pmd-notas-panel[b-ae06ink6o9] {
    position: fixed;
    z-index: 999;
    border-radius: var(--corp-radius);
    overflow: hidden;
    box-shadow: 0 8px 30px rgba(15, 23, 42, 0.18);
    border: 1px solid var(--corp-border);
    background: #fff;
    display: flex;
    flex-direction: column;
}
.pmd-chat-panel[b-ae06ink6o9] {
    bottom: 4.4rem;
    right: 1.5rem;
    width: 380px;
    height: 520px;
    max-width: calc(100vw - 2rem);
    max-height: calc(100vh - 6rem);
}
.pmd-notas-panel[b-ae06ink6o9] {
    bottom: 1.5rem;
    right: 5.5rem;
    width: 560px;
    height: 640px;
    max-width: calc(100vw - 7rem);
    max-height: calc(100vh - 3rem);
}

/* ══ Teléfono ══ */
@media (max-width: 640px) {
    /* El nombre queda en su renglón y cliente · fechas bajan al siguiente, en vez de
       empujar la toolbar más allá del ancho de la pantalla. */
    .pmd-tb-title[b-ae06ink6o9] { flex-wrap: wrap; row-gap: 0.1rem; }
    .pmd-tb-title .corp-toolbar-sub[b-ae06ink6o9] { margin-left: 0; flex-basis: 100%; white-space: normal; }
    .pmd-tb-actions[b-ae06ink6o9] { width: 100%; flex-wrap: nowrap; }
    .pmd-tstats[b-ae06ink6o9] { flex: 1 1 auto; }
    .pmd-tb-ico[b-ae06ink6o9] { width: 36px; height: 36px; flex-shrink: 0; }
    .pmd-wa[b-ae06ink6o9] { width: 36px; height: 36px; }
    .pmd-row[b-ae06ink6o9] { flex-direction: column; align-items: flex-start; gap: 0.1rem; }
    .pmd-row .v[b-ae06ink6o9] { text-align: left; }
    .pmd-map[b-ae06ink6o9] { height: 220px; }
    .pmd-chat-panel[b-ae06ink6o9] { right: 1rem; }
    .pmd-notas-panel[b-ae06ink6o9] { right: 1rem; max-width: calc(100vw - 2rem); }
}
/* /Components/Pages/PM/PagEmpleadosTemporales.razor.rz.scp.css */
/* ══ Personal temporal · maestro-detalle con el lenguaje del Escritorio ══
   CSS aislado: solo alcanza el marcado de esta página, no el de CompContratosEmpleado
   ni el de CompUsuariosAlmacen, que tienen sus propios estilos. */

/* ── Lista lateral: nombre del proyecto y conteo de contratos en gris ── */
.pet-it-top[b-oc87iof49p] { display: flex; align-items: baseline; gap: 0.5rem; min-width: 0; }
.pet-it-name[b-oc87iof49p] { flex: 1; min-width: 0; font-size: var(--corp-fs-body); font-weight: 600; color: #1e293b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pet-it.active .pet-it-name[b-oc87iof49p] { color: var(--corp-navy); }
.pet-it-n[b-oc87iof49p] { flex-shrink: 0; font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-text-sub); background: #eef2f6; padding: 0 6px; border-radius: 9px; }
.pet-it-meta[b-oc87iof49p] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); margin-top: 0.1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ── Encabezado claro del proyecto sobre el gris ── */
.pet-head[b-oc87iof49p] { display: flex; align-items: flex-end; gap: 0.75rem; flex-wrap: wrap; flex-shrink: 0; }
.pet-head-id[b-oc87iof49p] { flex: 1 1 18rem; min-width: 0; display: flex; flex-direction: column; gap: 0.15rem; }
.pet-head-title[b-oc87iof49p] { font-size: var(--corp-fs-xl); font-weight: 700; color: #0f172a; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pet-head-sub[b-oc87iof49p] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pet-head-sub b[b-oc87iof49p] { font-family: var(--corp-mono); color: var(--corp-text-sub); }
.pet-head-actions[b-oc87iof49p] { display: flex; align-items: center; gap: 0.35rem; flex-wrap: wrap; justify-content: flex-end; }

/* ── Teléfono: la acción baja bajo el título ── */
@media (max-width: 640px) {
    .pet-head[b-oc87iof49p] { align-items: stretch; }
    .pet-head-actions[b-oc87iof49p] { justify-content: flex-start; }
}
/* /Components/Pages/SolicitudCompra/CompContratosEmpleado.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   Contratos de empleados del proyecto · CSS aislado del componente.
   Mismo lenguaje que el Escritorio de Compras: blanco y gris para todo, el
   color aparece SOLO donde algo pide acción (pago pendiente, requisito
   obligatorio sin cumplir, fuera de rango), cifras en monoespaciada,
   etiquetas en versalitas pequeñas y bordes de 1px. Lo genérico (tablas,
   segmentado, pestañas, info-grid, vacíos) viene de corporate.css.
   El PM lo usa desde el teléfono: al final, controles de alto táctil.
   ══════════════════════════════════════════════════════════════════════ */

.ce-container[b-50tskrthkp] {
    padding: 0.6rem 0.75rem; box-sizing: border-box;
    display: flex; flex-direction: column; gap: 0.55rem; flex: 1; min-height: 0;
    overflow-y: auto;
}

/* ── Encabezado: título y contador, vistas y acciones (claro, sin franja) ── */
.ce-head[b-50tskrthkp] { display: flex; align-items: center; gap: 0.5rem 0.75rem; flex-wrap: wrap; }
.ce-head-id[b-50tskrthkp] { display: flex; align-items: center; gap: 0.45rem; min-width: 0; }
.ce-head-title[b-50tskrthkp] { font-size: var(--corp-fs-md); font-weight: 700; color: #0f172a; white-space: nowrap; }
.ce-n[b-50tskrthkp] {
    background: #eef2f6; color: var(--corp-text-sub); font-family: var(--corp-mono);
    font-size: var(--corp-fs-xs); font-weight: 700; padding: 0 6px; border-radius: 9px; white-space: nowrap;
}
/* Seis vistas no caben a 400 px: el segmentado desplaza en vez de salirse de la página. */
.ce-views[b-50tskrthkp] { max-width: 100%; overflow-x: auto; scrollbar-width: none; background: #fff; }
.ce-views[b-50tskrthkp]::-webkit-scrollbar { height: 0; }
.ce-views .corp-seg-btn[b-50tskrthkp] { white-space: nowrap; flex-shrink: 0; padding: 0.28rem 0.65rem; }
.ce-head-actions[b-50tskrthkp] { margin-left: auto; display: flex; gap: 0.4rem; flex-wrap: wrap; }

/* ── Aviso de la acción recién hecha: blanco con filete de color ── */
.ce-alert[b-50tskrthkp] {
    display: flex; align-items: center; justify-content: space-between; gap: 0.5rem;
    padding: 0.4rem 0.75rem; background: #fff; border: 1px solid var(--corp-border); border-left-width: 3px;
    border-radius: var(--corp-radius); font-size: var(--corp-fs-sm);
}
.ce-alert.ok[b-50tskrthkp] { border-color: #bbf7d0; border-left-color: var(--corp-ok-strong); color: var(--corp-ok); }
.ce-alert-x[b-50tskrthkp] {
    background: none; border: 0; color: var(--corp-text-muted); cursor: pointer; flex-shrink: 0;
    font-size: var(--corp-fs-sm); padding: 0.15rem 0.35rem; line-height: 1; border-radius: var(--corp-radius);
}
.ce-alert-x:hover[b-50tskrthkp] { background: var(--corp-bg-head); color: var(--corp-text-main); }

/* Avisos dentro de formularios y diálogos: uno por problema. */
.ce-note[b-50tskrthkp] {
    padding: 0.4rem 0.6rem; background: #fff; border: 1px solid var(--corp-border); border-left-width: 3px;
    border-radius: var(--corp-radius); font-size: var(--corp-fs-sm); color: var(--corp-text-sub); line-height: 1.45;
}
.ce-note.ok[b-50tskrthkp]   { border-color: #bbf7d0; border-left-color: var(--corp-ok-strong); }
.ce-note.warn[b-50tskrthkp] { border-color: #fde68a; border-left-color: var(--corp-warn-strong); color: var(--corp-warn); }
.ce-note.bad[b-50tskrthkp]  { border-color: #fecaca; border-left-color: var(--corp-bad-strong); color: var(--corp-bad); }
.ce-note a[b-50tskrthkp] { color: inherit; font-weight: 700; text-decoration: underline; }
.ce-form-section > .ce-note[b-50tskrthkp], .ce-form-aux > .ce-note[b-50tskrthkp], .ce-dialog-scroll > .ce-note[b-50tskrthkp] { margin-top: 0.35rem; }
.ce-note-line[b-50tskrthkp] { margin-top: 0.3rem; font-size: var(--corp-fs-sm); font-weight: 600; color: var(--corp-text-sub); }
.ce-note-line.ok[b-50tskrthkp] { color: var(--corp-ok); }

/* ── Punto de estado + texto gris ── */
.ce-dot[b-50tskrthkp] { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; display: inline-block; background: var(--corp-text-muted); }
.ce-dot.info[b-50tskrthkp] { background: var(--corp-accent); }
.ce-dot.warn[b-50tskrthkp] { background: var(--corp-warn-strong); }
.ce-dot.bad[b-50tskrthkp]  { background: var(--corp-bad-strong); }
.ce-dot.ok[b-50tskrthkp]   { background: var(--corp-ok-strong); }
.ce-dot.mut[b-50tskrthkp]  { background: #cbd5e1; }
.ce-st[b-50tskrthkp] { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }
.ce-st.warn[b-50tskrthkp] { color: var(--corp-warn); }
.ce-st.mut[b-50tskrthkp]  { color: var(--corp-text-muted); }
.ce-date[b-50tskrthkp] { font-size: var(--corp-fs-sm); color: var(--corp-text-sub); white-space: nowrap; margin-right: 0.4rem; }
.ce-mono[b-50tskrthkp] { font-family: var(--corp-mono); }

/* ── Tablas de las vistas: la tabla desplaza por dentro con su encabezado fijo ── */
.ce-scroll[b-50tskrthkp] {
    flex: 1 1 auto; min-height: 14rem; overflow: auto; background: #fff;
    border: 1px solid var(--corp-border); border-radius: var(--corp-radius);
    scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent;
}
.ce-scroll[b-50tskrthkp]::-webkit-scrollbar { width: 6px; height: 6px; }
.ce-scroll[b-50tskrthkp]::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }
/* La celda .r es monoespaciada: el subtítulo (paquete, categoría) vuelve a la letra normal. */
.ce-tbl td.r .corp-c-sub[b-50tskrthkp] { font-family: var(--corp-font); }
.ce-tbl tfoot td[b-50tskrthkp] { font-size: var(--corp-fs-sm); }
.ce-tbl tfoot td.r[b-50tskrthkp] { text-align: right; color: var(--corp-navy); }
.ce-foot-lbl[b-50tskrthkp] { color: var(--corp-text-head); }
.ce-zero[b-50tskrthkp] { color: #cbd5e1; }
.ce-chev[b-50tskrthkp] { color: var(--corp-text-muted); }
.ce-hist[b-50tskrthkp] { display: inline-flex; align-items: center; gap: 0.3rem; font-size: var(--corp-fs-sm); font-weight: 600; color: var(--corp-accent); white-space: nowrap; }
.ce-hist i[b-50tskrthkp] { font-size: var(--corp-fs-xs); transition: transform 0.15s; }
.ce-tbl tbody tr:hover .ce-hist i[b-50tskrthkp] { transform: translateX(2px); }

/* ── Checklist documental por contrato ── */
.ce-checklist[b-50tskrthkp] { display: flex; align-items: center; gap: 0.4rem; }
.ce-checklist.clickable[b-50tskrthkp] {
    cursor: pointer; border-radius: var(--corp-radius); padding: 0.25rem 0.4rem; margin: -0.25rem -0.4rem;
    transition: background 0.15s;
}
.ce-checklist.clickable:hover[b-50tskrthkp] { background: var(--corp-bg-head); }
.ce-checklist.mut[b-50tskrthkp] { display: inline-flex; color: #cbd5e1; }
.ce-checklist-bar[b-50tskrthkp] { display: flex; flex-wrap: wrap; gap: 3px; max-width: 130px; }
.ce-chk-dot[b-50tskrthkp] { display: inline-block; width: 8px; height: 8px; border-radius: 2px; flex-shrink: 0; cursor: default; }
.ce-chk-dot.ok[b-50tskrthkp]      { background: var(--corp-ok-strong); }
.ce-chk-dot.fail[b-50tskrthkp]    { background: var(--corp-bad-strong); }
.ce-chk-dot.pending[b-50tskrthkp] { background: #e2e8f0; border: 1px solid #cbd5e1; }
.ce-chk-count[b-50tskrthkp] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; white-space: nowrap; color: var(--corp-text-sub); }
.ce-chk-count.all-ok[b-50tskrthkp]  { color: var(--corp-ok); }
.ce-chk-count.none-ok[b-50tskrthkp] { color: var(--corp-bad); }
.ce-chk-count.partial[b-50tskrthkp] { color: var(--corp-warn); }

/* ── Menú flotante de acciones por contrato ── */
.ce-actions-backdrop[b-50tskrthkp] { position: fixed; inset: 0; z-index: 40; background: transparent; }
.ce-actions-menu[b-50tskrthkp] { position: relative; display: inline-block; }
.ce-actions-trigger[b-50tskrthkp] { padding: 0.2rem 0.45rem; }
.ce-actions-menu.open .ce-actions-trigger[b-50tskrthkp] { background: var(--corp-bg-head); border-color: #94a3b8; }
.ce-actions-dropdown[b-50tskrthkp] {
    position: fixed; z-index: 60;
    min-width: 200px; background: #fff; border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius); box-shadow: 0 8px 24px rgba(15, 23, 42, 0.14);
    padding: 0.3rem; display: flex; flex-direction: column; gap: 1px;
}
.ce-actions-item[b-50tskrthkp] {
    display: flex; align-items: center; gap: 0.5rem; width: 100%;
    background: none; border: none; cursor: pointer; text-align: left;
    padding: 0.4rem 0.6rem; border-radius: var(--corp-radius); font-size: var(--corp-fs-body);
    font-weight: 500; color: var(--corp-text-main); transition: background 0.12s;
}
.ce-actions-item:hover[b-50tskrthkp] { background: var(--corp-bg-head); }
.ce-actions-item i[b-50tskrthkp] { font-size: var(--corp-fs-md); color: var(--corp-text-sub); width: 1rem; text-align: center; }
.ce-actions-item.danger[b-50tskrthkp] { color: var(--corp-bad); }
.ce-actions-item.danger i[b-50tskrthkp] { color: var(--corp-bad-strong); }
.ce-actions-item.danger:hover[b-50tskrthkp] { background: #fef2f2; }

/* ── Asistencia (personal ejecutor de OT) ── */
.ce-asis .ce-asis-emp[b-50tskrthkp] { min-width: 170px; }
.ce-asis th.ce-asis-day[b-50tskrthkp] { text-align: center; padding: 0.35rem 0.4rem; min-width: 54px; }
.ce-asis th.ce-asis-day.weekend[b-50tskrthkp] { background: #eef2f6; }
.ce-asis-day-num[b-50tskrthkp] { display: block; font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-text-main); letter-spacing: 0; }
.ce-asis-day-name[b-50tskrthkp] { display: block; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-muted); text-transform: capitalize; letter-spacing: 0; }
.ce-asis td.ce-asis-cell[b-50tskrthkp] { text-align: center; font-family: var(--corp-mono); font-weight: 600; padding: 0.38rem 0.4rem; }
.ce-asis-cell.full[b-50tskrthkp]    { color: #0f172a; }
.ce-asis-cell.partial[b-50tskrthkp] { color: var(--corp-warn); }
.ce-asis-cell.weekend[b-50tskrthkp] { background: #f8fafc; }
.ce-asis .ce-asis-tot[b-50tskrthkp] { text-align: center; border-left: 2px solid var(--corp-border); background: var(--corp-bg-head); font-weight: 700; color: var(--corp-navy); }
.ce-asis .ce-asis-cell.empty[b-50tskrthkp] { color: #cbd5e1; }

/* ── Paquetes salariales (consulta) ── */
.ce-tblbar[b-50tskrthkp] { flex-shrink: 0; }
.ce-pq-det td[b-50tskrthkp] { background: var(--corp-bg-head); }
.ce-pq-grid[b-50tskrthkp] { display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; padding: 0.3rem 0; }
.ce-pq-col[b-50tskrthkp] { flex: 1 1 280px; min-width: 0; }
.ce-pq-row[b-50tskrthkp] { display: flex; justify-content: space-between; gap: 1rem; font-size: var(--corp-fs-sm); padding: 0.18rem 0; border-bottom: 1px solid var(--corp-border-row); }
.ce-pq-row:last-child[b-50tskrthkp] { border-bottom: 0; }

/* ── Drawers (historial de pagos y detalle de contrato) ──
   Mecanismo propio: siempre en el DOM y visibles por la clase .visible. El velo cerrado
   queda con visibility:hidden, así que no intercepta clics. */
.ce-pago-drawer-overlay[b-50tskrthkp],
.ce-det-drawer-overlay[b-50tskrthkp] {
    position: fixed; inset: 0; background: rgba(15, 23, 42, 0.32);
    opacity: 0; visibility: hidden; transition: opacity 0.25s, visibility 0.25s;
    z-index: 1200;
}
.ce-pago-drawer-overlay.visible[b-50tskrthkp],
.ce-det-drawer-overlay.visible[b-50tskrthkp] { opacity: 1; visibility: visible; }
.ce-pago-drawer[b-50tskrthkp],
.ce-det-drawer[b-50tskrthkp] {
    position: fixed; top: 0; right: 0; height: 100%;
    background: #fff; border-left: 1px solid var(--corp-border); box-shadow: -6px 0 24px rgba(15, 23, 42, 0.14);
    transform: translateX(100%); transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1201; display: flex; flex-direction: column;
}
.ce-pago-drawer[b-50tskrthkp] { width: 440px; max-width: 92vw; }
.ce-det-drawer[b-50tskrthkp] { width: 620px; max-width: 95vw; }
.ce-pago-drawer.visible[b-50tskrthkp],
.ce-det-drawer.visible[b-50tskrthkp] { transform: translateX(0); }

.ce-dw-head[b-50tskrthkp] {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 0.5rem;
    padding: 0.75rem 1rem; background: #fff; border-bottom: 1px solid var(--corp-border); flex-shrink: 0;
}
.ce-dw-id[b-50tskrthkp] { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 0.15rem; }
.ce-dw-num[b-50tskrthkp] {
    font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-navy);
    background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0 0.4rem; line-height: 1.6;
}
.ce-dw-title[b-50tskrthkp] { font-size: var(--corp-fs-xl); font-weight: 700; color: #0f172a; line-height: 1.2; overflow-wrap: anywhere; }
.ce-dw-sub[b-50tskrthkp] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }
.ce-dw-close[b-50tskrthkp] { flex-shrink: 0; }

.ce-kpis[b-50tskrthkp] {
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.5rem;
    padding: 0.6rem 1rem; background: var(--corp-bg-body); border-bottom: 1px solid var(--corp-border); flex-shrink: 0;
}
.ce-kpi[b-50tskrthkp] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.4rem 0.6rem; min-width: 0; }
.ce-kpi .k[b-50tskrthkp] {
    font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em;
    color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ce-kpi .v[b-50tskrthkp] {
    font-family: var(--corp-mono); font-size: var(--corp-fs-lg); font-weight: 800; color: #0f172a; line-height: 1.2;
    margin-top: 0.15rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ce-kpi .v small[b-50tskrthkp] { font-size: var(--corp-fs-sm); font-weight: 600; color: var(--corp-text-muted); }
.ce-dw-body[b-50tskrthkp] { flex: 1; min-height: 0; overflow-y: auto; padding: 0.75rem 1rem; background: var(--corp-bg-body); }

/* Lista blanca con filas (pagos, actividades, documentos). */
.ce-list[b-50tskrthkp] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); overflow: hidden; }
.ce-list.cap[b-50tskrthkp] { max-height: 280px; overflow-y: auto; }
.ce-list .corp-tbl tbody tr:last-child td[b-50tskrthkp] { border-bottom: 0; }

/* Fila con bloque de fecha (la agenda del Escritorio) */
.ce-ag[b-50tskrthkp] { display: flex; gap: 0.6rem; align-items: flex-start; padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--corp-border-row); }
.ce-ag:last-child[b-50tskrthkp] { border-bottom: 0; }
.ce-ag-d[b-50tskrthkp] {
    width: 44px; text-align: center; border-radius: var(--corp-radius); background: var(--corp-bg-head);
    border: 1px solid var(--corp-border); padding: 0.15rem 0; flex-shrink: 0;
}
.ce-ag-d b[b-50tskrthkp] { display: block; font-size: var(--corp-fs-lg); color: var(--corp-navy); line-height: 1.1; }
.ce-ag-d span[b-50tskrthkp] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); text-transform: uppercase; font-weight: 700; }
.ce-ag-d.warn[b-50tskrthkp] { background: var(--corp-warn-bg); border-color: #fde68a; }
.ce-ag-d.warn b[b-50tskrthkp] { color: var(--corp-warn); }
.ce-ag-t[b-50tskrthkp] { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 0.15rem; }
.ce-ag-top[b-50tskrthkp] { display: flex; align-items: center; gap: 0.2rem 0.4rem; flex-wrap: wrap; }
.ce-ag-meta[b-50tskrthkp] { display: flex; flex-wrap: wrap; gap: 0.15rem 0.75rem; font-size: var(--corp-fs-xs); color: var(--corp-text-sub); }
.ce-ag-meta span[b-50tskrthkp] { display: inline-flex; align-items: center; gap: 0.25rem; }
.ce-ag-m[b-50tskrthkp] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-navy); white-space: nowrap; }
.ce-quote[b-50tskrthkp] {
    font-size: var(--corp-fs-xs); color: var(--corp-text-main); background: var(--corp-bg-head);
    border-left: 2px solid var(--corp-border); padding: 0.25rem 0.5rem; border-radius: 0 var(--corp-radius) var(--corp-radius) 0; margin-top: 0.2rem;
}

.ce-det-drawer-tabs[b-50tskrthkp] { flex-shrink: 0; padding: 0 0.5rem; }
.ce-det-drawer-body[b-50tskrthkp] {
    flex: 1; overflow-y: auto; min-height: 0; padding: 0.75rem 1rem;
    scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent;
}
.ce-det-drawer-body[b-50tskrthkp]::-webkit-scrollbar { width: 6px; }
.ce-det-drawer-body[b-50tskrthkp]::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }
.ce-det-drawer-body .corp-drawer-sec-title:not(:first-child)[b-50tskrthkp] { margin-top: 0.75rem; }
.ce-det-drawer-footer[b-50tskrthkp] {
    flex-shrink: 0; display: flex; justify-content: flex-end;
    padding: 0.5rem 1rem; background: var(--corp-bg-head); border-top: 1px solid var(--corp-border);
}
.ce-info-extra[b-50tskrthkp] { font-size: var(--corp-fs-sm); color: var(--corp-text-sub); font-weight: 500; }

/* ── Diálogos ── */
.ce-dlg-head[b-50tskrthkp] { display: flex; align-items: center; gap: 0.5rem; }
.ce-dlg-ico[b-50tskrthkp] { color: var(--corp-text-muted); }
.ce-dlg-stack[b-50tskrthkp] { display: flex; flex-direction: column; gap: 0.65rem; }
.ce-dlg-col[b-50tskrthkp] { display: flex; flex-direction: column; gap: 0.65rem; height: 100%; }
.ce-dlg-text[b-50tskrthkp] { margin: 0; font-size: var(--corp-fs-md); color: var(--corp-text-main); line-height: 1.45; }

.ce-dialog-body[b-50tskrthkp] { display: flex; flex-direction: column; height: 100%; overflow: hidden; }
.ce-dialog-scroll[b-50tskrthkp] {
    flex: 1; overflow-y: auto; min-height: 0;
    scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent;
}
.ce-dialog-scroll[b-50tskrthkp]::-webkit-scrollbar { width: 5px; }
.ce-dialog-scroll[b-50tskrthkp]::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }
.ce-dialog-footer[b-50tskrthkp] { flex-shrink: 0; }
.ce-dialog-actions[b-50tskrthkp] {
    display: flex; justify-content: flex-end; gap: 0.5rem; flex-wrap: wrap;
    margin-top: 0.85rem; padding-top: 0.65rem; border-top: 1px solid var(--corp-border);
}
.ce-dlg-stack > .ce-dialog-actions[b-50tskrthkp] { margin-top: 0.2rem; }

.ce-form-row[b-50tskrthkp] { display: flex; gap: 0.5rem 0.75rem; flex-wrap: wrap; }
.ce-form-row > div[b-50tskrthkp] { flex: 1; min-width: 180px; }
.ce-form-section[b-50tskrthkp] { margin-bottom: 0.85rem; }
.ce-dlg-stack .ce-form-section[b-50tskrthkp] { margin-bottom: 0; }
.ce-form-aux[b-50tskrthkp] { margin-top: 0.35rem; }
.ce-link[b-50tskrthkp] { background: none; border: 0; padding: 0; color: var(--corp-accent); font-size: var(--corp-fs-sm); font-weight: 600; cursor: pointer; }
.ce-link:hover[b-50tskrthkp] { text-decoration: underline; }
.ce-num[b-50tskrthkp] { text-align: right; font-family: var(--corp-mono); }
.ce-req-mark[b-50tskrthkp] { color: var(--corp-bad-strong); }
.ce-dlg-tabs[b-50tskrthkp] { margin-top: 0.25rem; }
.ce-det-add-row[b-50tskrthkp] {
    display: flex; gap: 0.5rem; align-items: flex-end;
    background: var(--corp-bg-head); border: 1px solid var(--corp-border); border-radius: var(--corp-radius);
    padding: 0.55rem; margin: 0.55rem 0;
}
.ce-det-add-row .field[b-50tskrthkp] { flex: 1; min-width: 0; }

/* Documentos del contrato */
.ce-upload[b-50tskrthkp] {
    display: flex; flex-direction: column; gap: 0.5rem; padding: 0.6rem 0.7rem;
    background: var(--corp-bg-head); border: 1px solid var(--corp-border); border-radius: var(--corp-radius);
}
.ce-upload-lbl[b-50tskrthkp] { font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--corp-text-head); }
.ce-upload-area[b-50tskrthkp] {
    position: relative; border: 1px dashed #cbd5e1; background: #fff; border-radius: var(--corp-radius);
    padding: 0.5rem; text-align: center; color: var(--corp-text-muted); font-size: var(--corp-fs-sm);
    cursor: pointer; transition: border-color 0.15s, color 0.15s;
}
.ce-upload-area:hover[b-50tskrthkp] { border-color: var(--corp-accent); color: var(--corp-accent); }
.ce-upload-foot[b-50tskrthkp] { display: flex; justify-content: flex-end; }
.ce-file-list[b-50tskrthkp] { display: flex; flex-wrap: wrap; gap: 0.35rem; margin-top: 0.35rem; }
.ce-file-item[b-50tskrthkp] {
    display: flex; align-items: center; gap: 0.3rem; background: #fff;
    border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.2rem 0.5rem;
    font-size: var(--corp-fs-sm); color: var(--corp-text-main);
}
.ce-file-remove[b-50tskrthkp] {
    background: none; border: none; color: var(--corp-bad-strong); cursor: pointer;
    font-size: var(--corp-fs-sm); padding: 0 0.15rem; line-height: 1;
}
.ce-doc-list[b-50tskrthkp] { max-height: 45vh; overflow-y: auto; }
.ce-doc[b-50tskrthkp] { display: flex; align-items: center; gap: 0.5rem; padding: 0.45rem 0.75rem; border-bottom: 1px solid var(--corp-border-row); }
.ce-doc:last-child[b-50tskrthkp] { border-bottom: 0; }
.ce-doc-ico[b-50tskrthkp] { color: var(--corp-text-muted); font-size: var(--corp-fs-lg); flex-shrink: 0; }
.ce-doc-b[b-50tskrthkp] { flex: 1; min-width: 0; }
.ce-doc-t[b-50tskrthkp] { font-weight: 600; font-size: var(--corp-fs-body); color: #1e293b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ce-doc-m[b-50tskrthkp] { display: flex; flex-wrap: wrap; gap: 0 0.4rem; font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }
.ce-doc-a[b-50tskrthkp] { display: flex; gap: 0.3rem; flex-shrink: 0; }

/* Bitácora / incidencias */
.ce-inc-add[b-50tskrthkp] { display: flex; align-items: flex-end; gap: 0.5rem; flex-wrap: wrap; flex-shrink: 0; }
.ce-inc-fecha[b-50tskrthkp] { flex: 0 0 140px; }
.ce-inc-com[b-50tskrthkp] { flex: 1 1 10rem; min-width: 0; }
.ce-grow[b-50tskrthkp] { flex: 1; min-height: 0; overflow-y: auto; }

/* Registrar salida */
.ce-check[b-50tskrthkp] { display: flex; align-items: center; gap: 0.4rem; font-size: var(--corp-fs-body); color: var(--corp-text-main); cursor: pointer; }

/* Checklist documental */
.ce-chk-sum[b-50tskrthkp] { font-size: var(--corp-fs-sm); color: var(--corp-text-sub); }
.ce-chk-sum b[b-50tskrthkp] { font-family: var(--corp-mono); color: #0f172a; }
.ce-chk-sum b.warn[b-50tskrthkp] { color: var(--corp-warn); }
.ce-req-list[b-50tskrthkp] { display: flex; flex-direction: column; gap: 0.45rem; max-height: 55vh; overflow-y: auto; }
.ce-req[b-50tskrthkp] {
    background: #fff; border: 1px solid var(--corp-border); border-left-width: 3px;
    border-radius: var(--corp-radius); padding: 0.5rem 0.7rem;
}
.ce-req.ok[b-50tskrthkp]  { border-left-color: var(--corp-ok-strong); }
.ce-req.bad[b-50tskrthkp] { border-left-color: var(--corp-bad-strong); }
.ce-req-top[b-50tskrthkp] { display: flex; align-items: center; gap: 0.35rem 0.5rem; flex-wrap: wrap; }
.ce-req-check[b-50tskrthkp] { accent-color: var(--corp-accent); width: 1rem; height: 1rem; }
.ce-req-ico[b-50tskrthkp] { color: var(--corp-text-muted); font-size: var(--corp-fs-lg); }
.ce-req-ico.ok[b-50tskrthkp] { color: var(--corp-ok-strong); }
.ce-req-name[b-50tskrthkp] { font-weight: 600; font-size: var(--corp-fs-md); color: #1e293b; }
.ce-req-desc[b-50tskrthkp] { font-size: var(--corp-fs-sm); color: var(--corp-text-sub); margin: 0.25rem 0 0 1.5rem; }
.ce-req-obs[b-50tskrthkp] { margin: 0.35rem 0 0 1.5rem; }
.ce-chk-docs[b-50tskrthkp] { margin: 0.4rem 0 0 1.5rem; display: flex; flex-direction: column; gap: 0.25rem; }
.ce-chk-doc-row[b-50tskrthkp] {
    display: flex; align-items: center; gap: 0.4rem;
    background: var(--corp-bg-head); border: 1px solid var(--corp-border); border-radius: var(--corp-radius);
    padding: 0.2rem 0.45rem; font-size: var(--corp-fs-sm); color: var(--corp-text-main);
}
.ce-chk-doc-row > i[b-50tskrthkp] { color: var(--corp-text-muted); flex-shrink: 0; }
.ce-chk-doc-name[b-50tskrthkp] { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ce-chk-doc-btn[b-50tskrthkp] {
    background: none; border: none; cursor: pointer; color: var(--corp-text-sub);
    padding: 0.1rem 0.25rem; border-radius: var(--corp-radius); font-size: var(--corp-fs-sm); transition: background 0.15s, color 0.15s;
}
.ce-chk-doc-btn:hover[b-50tskrthkp] { background: #e2e8f0; color: var(--corp-accent); }
.ce-chk-doc-btn.danger:hover[b-50tskrthkp] { background: #fef2f2; color: var(--corp-bad-strong); }
.ce-chk-doc-upload[b-50tskrthkp] {
    display: inline-flex; align-items: center; gap: 0.3rem; align-self: flex-start;
    cursor: pointer; font-size: var(--corp-fs-sm); font-weight: 600; color: var(--corp-accent);
    border: 1px dashed #cbd5e1; border-radius: var(--corp-radius); padding: 0.25rem 0.5rem;
    background: #fff; transition: border-color 0.15s;
}
.ce-chk-doc-upload:hover[b-50tskrthkp] { border-color: var(--corp-accent); }
.ce-chk-doc-upload.loading[b-50tskrthkp] { color: var(--corp-text-muted); border-color: #e2e8f0; background: var(--corp-bg-head); cursor: default; }
.ce-spin-sm[b-50tskrthkp] { width: 12px; height: 12px; }

/* ── Teléfono (~400 px): la página no se desplaza en horizontal y los
   controles quedan de alto táctil (~36 px); las tablas desplazan en su caja. ── */
@media (max-width: 640px) {
    .ce-container[b-50tskrthkp] { padding: 0.5rem; }
    .ce-views[b-50tskrthkp] { width: 100%; }
    .ce-head-actions[b-50tskrthkp] { margin-left: 0; width: 100%; }
    .ce-head-actions .corp-btn[b-50tskrthkp] { flex: 1 1 auto; justify-content: center; }
    .ce-head-actions .corp-btn[b-50tskrthkp],
    .ce-views .corp-seg-btn[b-50tskrthkp],
    .ce-actions-trigger[b-50tskrthkp],
    .ce-actions-item[b-50tskrthkp],
    .ce-tblbar .corp-search-lite[b-50tskrthkp],
    .ce-dw-close[b-50tskrthkp],
    .ce-req-obs .corp-input[b-50tskrthkp] { min-height: 2.25rem; }
    .ce-ag-d[b-50tskrthkp] { width: 40px; }
    .ce-kpis[b-50tskrthkp] { padding: 0.5rem 0.75rem; gap: 0.35rem; }
    .ce-kpi .v[b-50tskrthkp] { font-size: var(--corp-fs-md); }
    .ce-det-drawer .corp-info-grid.two[b-50tskrthkp] { grid-template-columns: 1fr; }
    .ce-det-drawer .corp-info-grid.two .corp-info-cell[b-50tskrthkp] { border-right: none; }
    .ce-form-row > div[b-50tskrthkp] { min-width: 100%; }
    .ce-inc-fecha[b-50tskrthkp] { flex: 1 1 100%; }
    .ce-req-desc[b-50tskrthkp], .ce-req-obs[b-50tskrthkp], .ce-chk-docs[b-50tskrthkp] { margin-left: 0; }
    .ce-req-check[b-50tskrthkp] { width: 1.15rem; height: 1.15rem; }
}
/* /Components/Pages/SolicitudCompra/CompContratosEmpleadoLote.razor.rz.scp.css */
/* Alta múltiple de contratos · mismo lenguaje que el Escritorio de Compras: blanco y gris,
   el color solo donde una fila pide corrección, cifras en monoespaciada y bordes de 1px.
   El diálogo vive fuera del árbol del componente, así que no se usan variables del
   wrapper: solo los tokens globales de corporate.css (ver memoria SfDialog). */
.cl-head[b-kaa5m2ugpx] { display: flex; align-items: center; gap: 0.5rem; }
.cl-head .n[b-kaa5m2ugpx] {
    background: #eef2f6; color: var(--corp-text-sub); font-family: var(--corp-mono);
    padding: 0 0.45rem; border-radius: 9px; font-size: var(--corp-fs-xs); font-weight: 700;
}

.cl-body[b-kaa5m2ugpx] { display: flex; flex-direction: column; gap: 0.5rem; height: 100%; min-height: 0; }

.cl-toolbar[b-kaa5m2ugpx] { display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; flex-shrink: 0; }
.cl-spacer[b-kaa5m2ugpx] { flex: 1; }
.cl-hint[b-kaa5m2ugpx] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); line-height: 1.4; flex-shrink: 0; }
.cl-hint b[b-kaa5m2ugpx] { color: var(--corp-text-sub); }
/* Botón «Pegar desde Excel» con el panel abierto: presionado, sin color propio. */
.cl-active[b-kaa5m2ugpx] { background: var(--corp-bg-head); border-color: var(--corp-accent); }

.cl-paste[b-kaa5m2ugpx] {
    border: 1px solid var(--corp-border); background: var(--corp-bg-head); border-radius: var(--corp-radius);
    padding: 0.55rem 0.7rem; display: flex; flex-direction: column; gap: 0.45rem; flex-shrink: 0;
}
.cl-paste-head[b-kaa5m2ugpx] { display: flex; flex-direction: column; gap: 0.2rem; font-size: var(--corp-fs-sm); font-weight: 600; color: var(--corp-text-head); }
.cl-paste-cols[b-kaa5m2ugpx] { font-size: var(--corp-fs-xs); font-weight: 400; color: var(--corp-text-sub); }
.cl-paste-area[b-kaa5m2ugpx] {
    width: 100%; box-sizing: border-box; min-height: 110px; resize: vertical;
    font-family: var(--corp-mono); font-size: var(--corp-fs-sm); color: var(--corp-text-main); background: #fff;
    border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.45rem 0.55rem; white-space: pre;
}
.cl-paste-area:focus[b-kaa5m2ugpx] { outline: none; border-color: var(--corp-accent); }
.cl-paste-actions[b-kaa5m2ugpx] { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
.cl-paste-aviso[b-kaa5m2ugpx] { font-size: var(--corp-fs-sm); color: var(--corp-text-sub); font-weight: 600; }

.cl-empty[b-kaa5m2ugpx] { flex: 1; }

/* La tabla desplaza por dentro (en los dos ejes) y el pie de acciones queda a la vista. */
.cl-scroll[b-kaa5m2ugpx] {
    flex: 1; min-height: 0; overflow: auto; background: #fff;
    border: 1px solid var(--corp-border); border-radius: var(--corp-radius);
    scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent;
}
.cl-tbl[b-kaa5m2ugpx] { min-width: 1480px; }
.cl-tbl tbody td[b-kaa5m2ugpx] { padding: 0.28rem 0.35rem; vertical-align: top; }
.cl-idx[b-kaa5m2ugpx] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); color: var(--corp-text-muted); font-weight: 700; padding-top: 0.55rem !important; }

.cl-in[b-kaa5m2ugpx] { padding: 0.25rem 0.4rem; font-size: var(--corp-fs-sm); }
.cl-in:disabled[b-kaa5m2ugpx] { background: var(--corp-bg-head); color: var(--corp-text-head); }
select.cl-in[b-kaa5m2ugpx] { appearance: auto; }

/* Punto + texto: persona existente o por crear, debajo del DNI. */
.cl-st[b-kaa5m2ugpx] { display: flex; align-items: center; gap: 0.3rem; margin-top: 0.2rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }
.cl-dot[b-kaa5m2ugpx] { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; display: inline-block; background: var(--corp-text-muted); }
.cl-dot.info[b-kaa5m2ugpx] { background: var(--corp-accent); }
.cl-dot.ok[b-kaa5m2ugpx]   { background: var(--corp-ok-strong); }
.cl-dot.bad[b-kaa5m2ugpx]  { background: var(--corp-bad-strong); }
.cl-rango[b-kaa5m2ugpx] { font-family: var(--corp-mono); }

.cl-todas[b-kaa5m2ugpx] {
    background: none; border: 1px solid transparent; color: var(--corp-accent); cursor: pointer;
    font-size: var(--corp-fs-xs); font-weight: 700; padding: 0 0.3rem; border-radius: var(--corp-radius); margin-left: 0.25rem;
    text-transform: none; letter-spacing: 0;
}
.cl-todas:hover[b-kaa5m2ugpx] { background: #fff; border-color: var(--corp-border); }

.cl-acts[b-kaa5m2ugpx] { display: flex; flex-wrap: wrap; gap: 0.25rem; align-items: center; }
.cl-chip[b-kaa5m2ugpx] { max-width: 180px; display: inline-flex; align-items: center; gap: 0.25rem; }
.cl-chip-txt[b-kaa5m2ugpx] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cl-act-add[b-kaa5m2ugpx] { width: auto; min-width: 120px; max-width: 160px; }

.cl-row-actions[b-kaa5m2ugpx] { display: flex; gap: 0.2rem; justify-content: center; padding-top: 0.15rem; }
.cl-ico[b-kaa5m2ugpx] {
    background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); cursor: pointer;
    width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center;
    color: var(--corp-text-head); font-size: var(--corp-fs-body);
}
.cl-ico:hover[b-kaa5m2ugpx] { background: var(--corp-bg-head); border-color: #94a3b8; }
.cl-ico.danger[b-kaa5m2ugpx] { color: var(--corp-bad); }
.cl-ico.danger:hover[b-kaa5m2ugpx] { background: #fef2f2; border-color: #fca5a5; }

/* Fila con error: tinte leve y el mensaje en su propio renglón, con filete rojo. */
.cl-row-err td[b-kaa5m2ugpx] { background: #fffafa; }
.cl-row-err-msg td[b-kaa5m2ugpx] {
    background: #fff; color: var(--corp-bad); font-size: var(--corp-fs-sm); font-weight: 600;
    padding: 0.15rem 0.5rem 0.35rem; border-bottom: 1px solid #fecaca;
}
.cl-row-err-msg td[colspan][b-kaa5m2ugpx] { box-shadow: inset 3px 0 0 var(--corp-bad-strong); }
.cl-row-err-msg .cl-dot[b-kaa5m2ugpx] { margin-right: 0.2rem; vertical-align: middle; }

.cl-alert[b-kaa5m2ugpx] {
    flex-shrink: 0; padding: 0.45rem 0.75rem; background: #fff; border: 1px solid #fecaca;
    border-left: 3px solid var(--corp-bad-strong); border-radius: var(--corp-radius);
    font-size: var(--corp-fs-sm); color: var(--corp-bad);
}

.cl-footer[b-kaa5m2ugpx] {
    display: flex; align-items: center; justify-content: space-between; gap: 0.5rem 0.75rem; flex-wrap: wrap;
    border-top: 1px solid var(--corp-border); padding-top: 0.55rem; flex-shrink: 0;
}
.cl-summary[b-kaa5m2ugpx] { display: flex; align-items: center; gap: 0.5rem; font-size: var(--corp-fs-sm); color: var(--corp-text-sub); flex-wrap: wrap; }
.cl-summary b[b-kaa5m2ugpx] { font-family: var(--corp-mono); color: var(--corp-navy); }
.cl-sep[b-kaa5m2ugpx] { width: 4px; height: 4px; border-radius: 50%; background: #cbd5e1; }
.cl-actions[b-kaa5m2ugpx] { display: flex; gap: 0.5rem; margin-left: auto; }
.cl-spin[b-kaa5m2ugpx] { width: 12px; height: 12px; border-width: 2px; }

/* Teléfono: controles de alto táctil y acciones a todo el ancho. */
@media (max-width: 640px) {
    .cl-toolbar .corp-btn[b-kaa5m2ugpx], .cl-actions .corp-btn[b-kaa5m2ugpx], .cl-in[b-kaa5m2ugpx] { min-height: 2.25rem; }
    .cl-ico[b-kaa5m2ugpx] { width: 2.25rem; height: 2.25rem; }
    .cl-actions[b-kaa5m2ugpx] { width: 100%; justify-content: flex-end; }
}
/* /Components/Pages/SolicitudCompra/CompContratosProveedor.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   Contratos de contratistas del proyecto · CSS aislado del componente.
   Mismo lenguaje que el resto del proyecto del PM: blanco y gris para todo,
   el color aparece SOLO donde algo pide acción (requisito obligatorio sin
   cumplir, solicitud rechazada, saldo excedido). Cifras en monoespaciada,
   etiquetas en versalitas pequeñas, bordes de 1px y nada de franjas oscuras.
   Lo genérico (tablas, pestañas, rejillas de datos, estados vacíos) viene de
   corporate.css. Todo lo propio cuelga de clases .ctp-*.
   ══════════════════════════════════════════════════════════════════════ */

/* El componente vive dentro de un panel del módulo: llena su alto y la tabla desplaza por dentro. */
.ctp-wrap[b-uuw70k6afb] { box-sizing: border-box; }
.ctp-title[b-uuw70k6afb] { font-size: var(--corp-fs-md); font-weight: 700; color: #0f172a; }
.ctp-n[b-uuw70k6afb] {
    display: inline-block; background: #eef2f6; color: var(--corp-text-sub); font-family: var(--corp-mono);
    font-size: var(--corp-fs-xs); font-weight: 700; padding: 0 6px; border-radius: 9px; line-height: 1.6;
}
.ctp-fill[b-uuw70k6afb] { flex: 1; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); background: #fff; }
.ctp-mono[b-uuw70k6afb] { font-family: var(--corp-mono); }
.ctp-code[b-uuw70k6afb] {
    font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-navy);
    background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius);
    padding: 0 0.4rem; line-height: 1.6; white-space: nowrap;
}

/* ── Punto de estado + texto gris ── */
.ctp-dot[b-uuw70k6afb] { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; display: inline-block; background: var(--corp-text-muted); }
.ctp-dot.info[b-uuw70k6afb] { background: var(--corp-accent); }
.ctp-dot.warn[b-uuw70k6afb] { background: var(--corp-warn-strong); }
.ctp-dot.bad[b-uuw70k6afb]  { background: var(--corp-bad-strong); }
.ctp-dot.ok[b-uuw70k6afb]   { background: var(--corp-ok-strong); }
.ctp-dot.mut[b-uuw70k6afb]  { background: #cbd5e1; }
.ctp-st[b-uuw70k6afb] { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--corp-fs-xs); font-weight: 600; color: var(--corp-text-sub); white-space: nowrap; }
.ctp-st.mut[b-uuw70k6afb] { color: var(--corp-text-muted); }

/* ── Indicador de requisitos documentales (celda de la tabla) ── */
.ctp-chk[b-uuw70k6afb] {
    display: inline-flex; align-items: center; gap: 0.4rem; cursor: pointer;
    border-radius: var(--corp-radius); padding: 0.2rem 0.35rem; margin: -0.2rem -0.35rem;
    transition: background 0.15s;
}
.ctp-chk:hover[b-uuw70k6afb] { background: var(--corp-bg-head); }
.ctp-chk.mut[b-uuw70k6afb] { color: #cbd5e1; }
.ctp-chk-bar[b-uuw70k6afb] { display: flex; flex-wrap: wrap; gap: 3px; max-width: 130px; }
.ctp-chk-dot[b-uuw70k6afb] { display: inline-block; width: 8px; height: 8px; border-radius: 2px; flex-shrink: 0; background: #e2e8f0; border: 1px solid #cbd5e1; }
.ctp-chk-dot.ok[b-uuw70k6afb]  { background: var(--corp-ok-strong); border-color: var(--corp-ok-strong); }
.ctp-chk-dot.bad[b-uuw70k6afb] { background: var(--corp-bad-strong); border-color: var(--corp-bad-strong); }
.ctp-chk-n[b-uuw70k6afb] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-text-sub); white-space: nowrap; }
.ctp-chk-n.warn[b-uuw70k6afb] { color: var(--corp-warn); }
.ctp-chk-n.bad[b-uuw70k6afb]  { color: var(--corp-bad); }

/* ── Menú flotante de acciones por fila ── */
.ctp-menu-back[b-uuw70k6afb] { position: fixed; inset: 0; z-index: 40; background: transparent; }
.ctp-menu[b-uuw70k6afb] { position: relative; display: inline-block; }
.ctp-menu-trigger[b-uuw70k6afb] { padding: 0.2rem 0.45rem; }
.ctp-menu.open .ctp-menu-trigger[b-uuw70k6afb] { background: var(--corp-bg-head); border-color: var(--corp-text-muted); }
.ctp-menu-drop[b-uuw70k6afb] {
    position: fixed; z-index: 60; min-width: 210px; background: #fff;
    border: 1px solid var(--corp-border); border-radius: var(--corp-radius);
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.14);
    padding: 0.3rem; display: flex; flex-direction: column; gap: 1px;
}
.ctp-menu-item[b-uuw70k6afb] {
    display: flex; align-items: center; gap: 0.5rem; width: 100%; min-height: 2.1rem;
    background: none; border: none; cursor: pointer; text-align: left;
    padding: 0.35rem 0.6rem; border-radius: var(--corp-radius); font-size: var(--corp-fs-body);
    font-weight: 500; color: var(--corp-text-main); transition: background 0.12s;
}
.ctp-menu-item:hover[b-uuw70k6afb] { background: var(--corp-bg-head); }
.ctp-menu-item i[b-uuw70k6afb] { font-size: var(--corp-fs-md); color: var(--corp-text-sub); width: 1rem; text-align: center; }
.ctp-menu-item .ctp-n[b-uuw70k6afb] { margin-left: auto; }
.ctp-menu-item.danger[b-uuw70k6afb], .ctp-menu-item.danger i[b-uuw70k6afb] { color: var(--corp-bad-strong); }
.ctp-menu-item.danger:hover[b-uuw70k6afb] { background: var(--corp-bad-bg); }

.ctp-danger[b-uuw70k6afb] { color: var(--corp-bad-strong); }
.ctp-lock[b-uuw70k6afb] {
    display: inline-flex; align-items: center; gap: 0.25rem; white-space: nowrap;
    font-size: var(--corp-fs-sm); font-weight: 600; color: var(--corp-text-muted); padding: 0.2rem 0.4rem;
}

/* ══ Drawer del detalle del contrato ══
   Se desliza por clase (.visible). El velo cerrado queda con visibility:hidden, que
   no intercepta clics; por eso no se renderiza condicionalmente. */
.ctp-drawer-back[b-uuw70k6afb] {
    position: fixed; inset: 0; background: rgba(15, 23, 42, 0.32);
    opacity: 0; visibility: hidden; transition: opacity 0.25s, visibility 0.25s;
    z-index: 1200;
}
.ctp-drawer-back.visible[b-uuw70k6afb] { opacity: 1; visibility: visible; }
.ctp-drawer[b-uuw70k6afb] {
    position: fixed; top: 0; right: 0; height: 100%; width: 760px; max-width: 96vw;
    background: var(--corp-bg-body); border-left: 1px solid var(--corp-border);
    box-shadow: -6px 0 24px rgba(15, 23, 42, 0.14);
    transform: translateX(100%); visibility: hidden;
    transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1), visibility 0.28s;
    z-index: 1201; display: flex; flex-direction: column;
}
.ctp-drawer.visible[b-uuw70k6afb] { transform: translateX(0); visibility: visible; }

/* Identidad arriba sobre blanco: código, estado con punto, proveedor y razón social. */
.ctp-dhead[b-uuw70k6afb] {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 0.5rem;
    padding: 0.75rem 1rem 0.6rem; background: #fff; border-bottom: 1px solid var(--corp-border); flex-shrink: 0;
}
.ctp-did[b-uuw70k6afb] { min-width: 0; display: flex; flex-direction: column; gap: 0.15rem; }
.ctp-dcode[b-uuw70k6afb] { display: flex; align-items: center; gap: 0.55rem; flex-wrap: wrap; }
.ctp-dtitle[b-uuw70k6afb] { font-size: var(--corp-fs-xl); font-weight: 700; color: #0f172a; line-height: 1.2; overflow-wrap: anywhere; }
.ctp-dsub[b-uuw70k6afb] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); overflow-wrap: anywhere; }

/* Cajas de cifras del contrato + barra apilada de lo pagado, aprobado y en revisión. */
.ctp-dfin[b-uuw70k6afb] { padding: 0.6rem 1rem; flex-shrink: 0; }
.ctp-kpis[b-uuw70k6afb] { display: grid; grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr)); gap: 0.5rem; }
.ctp-kpi[b-uuw70k6afb] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.45rem 0.65rem; min-width: 0; }
.ctp-kpi .k[b-uuw70k6afb] {
    display: flex; align-items: center; gap: 0.3rem;
    font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em;
    color: var(--corp-text-head); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ctp-kpi .v[b-uuw70k6afb] {
    font-family: var(--corp-mono); font-size: var(--corp-fs-lg); font-weight: 800; color: #0f172a;
    line-height: 1.2; margin-top: 0.15rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ctp-kpi .v.zero[b-uuw70k6afb] { color: #cbd5e1; }
.ctp-sw[b-uuw70k6afb] { display: inline-block; width: 8px; height: 8px; border-radius: 2px; flex-shrink: 0; }
.ctp-sw.pag[b-uuw70k6afb], .ctp-fin-seg.pag[b-uuw70k6afb] { background: var(--corp-accent); }
.ctp-sw.apr[b-uuw70k6afb], .ctp-fin-seg.apr[b-uuw70k6afb] { background: var(--corp-ok-strong); }
.ctp-sw.rev[b-uuw70k6afb], .ctp-fin-seg.rev[b-uuw70k6afb] { background: var(--corp-warn-strong); }
.ctp-fin-bar[b-uuw70k6afb] { margin-top: 0.5rem; height: 6px; border-radius: 99px; overflow: hidden; background: var(--corp-border-row); display: flex; }
.ctp-fin-seg[b-uuw70k6afb] { height: 100%; }

.ctp-dtabs[b-uuw70k6afb] { padding: 0 0.5rem; }
.ctp-dbody[b-uuw70k6afb] {
    flex: 1; min-height: 0; overflow-y: auto; background: #fff;
    scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent;
}
.ctp-dbody .corp-info-grid[b-uuw70k6afb] { border-top: 0; }
.ctp-dfoot[b-uuw70k6afb] {
    flex-shrink: 0; display: flex; justify-content: flex-end;
    padding: 0.45rem 1rem; background: var(--corp-bg-head); border-top: 1px solid var(--corp-border);
}

/* Encabezado de sección: gris claro, contador a la derecha. */
.ctp-sec[b-uuw70k6afb] {
    display: flex; align-items: center; gap: 0.45rem; padding: 0.4rem 1rem;
    background: var(--corp-bg-head); border-bottom: 1px solid var(--corp-border);
    font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head);
}
.ctp-sec:not(:first-child)[b-uuw70k6afb] { border-top: 1px solid var(--corp-border); }
.ctp-sec .n[b-uuw70k6afb] {
    margin-left: auto; background: #eef2f6; color: var(--corp-text-sub); font-family: var(--corp-mono);
    font-size: var(--corp-fs-xs); padding: 0 6px; border-radius: 9px;
}
.ctp-pad[b-uuw70k6afb] { padding: 0.75rem 1rem; display: flex; flex-direction: column; gap: 0.75rem; }
.ctp-right[b-uuw70k6afb] { display: flex; justify-content: flex-end; }

/* ── Tablas (corp-tbl) ── */
.ctp-tbl tfoot td.lbl[b-uuw70k6afb], .ctp-tbl tfoot td.r[b-uuw70k6afb] { text-align: right; }
/* `fin` y no `tot`: corporate.css pinta `tr.tot` como barra navy con texto blanco. */
.ctp-tbl tfoot tr.fin td[b-uuw70k6afb] { background: var(--corp-bg-head); color: var(--corp-navy); font-weight: 700; font-size: var(--corp-fs-sm); }
.ctp-tbl tfoot tr.fin td.lbl[b-uuw70k6afb] { color: var(--corp-text-head); }
.ctp-tbl th.ctp-col-x[b-uuw70k6afb] { width: 50px; }

/* Actividad con su barra de avance debajo. */
.ctp-act[b-uuw70k6afb] { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; }
.ctp-act-n[b-uuw70k6afb] { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; color: #1e293b; }
.ctp-barcell[b-uuw70k6afb] { display: flex; align-items: center; gap: 0.4rem; max-width: 9rem; }
.ctp-prog[b-uuw70k6afb] { flex: 1; min-width: 3rem; height: 4px; background: var(--corp-border-row); border-radius: 99px; overflow: hidden; }
.ctp-prog > span[b-uuw70k6afb] { display: block; height: 100%; border-radius: 99px; background: var(--corp-accent); transition: width 0.3s; }
.ctp-prog > span.ok[b-uuw70k6afb] { background: var(--corp-ok-strong); }
.ctp-barcell b[b-uuw70k6afb] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-text-sub); white-space: nowrap; }

/* ── Pestaña de solicitudes de pago ── */
.ctp-bar[b-uuw70k6afb] {
    display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; flex-wrap: wrap;
    padding: 0.45rem 1rem; background: var(--corp-bg-head); border-bottom: 1px solid var(--corp-border);
}
.ctp-bar-t[b-uuw70k6afb] { font-size: var(--corp-fs-sm); color: var(--corp-text-sub); }
.ctp-bar-t b[b-uuw70k6afb] { font-family: var(--corp-mono); color: #0f172a; white-space: nowrap; }

/* Cada solicitud: fila con bloque de fecha que se despliega hacia abajo. */
.ctp-sp[b-uuw70k6afb] { border-bottom: 1px solid var(--corp-border); }
.ctp-sp.open[b-uuw70k6afb] { box-shadow: inset 3px 0 0 var(--corp-accent); }
.ctp-sp-h[b-uuw70k6afb] {
    display: flex; align-items: center; gap: 0.6rem; padding: 0.45rem 1rem;
    cursor: pointer; user-select: none; transition: background 0.12s;
}
.ctp-sp-h:hover[b-uuw70k6afb] { background: #fafbfc; }
.ctp-sp-chev[b-uuw70k6afb] { color: var(--corp-text-muted); font-size: var(--corp-fs-sm); transition: transform 0.2s; flex-shrink: 0; }
.ctp-sp.open .ctp-sp-chev[b-uuw70k6afb] { transform: rotate(90deg); color: var(--corp-accent); }
.ctp-ag-d[b-uuw70k6afb] {
    width: 44px; text-align: center; border-radius: var(--corp-radius); background: var(--corp-bg-head);
    border: 1px solid var(--corp-border); padding: 0.15rem 0; flex-shrink: 0;
}
.ctp-ag-d b[b-uuw70k6afb] { display: block; font-size: var(--corp-fs-lg); color: var(--corp-navy); line-height: 1.1; }
.ctp-ag-d span[b-uuw70k6afb] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); text-transform: uppercase; font-weight: 700; }
.ctp-ag-t[b-uuw70k6afb] { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ctp-ag-t > span:last-child[b-uuw70k6afb] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); overflow-wrap: anywhere; }
.ctp-ag-m[b-uuw70k6afb] { font-family: var(--corp-mono); font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-navy); white-space: nowrap; }
.ctp-sp-a[b-uuw70k6afb] { display: flex; align-items: center; gap: 0.25rem; flex-shrink: 0; }
.ctp-sp-body[b-uuw70k6afb] { display: none; padding: 0.25rem 1rem 0.75rem; }
.ctp-sp.open .ctp-sp-body[b-uuw70k6afb] { display: flex; flex-direction: column; gap: 0.5rem; }
.ctp-sp-body > .corp-tbl[b-uuw70k6afb] { border: 1px solid var(--corp-border); }

.ctp-quote[b-uuw70k6afb] {
    font-size: var(--corp-fs-sm); color: var(--corp-text-main); background: var(--corp-bg-head);
    border-left: 2px solid var(--corp-border); padding: 0.3rem 0.55rem; border-radius: 0 var(--corp-radius) var(--corp-radius) 0;
    overflow-wrap: anywhere;
}

/* Subtítulo dentro de un bloque: versalitas pequeñas con contador. */
.ctp-sub-h[b-uuw70k6afb] {
    display: flex; align-items: center; gap: 0.35rem; margin-top: 0.25rem;
    font-size: var(--corp-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em;
    color: var(--corp-text-head);
}
.ctp-sub-h .n[b-uuw70k6afb] {
    background: #eef2f6; color: var(--corp-text-sub); font-family: var(--corp-mono);
    padding: 0 6px; border-radius: 9px; letter-spacing: 0;
}
.ctp-end[b-uuw70k6afb] { margin-left: auto; text-transform: none; letter-spacing: 0; }

/* Grupo de filas (documentos por actividad, comprobantes). */
.ctp-grp[b-uuw70k6afb] { border: 1px solid var(--corp-border); border-radius: var(--corp-radius); background: #fff; overflow: hidden; }
.ctp-grp-h[b-uuw70k6afb] {
    padding: 0.3rem 0.6rem; background: var(--corp-bg-head); border-bottom: 1px solid var(--corp-border);
    font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head); overflow-wrap: anywhere;
}
.ctp-row[b-uuw70k6afb] {
    display: flex; align-items: center; gap: 0.5rem; padding: 0.25rem 0.6rem;
    border-bottom: 1px solid var(--corp-border-row); font-size: var(--corp-fs-sm);
}
.ctp-row:last-child[b-uuw70k6afb] { border-bottom: 0; }
.ctp-row > i[b-uuw70k6afb] { color: var(--corp-text-muted); flex-shrink: 0; }
.ctp-row .t[b-uuw70k6afb] { font-weight: 600; color: #1e293b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 1; }
.ctp-row .a[b-uuw70k6afb] { margin-left: auto; flex-shrink: 0; display: flex; gap: 0.3rem; }

/* Datos del pago ejecutado. */
.ctp-kv[b-uuw70k6afb] { display: flex; flex-wrap: wrap; gap: 0.35rem 1.5rem; }
.ctp-kv > div[b-uuw70k6afb] { display: flex; flex-direction: column; gap: 0.05rem; }
.ctp-kv .k[b-uuw70k6afb] { font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-text-sub); text-transform: uppercase; letter-spacing: 0.04em; }
.ctp-kv .v[b-uuw70k6afb] { font-family: var(--corp-mono); font-size: var(--corp-fs-body); font-weight: 600; color: #1e293b; }

/* Historial de estados. */
.ctp-logs[b-uuw70k6afb] { border: 1px solid var(--corp-border); border-radius: var(--corp-radius); background: #fff; }
.ctp-log[b-uuw70k6afb] { display: flex; gap: 0.6rem; padding: 0.4rem 0.6rem; border-bottom: 1px solid var(--corp-border-row); }
.ctp-log:last-child[b-uuw70k6afb] { border-bottom: 0; }
.ctp-log > .ctp-dot[b-uuw70k6afb] { margin-top: 0.3rem; }
.ctp-log-b[b-uuw70k6afb] { flex: 1; min-width: 0; }
.ctp-log-t[b-uuw70k6afb] { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; font-size: var(--corp-fs-sm); color: var(--corp-text-sub); }
.ctp-log-t b[b-uuw70k6afb] { color: #1e293b; }
.ctp-log-m[b-uuw70k6afb] { font-size: var(--corp-fs-xs); color: var(--corp-text-sub); font-style: italic; margin-top: 0.1rem; overflow-wrap: anywhere; }

/* ── Pestaña de términos: escalera del procedimiento ── */
.ctp-steps[b-uuw70k6afb] { display: flex; align-items: stretch; gap: 0.4rem; flex-wrap: wrap; }
.ctp-step[b-uuw70k6afb] {
    flex: 1; min-width: 180px; display: flex; gap: 0.55rem;
    background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.55rem 0.7rem;
}
.ctp-step-num[b-uuw70k6afb] {
    width: 22px; height: 22px; border-radius: 50%; flex-shrink: 0;
    background: var(--corp-bg-head); border: 1px solid var(--corp-border); color: var(--corp-navy);
    font-family: var(--corp-mono); font-weight: 700; font-size: var(--corp-fs-sm);
    display: flex; align-items: center; justify-content: center;
}
.ctp-step-b[b-uuw70k6afb] { min-width: 0; }
.ctp-step-t[b-uuw70k6afb] { font-size: var(--corp-fs-body); font-weight: 700; color: #1e293b; }
.ctp-step-d[b-uuw70k6afb] { font-size: var(--corp-fs-sm); color: var(--corp-text-sub); margin-top: 0.2rem; line-height: 1.35; }
.ctp-step-arrow[b-uuw70k6afb] { display: flex; align-items: center; color: #cbd5e1; font-size: var(--corp-fs-lg); }

/* Nota informativa: blanca con filete a la izquierda (no pide acción). */
.ctp-note[b-uuw70k6afb] {
    display: flex; gap: 0.5rem; align-items: flex-start;
    background: #fff; border: 1px solid var(--corp-border); border-left: 3px solid var(--corp-accent);
    border-radius: var(--corp-radius); padding: 0.5rem 0.75rem;
    font-size: var(--corp-fs-sm); color: var(--corp-text-main); line-height: 1.4;
}
.ctp-note i[b-uuw70k6afb] { color: var(--corp-accent); margin-top: 0.1rem; }

/* ══ Diálogos ══ */
.ctp-dlg-h[b-uuw70k6afb] { display: flex; align-items: center; gap: 0.5rem; }
.ctp-dlg-h > i[b-uuw70k6afb] { color: var(--corp-text-sub); }
.ctp-dlg-p[b-uuw70k6afb] { font-size: var(--corp-fs-md); color: var(--corp-text-main); margin: 0 0 0.75rem; line-height: 1.45; }
.ctp-dlg-actions[b-uuw70k6afb] {
    display: flex; justify-content: flex-end; gap: 0.75rem; flex-wrap: wrap;
    margin-top: 1rem; padding-top: 0.75rem; border-top: 1px solid var(--corp-border);
}
.ctp-alert[b-uuw70k6afb] {
    display: flex; align-items: flex-start; gap: 0.45rem; margin-top: 0.6rem;
    padding: 0.45rem 0.75rem; background: #fff; border: 1px solid #fecaca; border-left: 3px solid var(--corp-bad-strong);
    border-radius: var(--corp-radius); font-size: var(--corp-fs-sm); color: var(--corp-bad);
}
.ctp-hint[b-uuw70k6afb] { font-size: var(--corp-fs-sm); color: var(--corp-text-sub); margin: 0.1rem 0 0.5rem; line-height: 1.4; }
.ctp-hint b[b-uuw70k6afb] { color: #0f172a; font-family: var(--corp-mono); }
.ctp-hint.bad[b-uuw70k6afb] { color: var(--corp-bad); }
.ctp-req[b-uuw70k6afb] { color: var(--corp-bad-strong); }

.ctp-form-row[b-uuw70k6afb] { display: flex; gap: 0.75rem; flex-wrap: wrap; }
.ctp-form-row > .ctp-field[b-uuw70k6afb] { flex: 1; min-width: 180px; }
.ctp-field[b-uuw70k6afb] { margin-bottom: 0.85rem; }
.ctp-inline[b-uuw70k6afb] { display: flex; gap: 0.5rem; align-items: center; }
.ctp-grow[b-uuw70k6afb] { flex: 1; min-width: 0; }
.ctp-plus[b-uuw70k6afb] { min-height: 2rem; padding: 0.3rem 0.6rem; }

/* Alta de actividades del contrato. */
.ctp-add-row[b-uuw70k6afb] {
    display: flex; gap: 0.5rem; align-items: flex-end; flex-wrap: wrap;
    background: var(--corp-bg-head); border: 1px solid var(--corp-border); border-radius: var(--corp-radius);
    padding: 0.65rem; margin: 0.35rem 0 0.5rem;
}
.ctp-add-f[b-uuw70k6afb] { flex: 1 1 14rem; min-width: 0; }
.ctp-add-fs[b-uuw70k6afb] { width: 130px; flex-shrink: 0; }
.ctp-list[b-uuw70k6afb] { border: 1px solid var(--corp-border); border-radius: var(--corp-radius); max-height: 280px; overflow: auto; }

/* Líneas del contrato en la solicitud de pago. */
.ctp-lines[b-uuw70k6afb] { max-height: 360px; overflow-y: auto; display: flex; flex-direction: column; gap: 0.5rem; }
.ctp-line[b-uuw70k6afb] { background: #fff; border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.5rem 0.65rem; }
.ctp-line.sel[b-uuw70k6afb] { box-shadow: inset 3px 0 0 var(--corp-accent); border-color: #bfdbfe; }
.ctp-line-h[b-uuw70k6afb] { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; }
.ctp-line-n[b-uuw70k6afb] { min-width: 0; display: flex; align-items: baseline; gap: 0.4rem; flex-wrap: wrap; }
.ctp-line-n b[b-uuw70k6afb] { font-size: var(--corp-fs-body); color: #1e293b; }
.ctp-line-n span[b-uuw70k6afb] { font-family: var(--corp-mono); font-size: var(--corp-fs-xs); color: var(--corp-text-muted); }
.ctp-chips[b-uuw70k6afb] { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: 0.35rem; }
.ctp-chip[b-uuw70k6afb] {
    font-size: var(--corp-fs-xs); color: var(--corp-text-sub); background: var(--corp-bg-head);
    border: 1px solid var(--corp-border); border-radius: 9px; padding: 0.05rem 0.5rem; white-space: nowrap;
}
.ctp-chip b[b-uuw70k6afb] { font-family: var(--corp-mono); color: #0f172a; }
.ctp-chip.saldo[b-uuw70k6afb] { background: #fff; border-color: var(--corp-accent); color: var(--corp-accent); font-weight: 600; }
.ctp-chip.saldo b[b-uuw70k6afb] { color: var(--corp-navy); }
.ctp-chip.saldo.cero[b-uuw70k6afb] { border-color: var(--corp-border); color: var(--corp-text-muted); }
.ctp-chip.saldo.cero b[b-uuw70k6afb] { color: var(--corp-text-muted); }
.ctp-line-in[b-uuw70k6afb] { display: flex; gap: 0.5rem; align-items: flex-end; margin-top: 0.4rem; flex-wrap: wrap; }
.ctp-line-qty[b-uuw70k6afb] { width: 150px; }
.ctp-line-sub[b-uuw70k6afb] { margin-left: auto; text-align: right; display: flex; flex-direction: column; }
.ctp-line-sub .k[b-uuw70k6afb] { font-size: var(--corp-fs-xs); font-weight: 700; color: var(--corp-text-muted); text-transform: uppercase; letter-spacing: 0.04em; }
.ctp-line-sub .v[b-uuw70k6afb] { font-family: var(--corp-mono); font-weight: 700; color: #0f172a; white-space: nowrap; }
.ctp-line-docs[b-uuw70k6afb] { margin-top: 0.4rem; }
.ctp-line .ctp-hint[b-uuw70k6afb] { margin: 0.25rem 0 0; }

.ctp-total[b-uuw70k6afb] {
    display: flex; align-items: center; justify-content: space-between; gap: 0.5rem;
    margin-top: 0.6rem; padding: 0.45rem 0.75rem; background: var(--corp-bg-head);
    border: 1px solid var(--corp-border); border-radius: var(--corp-radius);
    font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head);
}
.ctp-total-v[b-uuw70k6afb] { font-family: var(--corp-mono); font-size: var(--corp-fs-lg); font-weight: 800; color: var(--corp-navy); white-space: nowrap; }

/* Zona de carga de archivos (el InputFile invisible la cubre entera). */
.ctp-drop[b-uuw70k6afb] {
    position: relative; border: 1px dashed var(--corp-border); border-radius: var(--corp-radius);
    padding: 0.55rem; min-height: 2.25rem; text-align: center; color: var(--corp-text-muted); font-size: var(--corp-fs-sm);
    cursor: pointer; transition: border-color 0.15s, color 0.15s; background: #fff;
}
.ctp-drop:hover[b-uuw70k6afb] { border-color: var(--corp-accent); color: var(--corp-accent); }
.ctp-files[b-uuw70k6afb] { display: flex; flex-wrap: wrap; gap: 0.35rem; margin-top: 0.35rem; }
.ctp-file[b-uuw70k6afb] {
    display: flex; align-items: center; gap: 0.3rem; background: #fff; max-width: 100%;
    border: 1px solid var(--corp-border); border-radius: var(--corp-radius); padding: 0.2rem 0.5rem;
    font-size: var(--corp-fs-sm); color: var(--corp-text-main); overflow-wrap: anywhere;
}
.ctp-file-s[b-uuw70k6afb] { color: var(--corp-text-muted); white-space: nowrap; }
.ctp-file-x[b-uuw70k6afb] {
    background: none; border: none; color: var(--corp-bad-strong); cursor: pointer;
    font-size: var(--corp-fs-xs); padding: 0.1rem 0.2rem; line-height: 1;
}

/* Documentos del contrato. */
.ctp-stack[b-uuw70k6afb] { display: flex; flex-direction: column; gap: 0.65rem; }
.ctp-box[b-uuw70k6afb] { border: 1px solid var(--corp-border); border-radius: var(--corp-radius); background: #fff; overflow: hidden; }
.ctp-box-h[b-uuw70k6afb] {
    padding: 0.35rem 0.65rem; background: var(--corp-bg-head); border-bottom: 1px solid var(--corp-border);
    font-size: var(--corp-fs-sm); font-weight: 700; color: var(--corp-text-head);
}
.ctp-box-b[b-uuw70k6afb] { padding: 0.65rem; display: flex; flex-direction: column; gap: 0.5rem; }
.ctp-box-b .ctp-field[b-uuw70k6afb] { margin-bottom: 0; }
.ctp-box-b .ctp-alert[b-uuw70k6afb] { margin-top: 0; }
.ctp-docs[b-uuw70k6afb] { border: 1px solid var(--corp-border); border-radius: var(--corp-radius); max-height: 45vh; overflow-y: auto; background: #fff; }
.ctp-doc[b-uuw70k6afb] { display: flex; align-items: center; gap: 0.5rem; padding: 0.45rem 0.65rem; border-bottom: 1px solid var(--corp-border-row); }
.ctp-doc:last-child[b-uuw70k6afb] { border-bottom: 0; }
.ctp-doc > i[b-uuw70k6afb] { color: var(--corp-text-muted); font-size: var(--corp-fs-lg); flex-shrink: 0; }
.ctp-doc-b[b-uuw70k6afb] { flex: 1; min-width: 0; }
.ctp-doc-n[b-uuw70k6afb] { font-weight: 600; font-size: var(--corp-fs-body); color: #1e293b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ctp-doc-m[b-uuw70k6afb] { font-size: var(--corp-fs-xs); color: var(--corp-text-muted); display: flex; gap: 0.4rem; flex-wrap: wrap; }
.ctp-doc-a[b-uuw70k6afb] { display: flex; gap: 0.3rem; flex-shrink: 0; }

/* Checklist documental: tarjeta blanca por requisito, filete de color solo si pide algo. */
.ctp-note + .ctp-reqs[b-uuw70k6afb] { margin-top: 0.75rem; }
.ctp-reqs[b-uuw70k6afb] { display: flex; flex-direction: column; gap: 0.5rem; max-height: 55vh; overflow-y: auto; }
.ctp-reqi[b-uuw70k6afb] { background: #fff; border: 1px solid var(--corp-border); border-left-width: 3px; border-radius: var(--corp-radius); padding: 0.55rem 0.75rem; }
.ctp-reqi.ok[b-uuw70k6afb]  { border-left-color: var(--corp-ok-strong); }
.ctp-reqi.bad[b-uuw70k6afb] { border-left-color: var(--corp-bad-strong); }
.ctp-reqi-h[b-uuw70k6afb] { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.ctp-reqi-ico[b-uuw70k6afb] { color: var(--corp-text-muted); font-size: var(--corp-fs-lg); }
.ctp-reqi-ico.ok[b-uuw70k6afb] { color: var(--corp-ok-strong); }
.ctp-reqi-n[b-uuw70k6afb] { font-weight: 600; font-size: var(--corp-fs-md); color: #1e293b; }
.ctp-reqi-d[b-uuw70k6afb] { font-size: var(--corp-fs-sm); color: var(--corp-text-sub); margin: 0.25rem 0 0 1.5rem; }
.ctp-reqi-obs[b-uuw70k6afb] { margin: 0.35rem 0 0 1.5rem; }
.ctp-check[b-uuw70k6afb] { width: 1rem; height: 1rem; accent-color: var(--corp-ok-strong); cursor: pointer; }
.ctp-obs[b-uuw70k6afb] {
    width: 100%; box-sizing: border-box; min-height: 2rem; border: 1px solid var(--corp-border);
    border-radius: var(--corp-radius); padding: 0.25rem 0.5rem; font-size: var(--corp-fs-sm); color: #1e293b;
}
.ctp-obs:focus[b-uuw70k6afb] { outline: none; border-color: var(--corp-accent); }
.ctp-chk-docs[b-uuw70k6afb] { margin: 0.4rem 0 0 1.5rem; display: flex; flex-direction: column; gap: 0.25rem; }
.ctp-chk-doc[b-uuw70k6afb] {
    display: flex; align-items: center; gap: 0.4rem;
    background: var(--corp-bg-head); border: 1px solid var(--corp-border); border-radius: var(--corp-radius);
    padding: 0.2rem 0.45rem; font-size: var(--corp-fs-sm); color: var(--corp-text-main);
}
.ctp-chk-doc > i[b-uuw70k6afb] { color: var(--corp-text-muted); flex-shrink: 0; }
.ctp-chk-doc-n[b-uuw70k6afb] { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ctp-chk-doc-btn[b-uuw70k6afb] {
    background: none; border: none; cursor: pointer; color: var(--corp-text-sub); min-width: 1.75rem; min-height: 1.75rem;
    padding: 0.1rem 0.25rem; border-radius: var(--corp-radius); font-size: var(--corp-fs-sm); transition: background 0.15s, color 0.15s;
}
.ctp-chk-doc-btn:hover[b-uuw70k6afb] { background: #e2e8f0; color: var(--corp-accent); }
.ctp-chk-doc-btn.danger:hover[b-uuw70k6afb] { background: var(--corp-bad-bg); color: var(--corp-bad-strong); }
.ctp-chk-up[b-uuw70k6afb] {
    display: inline-flex; align-items: center; gap: 0.3rem; align-self: flex-start;
    cursor: pointer; font-size: var(--corp-fs-sm); font-weight: 600; color: var(--corp-accent);
    border: 1px dashed var(--corp-border); border-radius: var(--corp-radius); padding: 0.25rem 0.5rem;
    background: #fff; transition: border-color 0.15s;
}
.ctp-chk-up:hover[b-uuw70k6afb] { border-color: var(--corp-accent); }
.ctp-chk-up.loading[b-uuw70k6afb] { color: var(--corp-text-muted); cursor: default; }
.ctp-spin-sm[b-uuw70k6afb] { width: 12px; height: 12px; }

/* ── Teléfono: la página no desplaza en horizontal; las filas bajan de renglón ── */
@media (max-width: 640px) {
    .ctp-dhead[b-uuw70k6afb], .ctp-dfin[b-uuw70k6afb], .ctp-sec[b-uuw70k6afb], .ctp-bar[b-uuw70k6afb], .ctp-sp-h[b-uuw70k6afb], .ctp-pad[b-uuw70k6afb], .ctp-dfoot[b-uuw70k6afb] { padding-left: 0.75rem; padding-right: 0.75rem; }
    .ctp-sp-body[b-uuw70k6afb] { padding-left: 0.75rem; padding-right: 0.75rem; }
    .ctp-sp-h[b-uuw70k6afb] { flex-wrap: wrap; }
    .ctp-sp-h .ctp-ag-t[b-uuw70k6afb] { flex: 1 1 8rem; }
    .ctp-sp-a[b-uuw70k6afb] { margin-left: auto; }
    .ctp-kpis[b-uuw70k6afb] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ctp-step-arrow[b-uuw70k6afb] { display: none; }
    .ctp-step[b-uuw70k6afb] { min-width: 100%; }
    .ctp-add-fs[b-uuw70k6afb] { flex: 1 1 7rem; width: auto; }
    .ctp-add-row > .corp-btn[b-uuw70k6afb] { min-height: 2.25rem; }
    .ctp-line-qty[b-uuw70k6afb] { flex: 1 1 9rem; width: auto; }
    .ctp-form-row > .ctp-field[b-uuw70k6afb] { min-width: 100%; }
}
/* /Components/Shared/CompToast.razor.rz.scp.css */
/* Aviso emergente corporativo. Usa los tokens de wwwroot/css/corporate.css para que se vea
   igual que el resto del producto, en lugar del tema propio de Syncfusion. */

.ct-host[b-c1b73838rv] {
    position: fixed;
    right: 18px;
    bottom: 18px;
    /* Por encima de los SfDialog, que Syncfusion sube a 10000. */
    z-index: 12000;
    max-width: min(380px, calc(100vw - 36px));
    pointer-events: none;
}

.ct[b-c1b73838rv] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    background: var(--corp-bg-card, #ffffff);
    border: 1px solid var(--corp-border, #d1d9e0);
    border-left: 4px solid var(--corp-ok, #166534);
    border-radius: var(--corp-radius, 4px);
    padding: 10px 12px;
    box-shadow: 0 6px 20px -6px rgba(15, 23, 42, .28);
    pointer-events: auto;
    animation: ct-entra-b-c1b73838rv .18s ease-out;
}

.ct-bad[b-c1b73838rv] {
    border-left-color: var(--corp-bad, #991b1b);
}

.ct-icono[b-c1b73838rv] {
    flex: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--corp-fs-sm, .72rem);
    font-weight: 700;
    line-height: 1;
    background: var(--corp-ok-bg, #dcfce7);
    color: var(--corp-ok, #166534);
    margin-top: 1px;
}

.ct-bad .ct-icono[b-c1b73838rv] {
    background: var(--corp-bad-bg, #fee2e2);
    color: var(--corp-bad, #991b1b);
}

.ct-cuerpo[b-c1b73838rv] {
    min-width: 0;
    flex: 1;
}

.ct-titulo[b-c1b73838rv] {
    font-size: var(--corp-fs-sm, .72rem);
    font-weight: 600;
    color: var(--corp-text-head, #475569);
    letter-spacing: .02em;
    margin-bottom: 2px;
}

.ct-texto[b-c1b73838rv] {
    font-size: var(--corp-fs-body, .78rem);
    color: var(--corp-text-main, #334155);
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.ct-cerrar[b-c1b73838rv] {
    flex: none;
    background: none;
    border: 0;
    cursor: pointer;
    color: var(--corp-text-muted, #94a3b8);
    font-size: var(--corp-fs-xl);
    line-height: 1;
    padding: 2px 4px;
    border-radius: var(--corp-radius, 4px);
}

.ct-cerrar:hover[b-c1b73838rv] {
    color: var(--corp-text-main, #334155);
    background: var(--corp-bg-head, #f5f7fa);
}

.ct-cerrar:focus-visible[b-c1b73838rv] {
    outline: 2px solid var(--corp-accent, #1565c0);
    outline-offset: 1px;
}

@keyframes ct-entra-b-c1b73838rv {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    .ct[b-c1b73838rv] { animation: none; }
}
