/* /Components/Atoms/QuickLinkCard.razor.rz.scp.css */
/* QuickLinkCard — extraído de Pages/Home.razor.css. Tarjeta vertical centrada (ícono arriba, texto debajo),
   inspirada en el lenguaje de las tarjetas de plan de Pages/Login.razor.css (sin el glassmorphism, que es
   específico del fondo degradado de Login) — reemplaza el diseño anterior en fila con flecha lateral, que el
   usuario reportó como poco armónico (densidad, alineación a la izquierda, hover demasiado marcado). */
.nf-quick-link-card[b-l4w8pjxs08] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.65rem;
    padding: 2rem 1.5rem;
    border-radius: 16px;
    background: var(--mud-palette-surface);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    cursor: pointer;
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease, background-color 0.18s ease;
}

.nf-quick-link-card:hover[b-l4w8pjxs08],
.nf-quick-link-card:focus-visible[b-l4w8pjxs08] {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
}

.nf-quick-link-card:focus-visible[b-l4w8pjxs08] {
    outline: none;
}

.nf-quick-link-card:active[b-l4w8pjxs08] {
    transform: translateY(0);
    transition-duration: 0.06s;
}

.nf-quick-link-card-icon[b-l4w8pjxs08] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 16px;
    flex-shrink: 0;
    transition: transform 0.18s ease;
}

.nf-quick-link-card:hover .nf-quick-link-card-icon[b-l4w8pjxs08] {
    transform: scale(1.06);
}

.nf-quick-link-card-body[b-l4w8pjxs08] {
    min-width: 0;
}

.nf-quick-link-card-label[b-l4w8pjxs08] {
    font-weight: 600 !important;
    display: block;
}

.nf-quick-link-card-caption[b-l4w8pjxs08] {
    display: block;
    color: var(--mud-palette-text-secondary);
}

/* Acento por grupo (Operación = verde de marca, Facturación = azul) — usa las variables -rgb que expone
   MudThemeProvider para que el tinte del ícono siga automáticamente el tema activo (incluido modo oscuro). */
.nf-quick-link-card--primary .nf-quick-link-card-icon[b-l4w8pjxs08] {
    background: rgba(var(--mud-palette-primary-rgb), 0.12);
    color: var(--mud-palette-primary);
}

.nf-quick-link-card--primary:hover[b-l4w8pjxs08],
.nf-quick-link-card--primary:focus-visible[b-l4w8pjxs08] {
    border-color: var(--mud-palette-primary);
}

.nf-quick-link-card--primary:focus-visible[b-l4w8pjxs08] {
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08), 0 0 0 3px rgba(var(--mud-palette-primary-rgb), 0.3);
}

.nf-quick-link-card--info .nf-quick-link-card-icon[b-l4w8pjxs08] {
    background: rgba(var(--mud-palette-info-rgb), 0.12);
    color: var(--mud-palette-info);
}

.nf-quick-link-card--info:hover[b-l4w8pjxs08],
.nf-quick-link-card--info:focus-visible[b-l4w8pjxs08] {
    border-color: var(--mud-palette-info);
}

.nf-quick-link-card--info:focus-visible[b-l4w8pjxs08] {
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08), 0 0 0 3px rgba(var(--mud-palette-info-rgb), 0.3);
}

.nf-fade-in[b-l4w8pjxs08] {
    animation: nf-quick-link-card-fade-up-b-l4w8pjxs08 0.45s ease-out both;
}

@keyframes nf-quick-link-card-fade-up-b-l4w8pjxs08 {
    from {
        opacity: 0;
        transform: translateY(8px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .nf-fade-in[b-l4w8pjxs08] {
        animation: none !important;
    }

    .nf-quick-link-card[b-l4w8pjxs08],
    .nf-quick-link-card-icon[b-l4w8pjxs08] {
        transition: none !important;
    }
}
/* /Components/Atoms/StatTile.razor.rz.scp.css */
/* StatTile — extraído de Pages/Home.razor.css (franja de resumen de KPIs). Misma estructura en fila que
   QuickLinkCard (ícono + texto) para que ambos se lean como parte del mismo lenguaje visual, con una franja
   superior de color que indica severidad (normal/warning/error) en vez de flotar como una tarjeta genérica. */
.nf-stat-tile[b-w6gyyxrk1v] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.25rem 1.5rem;
    border-radius: 16px;
    background: var(--mud-palette-surface);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}

.nf-stat-tile[b-w6gyyxrk1v]::before {
    content: "";
    position: absolute;
    inset: 0 0 auto 0;
    height: 4px;
}

.nf-stat-tile:hover[b-w6gyyxrk1v],
.nf-stat-tile:focus-visible[b-w6gyyxrk1v] {
    transform: translateY(-4px);
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.12);
}

.nf-stat-tile:focus-visible[b-w6gyyxrk1v] {
    outline: none;
}

.nf-stat-tile:active[b-w6gyyxrk1v] {
    transform: translateY(-1px);
    transition-duration: 0.06s;
}

.nf-stat-tile--loading[b-w6gyyxrk1v] {
    cursor: default;
}

.nf-stat-tile-icon[b-w6gyyxrk1v] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    border-radius: 13px;
    flex-shrink: 0;
}

.nf-stat-tile-body[b-w6gyyxrk1v] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.nf-stat-tile-value[b-w6gyyxrk1v] {
    font-weight: 700 !important;
    display: block;
}

.nf-stat-tile-label[b-w6gyyxrk1v] {
    display: block;
    color: var(--mud-palette-text-secondary);
}

.nf-stat-tile--normal[b-w6gyyxrk1v]::before { background: linear-gradient(90deg, var(--mud-palette-primary), var(--mud-palette-info)); }
.nf-stat-tile--normal .nf-stat-tile-icon[b-w6gyyxrk1v] { background: rgba(var(--mud-palette-primary-rgb), 0.12); color: var(--mud-palette-primary); }

.nf-stat-tile--warning[b-w6gyyxrk1v]::before { background: var(--mud-palette-warning); }
.nf-stat-tile--warning .nf-stat-tile-icon[b-w6gyyxrk1v] { background: rgba(var(--mud-palette-warning-rgb), 0.14); color: var(--mud-palette-warning); }
.nf-stat-tile--warning .nf-stat-tile-value[b-w6gyyxrk1v] { color: var(--mud-palette-warning) !important; }

.nf-stat-tile--error[b-w6gyyxrk1v]::before { background: var(--mud-palette-error); }
.nf-stat-tile--error .nf-stat-tile-icon[b-w6gyyxrk1v] { background: rgba(var(--mud-palette-error-rgb), 0.14); color: var(--mud-palette-error); }
.nf-stat-tile--error .nf-stat-tile-value[b-w6gyyxrk1v] { color: var(--mud-palette-error) !important; }

.nf-fade-in[b-w6gyyxrk1v] {
    animation: nf-stat-tile-fade-up-b-w6gyyxrk1v 0.45s ease-out both;
}

@keyframes nf-stat-tile-fade-up-b-w6gyyxrk1v {
    from {
        opacity: 0;
        transform: translateY(8px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .nf-fade-in[b-w6gyyxrk1v] {
        animation: none !important;
    }

    .nf-stat-tile[b-w6gyyxrk1v] {
        transition: none !important;
    }
}
/* /Components/Molecules/AccountMenu.razor.rz.scp.css */
/* Panel de cuenta, al pie del sidebar (rediseño 2026-08-26). */
[b-t5e2myot4v] .nf-account {
    width: 100%;
}

.nf-account-trigger[b-t5e2myot4v] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.4375rem 0.5rem;
    border-radius: 10px;
    cursor: pointer;
    transition: background-color 0.15s ease;
}

.nf-account-trigger:hover[b-t5e2myot4v] {
    background: var(--mud-palette-background-grey);
}

/* El defecto que originó todo esto: MudImage agrega por defecto la clase `object-fill`, así que una foto
   vertical (615×795) se estiraba a lo ancho dentro del círculo y la cara salía comprimida. Se corrige con
   el parámetro del componente (ObjectFit.Cover), no peleando el CSS. */
[b-t5e2myot4v] .nf-account-avatar {
    flex: 0 0 auto;
}

.nf-account-who[b-t5e2myot4v] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    line-height: 1.25;
    text-align: left;
}

.nf-account-name[b-t5e2myot4v] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--mud-palette-text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nf-account-meta[b-t5e2myot4v] {
    font-size: 0.6875rem;
    color: var(--mud-palette-text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nf-account-chevron[b-t5e2myot4v] {
    margin-left: auto;
    flex: 0 0 auto;
    color: var(--mud-palette-text-disabled);
}

/* Cabecera dentro del panel: repite la identidad porque el disparador queda tapado al abrirse. */
.nf-account-head[b-t5e2myot4v] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--mud-palette-divider);
    background: var(--mud-palette-background-grey);
}

.nf-account-section[b-t5e2myot4v] {
    padding: 0.625rem 1rem 0.25rem;
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--mud-palette-text-disabled);
}

/* La preferencia de vista no es un MudMenuItem: elegirla no debe cerrar el panel. */
.nf-account-pref[b-t5e2myot4v] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.375rem 1rem 0.625rem;
    font-size: 0.875rem;
    color: var(--mud-palette-text-primary);
}

.nf-account-pref-icon[b-t5e2myot4v] {
    color: var(--mud-palette-text-secondary);
}

[b-t5e2myot4v] .nf-account-toggle {
    margin-left: auto;
}

[b-t5e2myot4v] .nf-account-logout {
    color: var(--mud-palette-error);
    font-weight: 600;
}
/* /Components/Molecules/AttentionPanel.razor.rz.scp.css */
/* AttentionPanel — lista de pendientes accionables del Home (módulo 13). El acento de 4px a la izquierda
   codifica la severidad, mismo recurso que usa el dashboard de SAE para el estado de una entidad. */
.nf-attention[b-eaa1h3t888] {
    border: 1px solid var(--mud-palette-divider);
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
    padding: 1.25rem 1.375rem;
    border-radius: 16px;
    background: var(--mud-palette-surface);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.nf-attention-header[b-eaa1h3t888] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
}

.nf-attention-title[b-eaa1h3t888] {
    font-weight: 700 !important;
}

.nf-attention-list[b-eaa1h3t888] {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.nf-attention-item[b-eaa1h3t888] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    padding: 0.875rem 1rem;
    border: 1px solid var(--mud-palette-divider);
    border-left-width: 4px;
    border-radius: 12px;
}

.nf-attention-item--loading[b-eaa1h3t888] {
    border-left-width: 1px;
}

.nf-attention-icon[b-eaa1h3t888] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 11px;
    flex-shrink: 0;
}

.nf-attention-body[b-eaa1h3t888] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    flex: 1 1 auto;
    min-width: 0;
}

.nf-attention-item-title[b-eaa1h3t888] {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--mud-palette-text-primary);
}

.nf-attention-item-detail[b-eaa1h3t888] {
    font-size: 0.78125rem;
    color: var(--mud-palette-text-secondary);
}

.nf-attention-action[b-eaa1h3t888] {
    flex-shrink: 0;
    text-transform: none;
    font-weight: 700;
}

.nf-attention-item--warning[b-eaa1h3t888] { border-left-color: var(--mud-palette-warning); }
.nf-attention-item--warning .nf-attention-icon[b-eaa1h3t888] { background: rgba(var(--mud-palette-warning-rgb), 0.14); color: var(--mud-palette-warning); }

.nf-attention-item--error[b-eaa1h3t888] { border-left-color: var(--mud-palette-error); }
.nf-attention-item--error .nf-attention-icon[b-eaa1h3t888] { background: rgba(var(--mud-palette-error-rgb), 0.12); color: var(--mud-palette-error); }

.nf-attention-item--normal[b-eaa1h3t888] { border-left-color: var(--mud-palette-info); }
.nf-attention-item--normal .nf-attention-icon[b-eaa1h3t888] { background: rgba(var(--mud-palette-info-rgb), 0.10); color: var(--mud-palette-info); }

.nf-attention-empty[b-eaa1h3t888] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.375rem;
    padding: 2rem 1rem 2.25rem;
}

.nf-attention-empty-icon[b-eaa1h3t888] {
    width: 40px;
    height: 40px;
    color: var(--mud-palette-success);
    margin-bottom: 0.25rem;
}

.nf-attention-empty-caption[b-eaa1h3t888] {
    color: var(--mud-palette-text-secondary);
    max-width: 22rem;
}

@media (max-width: 700px) {
    .nf-attention-item[b-eaa1h3t888] {
        flex-wrap: wrap;
    }

    .nf-attention-action[b-eaa1h3t888] {
        margin-left: 3.375rem;
    }
}
/* /Components/Molecules/CenterProgressTable.razor.rz.scp.css */
/* CenterProgressTable — entregado vs. esperado por centro (Centro de Operaciones). */
.nf-centers[b-p73hyq512k] {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--mud-palette-divider);
    border-radius: 16px;
    background: var(--mud-palette-surface);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    overflow: hidden;
}

.nf-centers-header[b-p73hyq512k] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    flex-wrap: wrap;
    padding: 0.875rem 1.25rem;
    border-bottom: 1px solid var(--mud-palette-divider);
}

.nf-centers-title[b-p73hyq512k] {
    font-size: 0.90625rem;
    font-weight: 800;
    color: var(--mud-palette-text-primary);
}

.nf-centers-caption[b-p73hyq512k] {
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

.nf-centers-spacer[b-p73hyq512k] {
    flex: 1 1 auto;
}

.nf-centers-row[b-p73hyq512k] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 6.75rem 8.25rem 9.75rem;
    align-items: center;
    gap: 0.75rem;
    padding: 0.6875rem 1.25rem;
    border-bottom: 1px solid var(--mud-palette-divider-light);
}

.nf-centers-row:last-child[b-p73hyq512k] {
    border-bottom: none;
}

.nf-centers-row--head[b-p73hyq512k] {
    background: var(--mud-palette-background-grey);
    padding-block: 0.5625rem;
}

.nf-centers-row--total[b-p73hyq512k] {
    background: var(--mud-palette-background-grey);
    font-weight: 800;
}

.nf-centers-th[b-p73hyq512k] {
    font-size: 0.65625rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.nf-centers-name[b-p73hyq512k] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--mud-palette-text-primary);
}

/* Nombres largos de centro en una sola línea: la retícula se mantiene y el título completo va en el
   tooltip. Va en su propio span porque el contenedor es flex y la elipsis no se aplica a un nodo de
   texto suelto dentro de él. */
.nf-centers-label[b-p73hyq512k] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Mismo tag que la tabla del día: la lista se ordena por él, así que tiene que verse. */
.nf-centers-tag[b-p73hyq512k] {
    flex: 0 0 auto;
    min-width: 1.5rem;
    padding: 0.0625rem 0.375rem;
    border-radius: 6px;
    background: var(--mud-palette-surface);
    border: 1px solid var(--mud-palette-divider);
    font-size: 0.6875rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    text-align: center;
    color: var(--mud-palette-text-secondary);
}

.nf-centers-num[b-p73hyq512k] {
    font-size: 0.8125rem;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-primary);
}

.nf-centers-expected[b-p73hyq512k] {
    color: var(--mud-palette-text-disabled);
}

.nf-centers-progress[b-p73hyq512k] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.nf-centers-bar[b-p73hyq512k] {
    flex: 1 1 auto;
    height: 6px;
}

.nf-centers-pct[b-p73hyq512k] {
    width: 2.25rem;
    text-align: right;
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--mud-palette-warning);
}

.nf-centers-pct--done[b-p73hyq512k] {
    color: var(--mud-palette-success);
}

@media (max-width: 780px) {
    .nf-centers-row[b-p73hyq512k] {
        grid-template-columns: minmax(0, 1fr) 5.5rem;
        row-gap: 0.375rem;
    }

    .nf-centers-row--head[b-p73hyq512k] {
        display: none;
    }

    .nf-centers-progress[b-p73hyq512k] {
        grid-column: 1 / -1;
    }
}
/* /Components/Molecules/ClientPicker.razor.rz.scp.css */
/* ClientPicker — buscar el cliente en vez de reconocerlo en un desplegable. */
.nf-client-picker[b-l3dh0rzt30] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.nf-client-input[b-l3dh0rzt30] {
    flex: 1 1 auto;
    min-width: 0;
}

.nf-client-option[b-l3dh0rzt30] {
    display: flex;
    align-items: baseline;
    gap: 0.625rem;
    min-width: 0;
    width: 100%;
}

.nf-client-name[b-l3dh0rzt30] {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* El RNC es la segunda forma de reconocer un cliente, y por la que también se busca. */
.nf-client-meta[b-l3dh0rzt30] {
    font-size: 0.71875rem;
    color: var(--mud-palette-text-secondary);
    font-variant-numeric: tabular-nums;
}

.nf-client-tag[b-l3dh0rzt30] {
    margin-left: auto;
    flex: 0 0 auto;
    padding: 0.0625rem 0.375rem;
    border-radius: 999px;
    border: 1px solid var(--mud-palette-info);
    color: var(--mud-palette-info);
    font-size: 0.625rem;
    font-weight: 700;
}

.nf-client-empty[b-l3dh0rzt30] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding: 0.5rem 0.75rem;
    font-size: 0.8125rem;
    color: var(--mud-palette-text-secondary);
}

.nf-client-summary[b-l3dh0rzt30] {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-top: 0.375rem;
    padding-left: 0.125rem;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

.nf-client-summary > span + span[b-l3dh0rzt30]::before {
    content: "·";
    margin-right: 0.75rem;
    color: var(--mud-palette-text-disabled);
}
/* /Components/Molecules/ContractCentersPreview.razor.rz.scp.css */
/* Resumen de centros del contrato — la gestión completa vive en el modal. */
.nf-centers-preview[b-aao3e5x4ax] {
    border: 1px solid var(--mud-palette-divider);
    border-radius: 16px;
    background: var(--mud-palette-surface);
    overflow: hidden;
}

.nf-centers-preview-head[b-aao3e5x4ax] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.625rem 1rem 0.625rem 1.25rem;
    border-bottom: 1px solid var(--mud-palette-divider);
    background: var(--mud-palette-background-grey);
}

.nf-centers-preview-title[b-aao3e5x4ax] {
    font-size: 0.90625rem;
    font-weight: 800;
    color: var(--mud-palette-text-primary);
}

.nf-centers-preview-count[b-aao3e5x4ax] {
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

.nf-centers-preview-spacer[b-aao3e5x4ax] {
    flex: 1 1 auto;
}

.nf-centers-preview-empty[b-aao3e5x4ax] {
    padding: 1.25rem;
    font-size: 0.875rem;
    color: var(--mud-palette-text-secondary);
}

.nf-centers-preview-row[b-aao3e5x4ax] {
    display: grid;
    grid-template-columns: 2rem minmax(0, 1fr) 5.5rem 5rem;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5625rem 1.25rem;
    border-bottom: 1px solid var(--mud-palette-divider-light);
}

.nf-centers-preview-row:last-child[b-aao3e5x4ax] {
    border-bottom: none;
}

/* Mismo badge de tag que la tabla del día en el Centro de Operaciones: es el orden de la ruta. */
.nf-centers-preview-tag[b-aao3e5x4ax] {
    padding: 0.0625rem 0.375rem;
    border-radius: 6px;
    border: 1px solid var(--mud-palette-divider);
    background: var(--mud-palette-background-grey);
    font-size: 0.6875rem;
    font-weight: 700;
    text-align: center;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

.nf-centers-preview-name[b-aao3e5x4ax] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--mud-palette-text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nf-centers-preview-code[b-aao3e5x4ax],
.nf-centers-preview-servings[b-aao3e5x4ax] {
    font-size: 0.8125rem;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

.nf-centers-preview-servings[b-aao3e5x4ax] {
    text-align: right;
    font-weight: 700;
    color: var(--mud-palette-text-primary);
}

@media (max-width: 700px) {
    .nf-centers-preview-row[b-aao3e5x4ax] {
        grid-template-columns: 2rem minmax(0, 1fr) 4.5rem;
    }

    .nf-centers-preview-code[b-aao3e5x4ax] {
        display: none;
    }
}
/* /Components/Molecules/ContractProgressCard.razor.rz.scp.css */
/* ContractProgressCard — tira de contrato vigente en el Home (módulo 13). */
.nf-contract-card[b-vubkur8l69] {
    border: 1px solid var(--mud-palette-divider);
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    gap: 1.375rem;
    padding: 1.125rem 1.375rem 1.125rem 1.625rem;
    border-radius: 16px;
    background: var(--mud-palette-surface);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.nf-contract-accent[b-vubkur8l69] {
    position: absolute;
    top: 0;
    left: 0;
    width: 6px;
    height: 100%;
    background: var(--mud-palette-success);
}

.nf-contract-identity[b-vubkur8l69] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    flex: 0 1 16rem;
    min-width: 0;
}

.nf-contract-number[b-vubkur8l69] {
    font-size: 1rem;
    font-weight: 800;
    color: var(--mud-palette-text-primary);
}

.nf-contract-caption[b-vubkur8l69] {
    font-size: 0.78125rem;
    color: var(--mud-palette-text-secondary);
}

.nf-contract-metric[b-vubkur8l69] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    flex-shrink: 0;
}

.nf-contract-metric-label[b-vubkur8l69] {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.nf-contract-metric-value[b-vubkur8l69] {
    font-size: 1.125rem;
    font-weight: 800;
    color: var(--mud-palette-text-primary);
}

.nf-contract-metric-total[b-vubkur8l69] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
}

.nf-contract-progress[b-vubkur8l69] {
    flex: 1 1 auto;
    min-width: 0;
    max-width: 24rem;
    display: flex;
    flex-direction: column;
    gap: 0.4375rem;
}

.nf-contract-progress-header[b-vubkur8l69] {
    display: flex;
    justify-content: space-between;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
}

.nf-contract-progress-pct[b-vubkur8l69] {
    color: var(--mud-palette-text-primary);
}

.nf-contract-progress-bar[b-vubkur8l69] {
    height: 8px;
}

.nf-contract-action[b-vubkur8l69] {
    flex-shrink: 0;
    text-transform: none;
    font-weight: 600;
}

@media (max-width: 900px) {
    .nf-contract-card[b-vubkur8l69] {
        flex-wrap: wrap;
        gap: 1rem;
    }

    .nf-contract-identity[b-vubkur8l69] {
        flex: 1 1 100%;
    }

    .nf-contract-progress[b-vubkur8l69] {
        max-width: none;
        flex: 1 1 100%;
    }
}
/* /Components/Molecules/ContractSummaryStrip.razor.rz.scp.css */
/* ContractSummaryStrip — el total de la semana manda; el resto acompaña. */
.nf-contract-strip[b-33dgjvj5pf] {
    display: flex;
    align-items: stretch;
    gap: 1rem;
    flex-wrap: wrap;
}

.nf-contract-hero[b-33dgjvj5pf] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0.125rem;
    padding: 0.875rem 1.25rem;
    border: 1px solid var(--mud-palette-primary);
    border-radius: 14px;
    background: var(--mud-palette-background-grey);
    min-width: 12rem;
}

.nf-contract-hero-value[b-33dgjvj5pf] {
    font-size: 2rem;
    font-weight: 800;
    line-height: 1.05;
    color: var(--mud-palette-primary);
    font-variant-numeric: tabular-nums;
}

.nf-contract-hero-money[b-33dgjvj5pf] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
    font-variant-numeric: tabular-nums;
}

.nf-contract-facts[b-33dgjvj5pf] {
    display: flex;
    align-items: stretch;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.nf-contract-fact[b-33dgjvj5pf] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0.125rem;
    padding: 0.625rem 0.875rem;
    border: 1px solid var(--mud-palette-divider);
    border-radius: 12px;
    min-width: 6rem;
}

.nf-contract-label[b-33dgjvj5pf] {
    font-size: 0.65625rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.nf-contract-value[b-33dgjvj5pf] {
    font-size: 1.0625rem;
    font-weight: 700;
    color: var(--mud-palette-text-primary);
    font-variant-numeric: tabular-nums;
}
/* /Components/Molecules/CurrentSupplierSelector.razor.rz.scp.css */
/* Selector de suplidor activo en la barra superior. Comparte el lenguaje del selector de expediente. */
[b-73cv7yyem0] .nf-supplier-popover {
    max-height: 26rem;
    min-width: 20rem;
}

.nf-supplier-filter[b-73cv7yyem0] {
    padding: 0.5rem 0.75rem 0.25rem;
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--mud-palette-surface);
}

.nf-supplier-empty[b-73cv7yyem0] {
    padding: 0.75rem;
    font-size: 0.875rem;
    color: var(--mud-palette-text-secondary);
}

.nf-supplier-item[b-73cv7yyem0] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
}

.nf-supplier-who[b-73cv7yyem0] {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
    margin-right: auto;
}

.nf-supplier-user[b-73cv7yyem0] {
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}
/* /Components/Molecules/DocumentActionBar.razor.rz.scp.css */
.nf-document-action-bar[b-3t1cmohtpy] {
    align-items: center;
}
/* /Components/Molecules/DossierCalendar.razor.rz.scp.css */
/* DossierCalendar — calendario del expediente con estado por fecha (Centro de Operaciones). */
.nf-cal[b-fvhn42kxff] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.nf-cal-header[b-fvhn42kxff] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.nf-cal-title[b-fvhn42kxff] {
    font-size: 0.875rem;
    font-weight: 800;
    color: var(--mud-palette-text-primary);
}

.nf-cal-spacer[b-fvhn42kxff] {
    flex: 1 1 auto;
}

.nf-cal-today[b-fvhn42kxff] {
    text-transform: none;
    font-weight: 700;
    min-width: 0;
}

.nf-cal-grid[b-fvhn42kxff] {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 3px;
}

.nf-cal-dow[b-fvhn42kxff] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 20px;
    font-size: 0.625rem;
    font-weight: 700;
    color: var(--mud-palette-text-disabled);
}

.nf-cal-day[b-fvhn42kxff] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 32px;
    padding: 0;
    border: none;
    border-radius: 9px;
    background: transparent;
    font-family: inherit;
    font-size: 0.78125rem;
    font-weight: 600;
    color: var(--mud-palette-text-primary);
    cursor: pointer;
    transition: background-color 0.15s ease;
}

.nf-cal-day:hover:not(:disabled)[b-fvhn42kxff] {
    background: var(--mud-palette-action-default-hover);
}

.nf-cal-day:focus-visible[b-fvhn42kxff] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: -2px;
}

.nf-cal-day--empty[b-fvhn42kxff],
.nf-cal-day--none[b-fvhn42kxff] {
    color: var(--mud-palette-text-disabled);
    cursor: default;
}

.nf-cal-day--holiday[b-fvhn42kxff] {
    color: var(--mud-palette-error);
    font-weight: 800;
}

.nf-cal-day--selected[b-fvhn42kxff] {
    background: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
    font-weight: 800;
}

.nf-cal-day--selected:hover:not(:disabled)[b-fvhn42kxff] {
    background: var(--mud-palette-primary);
}

.nf-cal-dot[b-fvhn42kxff] {
    position: absolute;
    bottom: 3px;
    left: 50%;
    transform: translateX(-50%);
    width: 5px;
    height: 5px;
    border-radius: 50%;
}

.nf-cal-dot--confirmed[b-fvhn42kxff] { background: var(--mud-palette-success); }
.nf-cal-dot--pending[b-fvhn42kxff] { background: var(--mud-palette-warning); }

/* Sobre el día seleccionado (fondo verde) el punto de estado necesita contraste propio. */
.nf-cal-day--selected .nf-cal-dot[b-fvhn42kxff] {
    background: var(--mud-palette-primary-text);
}

.nf-cal-legend[b-fvhn42kxff] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    padding-top: 0.625rem;
    border-top: 1px solid var(--mud-palette-divider-light);
}

.nf-cal-legend-item[b-fvhn42kxff] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 9px;
    border-radius: 999px;
    font-size: 0.71875rem;
    font-weight: 700;
}

.nf-cal-legend-item--confirmed[b-fvhn42kxff] { background: rgba(var(--mud-palette-success-rgb), 0.12); color: var(--mud-palette-success-darken); }
.nf-cal-legend-item--pending[b-fvhn42kxff] { background: rgba(var(--mud-palette-warning-rgb), 0.14); color: var(--mud-palette-warning-darken); }
.nf-cal-legend-item--holiday[b-fvhn42kxff] { background: rgba(var(--mud-palette-error-rgb), 0.10); color: var(--mud-palette-error-darken); }
.nf-cal-legend-item--none[b-fvhn42kxff] { background: var(--mud-palette-background-grey); color: var(--mud-palette-text-secondary); }
/* /Components/Molecules/DossierProgressBar.razor.rz.scp.css */
/* DossierProgressBar — estado del cierre del expediente (Centro de Operaciones). */
.nf-dossier-progress[b-dvbvk22xxh] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    border: 1px solid var(--mud-palette-divider);
    border-radius: 16px;
    background: var(--mud-palette-surface);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.nf-dossier-progress-header[b-dvbvk22xxh] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    flex-wrap: wrap;
}

.nf-dossier-progress-title[b-dvbvk22xxh] {
    font-size: 0.875rem;
    font-weight: 800;
    color: var(--mud-palette-text-primary);
}

.nf-dossier-progress-chip[b-dvbvk22xxh] {
    font-weight: 700;
}

.nf-dossier-progress-spacer[b-dvbvk22xxh] {
    flex: 1 1 auto;
}

.nf-dossier-progress-detail[b-dvbvk22xxh] {
    font-size: 0.78125rem;
    color: var(--mud-palette-text-secondary);
}

.nf-dossier-progress-track[b-dvbvk22xxh] {
    display: flex;
    gap: 0.25rem;
}

.nf-dossier-progress-segment[b-dvbvk22xxh] {
    flex: 1 1 0;
    height: 6px;
    border-radius: 999px;
}

.nf-dossier-progress-labels[b-dvbvk22xxh] {
    display: flex;
    gap: 0.25rem;
}

.nf-dossier-progress-label[b-dvbvk22xxh] {
    flex: 1 1 0;
    min-width: 0;
    font-size: 0.71875rem;
    font-weight: 600;
    color: var(--mud-palette-text-disabled);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nf-dossier-progress-label--done[b-dvbvk22xxh] {
    color: var(--mud-palette-success);
    font-weight: 700;
}

.nf-dossier-progress-label--active[b-dvbvk22xxh] {
    color: var(--mud-palette-warning);
    font-weight: 700;
}

/* Las etiquetas son botones de navegación: se les quita el aspecto de botón, pero conservan foco visible. */
.nf-dossier-progress-label[b-dvbvk22xxh] {
    appearance: none;
    border: none;
    background: none;
    padding: 0;
    font-family: inherit;
    text-align: left;
    cursor: pointer;
    border-radius: 6px;
}

.nf-dossier-progress-label:disabled[b-dvbvk22xxh] {
    cursor: default;
}

.nf-dossier-progress-label:not(:disabled):hover[b-dvbvk22xxh] {
    text-decoration: underline;
}

.nf-dossier-progress-label:focus-visible[b-dvbvk22xxh] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 2px;
}


.nf-fade-in[b-dvbvk22xxh] {
    animation: nf-dossier-progress-fade-up-b-dvbvk22xxh 0.45s ease-out both;
}

@keyframes nf-dossier-progress-fade-up-b-dvbvk22xxh {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    .nf-fade-in[b-dvbvk22xxh] { animation: none !important; }
}
/* /Components/Molecules/ExpedienteHeader.razor.rz.scp.css */
/* ExpedienteHeader — encabezado del Centro de Operaciones (rediseño 2026-08-25, patrón ExpedienteForm de SAE). */
.nf-exp-header[b-u5vuugc3qj] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.125rem 1.375rem;
    border: 1px solid var(--mud-palette-divider);
    border-radius: 16px;
    background: var(--mud-palette-surface);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.nf-exp-avatar[b-u5vuugc3qj] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    flex-shrink: 0;
    background: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
    font-size: 1.5rem;
    font-weight: 800;
    box-shadow: 0 4px 12px rgba(var(--mud-palette-primary-rgb), 0.30);
}

.nf-exp-identity[b-u5vuugc3qj] {
    display: flex;
    flex-direction: column;
    gap: 0.3125rem;
    min-width: 0;
}

.nf-exp-title-row[b-u5vuugc3qj] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    min-width: 0;
}

.nf-exp-title[b-u5vuugc3qj] {
    font-size: 1.375rem;
    font-weight: 800;
    letter-spacing: -0.01em;
    color: var(--mud-palette-text-primary);
    /* El nombre viene de datos y puede ser largo: que no empuje las acciones fuera de la fila. */
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nf-exp-chip[b-u5vuugc3qj] {
    flex-shrink: 0;
    font-weight: 700;
}

.nf-exp-crumbs[b-u5vuugc3qj] {
    display: flex;
    align-items: center;
    gap: 0.4375rem;
    flex-wrap: wrap;
}

.nf-exp-crumb[b-u5vuugc3qj] {
    font-size: 0.78125rem;
    font-weight: 500;
    color: var(--mud-palette-text-secondary);
}

.nf-exp-crumb--current[b-u5vuugc3qj] {
    color: var(--mud-palette-primary);
    font-weight: 700;
}

.nf-exp-crumb-sep[b-u5vuugc3qj] {
    font-size: 0.78125rem;
    color: var(--mud-palette-text-secondary);
}

.nf-exp-actions[b-u5vuugc3qj] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 0.625rem;
    flex-shrink: 0;
}

@media (max-width: 900px) {
    .nf-exp-header[b-u5vuugc3qj] {
        flex-wrap: wrap;
    }

    .nf-exp-actions[b-u5vuugc3qj] {
        margin-left: 0;
        width: 100%;
    }
}

.nf-fade-in[b-u5vuugc3qj] {
    animation: nf-exp-fade-up-b-u5vuugc3qj 0.45s ease-out both;
}

@keyframes nf-exp-fade-up-b-u5vuugc3qj {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    .nf-fade-in[b-u5vuugc3qj] { animation: none !important; }
}
/* /Components/Molecules/ListToolbar.razor.rz.scp.css */
/* Encabezado común de las listas maestras: buscar, filtrar y ver el resumen sin scrollear. */
.nf-toolbar[b-wkjmei7w17] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    padding: 0.75rem 1rem;
    margin-bottom: 1rem;
    border: 1px solid var(--mud-palette-divider);
    border-radius: 14px;
    background: var(--mud-palette-surface);
}

.nf-toolbar-search[b-wkjmei7w17] {
    flex: 1 1 16rem;
    min-width: 12rem;
    max-width: 24rem;
}

.nf-toolbar-filters[b-wkjmei7w17] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    flex-wrap: wrap;
}

/* El resumen se va al extremo: es lo que se lee sin buscar nada. */
.nf-toolbar-summary[b-wkjmei7w17] {
    margin-left: auto;
    display: flex;
    align-items: baseline;
    gap: 1.25rem;
    flex-wrap: wrap;
}

[b-wkjmei7w17] .nf-toolbar-metric {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}

[b-wkjmei7w17] .nf-toolbar-metric span {
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

[b-wkjmei7w17] .nf-toolbar-metric b {
    font-size: 1.0625rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-primary);
}

[b-wkjmei7w17] .nf-toolbar-metric--money b {
    color: var(--mud-palette-primary);
}
/* /Components/Molecules/MenueSelector.razor.rz.scp.css */
/* MenueSelector — elige el ciclo de menú, incluidos los vencidos y los programados. */
.nf-menue-selector[b-xymr5k1143] {
    max-width: 34rem;
}

.nf-menue-group[b-xymr5k1143] {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.nf-menue-option[b-xymr5k1143] {
    display: flex;
    align-items: baseline;
    gap: 0.625rem;
    min-width: 0;
    width: 100%;
}

.nf-menue-option-name[b-xymr5k1143] {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nf-menue-option-meta[b-xymr5k1143] {
    font-size: 0.71875rem;
    color: var(--mud-palette-text-secondary);
    font-variant-numeric: tabular-nums;
}

/* El estado del ciclo va al final de cada opción: es lo que distingue el vigente del histórico. */
.nf-menue-option-tag[b-xymr5k1143] {
    margin-left: auto;
    flex: 0 0 auto;
    padding: 0.0625rem 0.375rem;
    border-radius: 999px;
    border: 1px solid currentColor;
    font-size: 0.625rem;
    font-weight: 700;
}

.nf-menue-option-tag--current[b-xymr5k1143] {
    color: var(--mud-palette-success);
}

.nf-menue-option-tag--future[b-xymr5k1143] {
    color: var(--mud-palette-info);
}

.nf-menue-option-tag--past[b-xymr5k1143] {
    color: var(--mud-palette-text-disabled);
}
/* /Components/Molecules/QuickLinkPanel.razor.rz.scp.css */
/* QuickLinkPanel — extraído de Pages/Home.razor.css (panel contenedor de cada grupo de accesos rápidos). */
.nf-quick-link-panel[b-cux3suqmmw] {
    background: var(--mud-palette-surface);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 20px;
    padding: 1.75rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    margin-bottom: 1.75rem;
}

.nf-quick-link-panel-header[b-cux3suqmmw] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
}

.nf-quick-link-panel-header-icon[b-cux3suqmmw] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--mud-palette-primary), var(--mud-palette-info));
    color: var(--mud-palette-primary-text);
    flex-shrink: 0;
}

.nf-quick-link-panel-header-title[b-cux3suqmmw] {
    font-weight: 700 !important;
    flex: 1 1 auto;
}

.nf-quick-link-panel-header-count[b-cux3suqmmw] {
    color: var(--mud-palette-text-secondary) !important;
    flex-shrink: 0;
}

.nf-quick-link-panel-grid[b-cux3suqmmw] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1.25rem;
}

.nf-fade-in[b-cux3suqmmw] {
    animation: nf-quick-link-panel-fade-up-b-cux3suqmmw 0.45s ease-out both;
}

@keyframes nf-quick-link-panel-fade-up-b-cux3suqmmw {
    from {
        opacity: 0;
        transform: translateY(8px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .nf-fade-in[b-cux3suqmmw] {
        animation: none !important;
    }
}
/* /Components/Molecules/RangeMeter.razor.rz.scp.css */
/* Consumo de un rango de NCF. Los dos tramos van pegados dentro de la misma pista: juntos son "lo que ya
   no se puede usar", y separados dicen cuánto de eso salió de NutriFlow. */
.nf-meter[b-98y2qyi1zn] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    min-width: 8rem;
}

.nf-meter-track[b-98y2qyi1zn] {
    display: flex;
    height: 7px;
    border-radius: 4px;
    overflow: hidden;
    background: var(--mud-palette-lines-default);
}

.nf-meter-fill[b-98y2qyi1zn] {
    height: 100%;
    background: var(--mud-palette-primary);
}

.nf-meter-fill--external[b-98y2qyi1zn] {
    background: var(--mud-palette-secondary);
}

.nf-meter-fill--warning[b-98y2qyi1zn] {
    background: var(--mud-palette-warning);
}

.nf-meter-fill--danger[b-98y2qyi1zn] {
    background: var(--mud-palette-error);
}

.nf-meter-legend[b-98y2qyi1zn] {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    font-size: 0.6875rem;
    line-height: 1.3;
    color: var(--mud-palette-text-secondary);
}

.nf-meter-legend b[b-98y2qyi1zn] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-primary);
}
/* /Components/Molecules/StatBar.razor.rz.scp.css */
/* StatBar — barra única de indicadores del Home (módulo 13). Los valores comparten línea base y peso;
   lo único que varía por indicador es el color del ícono (y del valor cuando hay severidad), que es lo
   que debe guiar la vista. Sustituye a la grilla de StatTile sueltas, que daba una tarjeta por dato. */
.nf-statbar[b-dqpmt1ow5v] {
    border: 1px solid var(--mud-palette-divider);
    display: flex;
    align-items: stretch;
    flex-wrap: wrap;
    padding: 1.25rem 0.5rem;
    border-radius: 16px;
    background: var(--mud-palette-surface);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.nf-statbar-divider[b-dqpmt1ow5v] {
    width: 1px;
    background: var(--mud-palette-divider);
    margin: 0.25rem 0;
    flex-shrink: 0;
}

.nf-statbar-item[b-dqpmt1ow5v] {
    flex: 1 1 190px;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 0.875rem;
    padding: 0 1.25rem;
    cursor: pointer;
    border-radius: 12px;
    transition: background-color 0.18s ease;
}

.nf-statbar-item:hover[b-dqpmt1ow5v],
.nf-statbar-item:focus-visible[b-dqpmt1ow5v] {
    background: var(--mud-palette-action-default-hover);
}

.nf-statbar-item:focus-visible[b-dqpmt1ow5v] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: -2px;
}

.nf-statbar-icon[b-dqpmt1ow5v] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    border-radius: 13px;
    flex-shrink: 0;
}

.nf-statbar-body[b-dqpmt1ow5v] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 0;
}

/* Etiqueta arriba y valor abajo: al revés que en StatTile, donde el número iba primero y no se sabía
   de qué era hasta leer el pie en gris. */
.nf-statbar-label[b-dqpmt1ow5v] {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nf-statbar-value[b-dqpmt1ow5v] {
    font-size: 1.75rem;
    font-weight: 800;
    line-height: 1.1;
    color: var(--mud-palette-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nf-statbar-skeleton[b-dqpmt1ow5v] {
    border-radius: 6px;
}

.nf-statbar-item--primary .nf-statbar-icon[b-dqpmt1ow5v] { background: rgba(var(--mud-palette-primary-rgb), 0.12); color: var(--mud-palette-primary); }
.nf-statbar-item--info .nf-statbar-icon[b-dqpmt1ow5v] { background: rgba(var(--mud-palette-info-rgb), 0.10); color: var(--mud-palette-info); }
.nf-statbar-item--success .nf-statbar-icon[b-dqpmt1ow5v] { background: rgba(var(--mud-palette-success-rgb), 0.12); color: var(--mud-palette-success); }

.nf-statbar-item--warning .nf-statbar-icon[b-dqpmt1ow5v] { background: rgba(var(--mud-palette-warning-rgb), 0.14); color: var(--mud-palette-warning); }
.nf-statbar-item--warning .nf-statbar-value[b-dqpmt1ow5v] { color: var(--mud-palette-warning); }

.nf-statbar-item--error .nf-statbar-icon[b-dqpmt1ow5v] { background: rgba(var(--mud-palette-error-rgb), 0.14); color: var(--mud-palette-error); }
.nf-statbar-item--error .nf-statbar-value[b-dqpmt1ow5v] { color: var(--mud-palette-error); }

/* Bajo 900px la fila se parte: los divisores verticales dejan de tener sentido entre elementos apilados. */
@media (max-width: 900px) {
    .nf-statbar[b-dqpmt1ow5v] {
        padding: 0.75rem 0.5rem;
    }

    .nf-statbar-divider[b-dqpmt1ow5v] {
        display: none;
    }

    .nf-statbar-item[b-dqpmt1ow5v] {
        flex: 1 1 100%;
        padding: 0.625rem 1rem;
    }
}
/* /Components/Organisms/AuthorizationEmissionsDialog.razor.rz.scp.css */
/* El libro de una autorización: un renglón por tramo, números en tabular para que se comparen de un vistazo. */
.nf-emissions-title[b-u44yi4t3hj] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.nf-emissions-sub[b-u44yi4t3hj] {
    display: block;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

.nf-emissions[b-u44yi4t3hj] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: min(38rem, 80vw);
}

.nf-emissions-legend[b-u44yi4t3hj] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    flex-wrap: wrap;
}

.nf-emissions-legend-actions[b-u44yi4t3hj] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.nf-emissions-runs[b-u44yi4t3hj],
.nf-emissions-flat[b-u44yi4t3hj] {
    border: 1px solid var(--mud-palette-divider);
    border-radius: 12px;
    overflow: hidden;
}

/* La lista número por número puede tener miles de filas: se virtualiza y el alto se acota acá. */
.nf-emissions-flat[b-u44yi4t3hj] {
    max-height: 26rem;
    overflow-y: auto;
}

.nf-emission-row[b-u44yi4t3hj] {
    display: grid;
    grid-template-columns: 11rem 1fr auto;
    align-items: center;
    gap: 0.5rem 1rem;
    padding: 0.625rem 0.875rem;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    font-size: 0.875rem;
}

.nf-emission-row:last-child[b-u44yi4t3hj] {
    border-bottom: none;
}

.nf-emission-row--next[b-u44yi4t3hj] {
    background: rgba(15, 157, 116, 0.08);
}

.nf-emission-num[b-u44yi4t3hj] {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    white-space: nowrap;
}

.nf-emission-desc[b-u44yi4t3hj] {
    color: var(--mud-palette-text-secondary);
}

@media (max-width: 700px) {
    .nf-emission-row[b-u44yi4t3hj] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Organisms/CommandPalette.razor.rz.scp.css */
/* CommandPalette — buscador de pantallas (Ctrl+K). */
[b-c76vb4p78l] .nf-palette-list {
    padding-block: 0;
}

[b-c76vb4p78l] .nf-palette-item {
    border-radius: 10px;
}

[b-c76vb4p78l] .nf-palette-item--on {
    background: var(--mud-palette-action-default-hover);
}

.nf-palette-row[b-c76vb4p78l] {
    display: flex;
    align-items: baseline;
    gap: 0.625rem;
    min-width: 0;
}

.nf-palette-label[b-c76vb4p78l] {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* La sección dice de dónde salió el resultado — importa sobre todo para los que ya no están en el menú. */
.nf-palette-section[b-c76vb4p78l] {
    margin-left: auto;
    flex: 0 0 auto;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--mud-palette-text-disabled);
}
/* /Components/Organisms/InvoiceLinesEditor.razor.rz.scp.css */
/* Líneas del documento, editables en la fila (dirección A). Reemplaza un modal por línea. */
.nf-lines[b-7r453175wr] {
    border: 1px solid var(--mud-palette-divider);
    border-radius: 16px;
    background: var(--mud-palette-surface);
    overflow: hidden;
}

.nf-lines-head[b-7r453175wr] {
    display: flex;
    align-items: baseline;
    gap: 0.625rem;
    padding: 0.75rem 1.25rem;
    border-bottom: 1px solid var(--mud-palette-divider);
    background: var(--mud-palette-background-grey);
}

.nf-lines-title[b-7r453175wr] {
    font-size: 0.90625rem;
    font-weight: 800;
    color: var(--mud-palette-text-primary);
}

.nf-lines-count[b-7r453175wr] {
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

/* La tabla tiene siete columnas: que scrollee ella, no la página. */
.nf-lines-table-wrap[b-7r453175wr] {
    overflow-x: auto;
}

.nf-lines-table[b-7r453175wr] {
    width: 100%;
    border-collapse: collapse;
}

.nf-lines-table th[b-7r453175wr] {
    text-align: left;
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--mud-palette-divider);
    font-size: 0.65625rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
}

.nf-lines-table td[b-7r453175wr] {
    padding: 0.25rem 0.75rem;
    border-bottom: 1px solid var(--mud-palette-divider-light);
    vertical-align: middle;
}

.nf-lines-table tr:last-child td[b-7r453175wr] {
    border-bottom: none;
}

.nf-col-service[b-7r453175wr] { min-width: 15rem; }
.nf-col-qty[b-7r453175wr] { width: 7rem; }
.nf-col-price[b-7r453175wr] { width: 10rem; }
.nf-col-itbis[b-7r453175wr] { width: 6.5rem; }
.nf-col-actions[b-7r453175wr] { width: 3rem; }

/* El dinero se lee en columna: alineado a la derecha y con cifras de ancho fijo. */
.nf-col-money[b-7r453175wr] {
    width: 8rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    color: var(--mud-palette-text-primary);
    white-space: nowrap;
}

.nf-money-muted[b-7r453175wr] {
    font-weight: 500;
    color: var(--mud-palette-text-secondary);
}

[b-7r453175wr] .nf-line-number input {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.nf-line-hint[b-7r453175wr] {
    display: block;
    font-size: 0.625rem;
    color: var(--mud-palette-info);
    text-align: right;
    margin-top: -0.125rem;
}

.nf-line-option[b-7r453175wr] {
    display: flex;
    align-items: baseline;
    gap: 0.625rem;
    width: 100%;
    min-width: 0;
}

.nf-line-option-name[b-7r453175wr] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 600;
}

.nf-line-option-price[b-7r453175wr] {
    margin-left: auto;
    font-size: 0.75rem;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

.nf-line-empty[b-7r453175wr] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding: 0.5rem 0.75rem;
    font-size: 0.8125rem;
    color: var(--mud-palette-text-secondary);
}

.nf-lines-add td[b-7r453175wr] {
    padding: 0.25rem 0.5rem;
    background: var(--mud-palette-background-grey);
}

.nf-lines-totals[b-7r453175wr] {
    display: flex;
    flex-direction: column;
    gap: 0.1875rem;
    margin-left: auto;
    width: 18rem;
    padding: 0.875rem 1.25rem 1rem;
    border-top: 1px solid var(--mud-palette-divider);
}

.nf-lines-totals > div[b-7r453175wr] {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    font-size: 0.8125rem;
    color: var(--mud-palette-text-secondary);
    font-variant-numeric: tabular-nums;
}

.nf-lines-grand[b-7r453175wr] {
    padding-top: 0.375rem;
    border-top: 1px solid var(--mud-palette-divider);
    font-size: 1.0625rem !important;
    font-weight: 800;
    color: var(--mud-palette-primary) !important;
}
/* /Components/Organisms/MenueMatrixEditor.razor.rz.scp.css */
/* Matriz del ciclo de menú (rediseño 2026-08-26).

   El problema que resuelve: cada plato se cortaba a 17 caracteres y el más largo del ciclo tiene 211. Como
   todos empiezan igual ("Arroz blanco / Habichuelas..."), lo visible era justo la parte que no distingue un
   día de otro; el texto completo existía solo en el tooltip, celda por celda. */

[b-yuuizn7aen] .nf-menue-matrix {
    table-layout: fixed;
    width: 100%;
}

[b-yuuizn7aen] .nf-menue-matrix th,
[b-yuuizn7aen] .nf-menue-matrix td {
    vertical-align: top;
    padding: 0.375rem;
}

/* La columna de semana es un número: no necesita más que su ancho. */
[b-yuuizn7aen] .nf-menue-matrix th:first-child,
[b-yuuizn7aen] .nf-menue-matrix td:first-child {
    width: 4.5rem;
    text-align: center;
    font-weight: 700;
    color: var(--mud-palette-text-secondary);
}

.nf-cell[b-yuuizn7aen] {
    display: flex;
    flex-direction: column;
    gap: 0.1875rem;
    width: 100%;
    padding: 0.375rem 0.5rem;
    border: 1px solid transparent;
    border-radius: 8px;
    background: none;
    font: inherit;
    text-align: left;
    color: var(--mud-palette-text-primary);
    cursor: pointer;
}

.nf-cell--readonly[b-yuuizn7aen] {
    cursor: default;
}

.nf-cell:not(.nf-cell--readonly):hover[b-yuuizn7aen] {
    border-color: var(--mud-palette-primary);
    background: var(--mud-palette-background-grey);
}

.nf-cell:focus-visible[b-yuuizn7aen] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 1px;
}

/* Tres líneas: suficiente para el plato completo de la mayoría de los días, y un alto de fila estable.
   El texto sin recortar sigue en el title, para el caso raro que se pase. */
.nf-cell-dish[b-yuuizn7aen] {
    font-size: 0.8125rem;
    line-height: 1.35;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.nf-cell-dessert[b-yuuizn7aen] {
    font-size: 0.6875rem;
    line-height: 1.3;
    color: var(--mud-palette-text-secondary);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Hueco del ciclo: se ve como hueco, no como una celda cualquiera. */
[b-yuuizn7aen] .nf-menue-matrix .nf-cell-gap {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 3.5rem;
    border: 1px dashed var(--mud-palette-warning);
    border-radius: 8px;
}
/* /Components/Organisms/OperationsCenterWizard.razor.rz.scp.css */
[b-ql5nc4e7jq] .mud-stepper-content {
    padding-top: 1rem;
}

/* La cabecera de pasos del MudStepper decía lo mismo que DossierProgressBar, justo debajo: se oculta y la
   navegación entre pasos queda en la barra de estado (sus etiquetas navegan) y en Atrás/Siguiente. */
[b-ql5nc4e7jq] .mud-stepper > .mud-stepper-nav {
    /* !important porque MudBlazor declara `display: flex` con la misma especificidad y su hoja carga
       después del bundle de CSS aislado: sin esto la regla pierde el desempate por orden. */
    display: none !important;
}


.nf-wizard-root[b-ql5nc4e7jq] {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
}

.nf-context-bar[b-ql5nc4e7jq] {
    position: sticky;
    top: var(--mud-appbar-height, 64px);
    z-index: 5;
    background: var(--mud-palette-background);
    padding-block: 0.5rem;
}

/* Acciones del encabezado del expediente (rediseño 2026-08-25). */
.nf-wizard-header-action[b-ql5nc4e7jq] {
    text-transform: none;
    font-weight: 700;
    border-radius: 12px;
}

.nf-wizard-header-invoice[b-ql5nc4e7jq] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.1875rem;
}

.nf-wizard-header-hint[b-ql5nc4e7jq] {
    font-size: 0.65625rem;
    font-weight: 600;
    color: var(--mud-palette-text-disabled);
}

/* Columna de contexto del paso Secuencia (se inyecta en SequenceConfirmationPanel.AsideContent). */
.nf-wizard-aside-card[b-ql5nc4e7jq] {
    border-radius: 16px !important;
}

.nf-wizard-aside-label[b-ql5nc4e7jq] {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
    margin-bottom: 0.5rem;
}

.nf-wizard-progress-value[b-ql5nc4e7jq] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
}

.nf-wizard-progress-pct[b-ql5nc4e7jq] {
    font-size: 1.875rem;
    font-weight: 800;
    color: var(--mud-palette-text-primary);
}

.nf-wizard-progress-caption[b-ql5nc4e7jq] {
    font-size: 0.78125rem;
    color: var(--mud-palette-text-secondary);
}

.nf-wizard-aside-facts[b-ql5nc4e7jq] {
    display: flex;
    flex-direction: column;
    gap: 0.4375rem;
    padding-top: 0.25rem;
}

.nf-wizard-aside-facts > div[b-ql5nc4e7jq] {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    font-size: 0.78125rem;
}

.nf-wizard-aside-facts > div > span:first-child[b-ql5nc4e7jq] {
    color: var(--mud-palette-text-secondary);
}

.nf-wizard-aside-facts > div > span:last-child[b-ql5nc4e7jq] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
/* /Components/Organisms/SequenceConfirmationPanel.razor.rz.scp.css */
/* SequenceConfirmationPanel — layout del paso Secuencia (rediseño 2026-08-25): la lista de entregas a la
   izquierda y una columna de contexto a la derecha (calendario del expediente + lo que el padre inyecte
   por AsideContent: avance y exportación en lote). */
.nf-seq-layout[b-vz9la2n2z8] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 20.625rem;
    gap: 1rem;
    align-items: start;
}

.nf-seq-main[b-vz9la2n2z8] {
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.nf-seq-aside[b-vz9la2n2z8] {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
    position: sticky;
    /* Debajo del AppBar y de la barra de estado del expediente, que ya es sticky. */
    top: 9.5rem;
}

.nf-seq-aside-card[b-vz9la2n2z8] {
    border-radius: 16px !important;
}

.nf-seq-toolbar[b-vz9la2n2z8] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
}

.nf-seq-toggle[b-vz9la2n2z8] {
    flex-shrink: 0;
}

.nf-seq-toolbar-context[b-vz9la2n2z8] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.nf-seq-toolbar-title[b-vz9la2n2z8] {
    font-size: 0.9375rem;
    font-weight: 800;
    color: var(--mud-palette-text-primary);
    /* La fecha larga ("Miércoles 26 de agosto") no debe partir la barra en dos líneas. */
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nf-seq-toolbar-caption[b-vz9la2n2z8] {
    font-size: 0.71875rem;
    color: var(--mud-palette-text-secondary);
}

.nf-seq-toolbar-weeks[b-vz9la2n2z8] {
    margin-left: auto;
}

@media (max-width: 1100px) {
    .nf-seq-layout[b-vz9la2n2z8] {
        grid-template-columns: minmax(0, 1fr);
    }

    .nf-seq-aside[b-vz9la2n2z8] {
        position: static;
    }
}

/* Identidad del centro en una sola columna (2026-08-26): tag + nombre + código, en vez de tres columnas
   de ancho fijo. El nombre va en una línea con elipsis —se partía en tres y descuadraba la altura de cada
   fila— y el completo queda en el tooltip. */
[b-vz9la2n2z8] .nf-seq-center-cell {
    /* La tabla desborda su tarjeta y scrollea igual (mide ~1050px en un contenedor de ~660px), así que
       apretar esta columna no descubre ninguna otra: se le da el ancho donde el nombre del centro entra. */
    max-width: 18rem;
}

.nf-seq-center[b-vz9la2n2z8] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
}

/* El tag es el orden de entrega dentro del contrato: número corto, siempre del mismo ancho. */
.nf-seq-center-tag[b-vz9la2n2z8] {
    flex: 0 0 auto;
    min-width: 1.5rem;
    padding: 0.0625rem 0.375rem;
    border-radius: 6px;
    background: var(--mud-palette-background-grey);
    border: 1px solid var(--mud-palette-divider);
    font-size: 0.6875rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    text-align: center;
    color: var(--mud-palette-text-secondary);
}

.nf-seq-center-text[b-vz9la2n2z8] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    line-height: 1.25;
}

.nf-seq-center-name[b-vz9la2n2z8] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 600;
}

.nf-seq-center-code[b-vz9la2n2z8] {
    font-size: 0.6875rem;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

/* Vista Semana (2026-08-26): cada fecha envuelta en su propia tarjeta, en vez de siete franjas dentro de
   un mismo recuadro. Va con ::deep porque `nf-seq-days` viaja como Class de un MudPaper y los paneles los
   renderiza MudExpansionPanels: ninguno de los dos lleva el atributo de scope. */
[b-vz9la2n2z8] .nf-seq-days--week {
    background: transparent;
}

[b-vz9la2n2z8] .nf-seq-days--week .mud-expand-panel {
    margin-bottom: 0.75rem;
    border: 1px solid var(--mud-palette-divider);
    border-radius: 16px;
    background: var(--mud-palette-surface);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    /* La tabla del día se recorta al radio de la tarjeta en vez de asomar por las esquinas. */
    overflow: hidden;
}

[b-vz9la2n2z8] .nf-seq-days--week .mud-expand-panel:last-child {
    margin-bottom: 0;
}

/* MudBlazor separa paneles consecutivos con una línea propia y redondea solo el primero y el último:
   con tarjetas independientes ese tratamiento sobra. */
[b-vz9la2n2z8] .nf-seq-days--week .mud-expand-panel::before {
    display: none;
}

[b-vz9la2n2z8] .nf-seq-days--week .mud-expand-panel.mud-panel-expanded {
    margin-bottom: 0.75rem;
}
/* /Components/Organisms/ServingsTrendChart.razor.rz.scp.css */
/* ServingsTrendChart — mismo lenguaje visual de panel que QuickLinkPanel.razor.css (header con ícono +
   título dentro de una MudPaper-like surface), pero sin franja de accesos — contiene el MudChart en su lugar. */
.nf-servings-chart-panel[b-2x759hqq1v] {
    background: var(--mud-palette-surface);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 20px;
    padding: 1.5rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    margin-bottom: 0;
}

.nf-servings-chart-panel-header[b-2x759hqq1v] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.nf-servings-chart-panel-header-icon[b-2x759hqq1v] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--mud-palette-primary), var(--mud-palette-info));
    color: var(--mud-palette-primary-text);
    flex-shrink: 0;
}

.nf-servings-chart-panel-header-title[b-2x759hqq1v] {
    font-weight: 700 !important;
}

.nf-servings-chart-panel-header-text[b-2x759hqq1v] {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
}

.nf-servings-chart-panel-header-caption[b-2x759hqq1v] {
    color: var(--mud-palette-text-secondary);
}

.nf-servings-chart-total[b-2x759hqq1v] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    margin-bottom: 0.25rem;
}

.nf-servings-chart-total-value[b-2x759hqq1v] {
    font-size: 1.875rem;
    font-weight: 800;
    color: var(--mud-palette-text-primary);
}

.nf-servings-chart-total-caption[b-2x759hqq1v] {
    font-size: 0.78125rem;
    color: var(--mud-palette-text-secondary);
}


.nf-fade-in[b-2x759hqq1v] {
    animation: nf-servings-chart-fade-up-b-2x759hqq1v 0.45s ease-out both;
}

@keyframes nf-servings-chart-fade-up-b-2x759hqq1v {
    from {
        opacity: 0;
        transform: translateY(8px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .nf-fade-in[b-2x759hqq1v] {
        animation: none !important;
    }
}
/* /Layout/MainLayout.razor.rz.scp.css */
/* MainLayout — chrome del shell (AppBar/Drawer). Desde 2026-08-26 la marca y la identidad del usuario
   viven en el sidebar (ver NavMenu y AccountMenu): acá solo queda el AppBar, que sostiene el expediente
   en curso, y el borde del drawer. */

[b-ea0vkg0gdz] .nf-appbar {
    -webkit-backdrop-filter: saturate(1.2) blur(8px);
    backdrop-filter: saturate(1.2) blur(8px);
    background-color: rgba(255, 255, 255, 0.92) !important;
}

[b-ea0vkg0gdz] .nf-drawer {
    border-right: 1px solid var(--mud-palette-lines-default);
}
/* /Layout/NavMenu.razor.rz.scp.css */
/* Sidebar (rediseño 2026-08-26, dirección B). El drawer mide 239px de ancho y la altura útil es la de la
   ventana: todo acá busca que las ~14 filas entren sin scroll y que se lea la jerarquía de un vistazo. */
.nf-nav[b-16jsj5pgi4] {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0.75rem 0.5rem 0;
    min-height: 0;
}

/* La lista es lo único que puede scrollear: el buscador queda arriba y la identidad abajo, siempre a la vista. */
.nf-nav-menu[b-16jsj5pgi4] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

/* Marca del producto, arriba del todo (2026-08-26): bajó del AppBar. */
.nf-nav-brand[b-16jsj5pgi4] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.25rem 0.5rem 0.75rem;
    text-decoration: none;
    color: inherit;
}

.nf-nav-brand-badge[b-16jsj5pgi4] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 9px;
    background: linear-gradient(135deg, #0F9D74, #2563EB);
    box-shadow: 0 4px 10px rgba(15, 157, 116, 0.28);
    flex-shrink: 0;
}

.nf-nav-brand-name[b-16jsj5pgi4] {
    font-size: 1.125rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--mud-palette-text-primary);
}

.nf-nav-brand:focus-visible[b-16jsj5pgi4] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 2px;
    border-radius: 8px;
}

.nf-nav-search[b-16jsj5pgi4] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    margin-bottom: 0.5rem;
    padding: 0.4375rem 0.625rem;
    border: 1px solid var(--mud-palette-lines-inputs);
    border-radius: 10px;
    background: var(--mud-palette-background-grey);
    color: var(--mud-palette-text-secondary);
    font: inherit;
    font-size: 0.8125rem;
    cursor: pointer;
    text-align: left;
}

.nf-nav-search:hover[b-16jsj5pgi4] {
    border-color: var(--mud-palette-primary);
    color: var(--mud-palette-text-primary);
}

.nf-nav-search:focus-visible[b-16jsj5pgi4] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 2px;
}

.nf-nav-search-label[b-16jsj5pgi4] {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nf-nav-kbd[b-16jsj5pgi4] {
    flex: 0 0 auto;
    padding: 0.0625rem 0.3125rem;
    border: 1px solid var(--mud-palette-divider);
    border-radius: 5px;
    background: var(--mud-palette-surface);
    font-size: 0.625rem;
    font-weight: 600;
    color: var(--mud-palette-text-disabled);
}

/* Encabezado de sección en vez de MudNavGroup: no hay estado que plegar ni chevron que administrar. */
.nf-nav-cap[b-16jsj5pgi4] {
    padding: 0.875rem 0.75rem 0.25rem;
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--mud-palette-text-disabled);
}

[b-16jsj5pgi4] .nf-nav-link {
    margin-bottom: 0.125rem;
    border-radius: 10px;
}

/* Centro de Operaciones: el único destino con tratamiento propio, porque es donde vive el producto.

   Ojo con el elemento: el `Class` de MudNavLink aterriza en el wrapper `div.mud-nav-item`, pero la clase
   `active` la pone Blazor en el `<a>` interno. Pintar el wrapper dejaba el verde encendido siempre y hacía
   que la regla de activo no coincidiera nunca — se veía igual estando dentro que fuera. Todo el tratamiento
   vive en el `<a>`. */
[b-16jsj5pgi4] .nf-nav-link--hero {
    background: transparent;
}

/* Fuera de la pantalla: destacado pero en reposo. */
[b-16jsj5pgi4] .nf-nav-link--hero .mud-nav-link {
    background: color-mix(in srgb, var(--mud-palette-primary) 12%, transparent);
    color: var(--mud-palette-primary);
    font-weight: 600;
}

[b-16jsj5pgi4] .nf-nav-link--hero .mud-nav-link .mud-nav-link-icon {
    color: var(--mud-palette-primary);
}

[b-16jsj5pgi4] .nf-nav-link--hero .mud-nav-link:hover {
    background: color-mix(in srgb, var(--mud-palette-primary) 20%, transparent);
}

/* Dentro de la pantalla: relleno sólido. El "estás acá" tiene que ser inconfundible, y el gris translúcido
   con el que MudBlazor marca lo activo era invisible sobre el verde.

   El `.nf-nav-menu` de más no es decorativo: MudBlazor pinta lo activo con
   `.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled)`, cinco clases. Sin ese
   ancestro la regla de acá empata en cinco y pierde el desempate por orden, porque la hoja de MudBlazor
   carga después del bundle de CSS aislado. Con seis gana por especificidad, sin necesidad de !important. */
[b-16jsj5pgi4] .nf-nav-menu .nf-nav-link--hero .mud-nav-link.active:not(.mud-nav-link-disabled),
[b-16jsj5pgi4] .nf-nav-menu .nf-nav-link--hero .mud-nav-link.active:not(.mud-nav-link-disabled):hover {
    background: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
}

[b-16jsj5pgi4] .nf-nav-menu .nf-nav-link--hero .mud-nav-link.active .mud-nav-link-icon {
    color: var(--mud-palette-primary-text);
}

.nf-nav-foot[b-16jsj5pgi4] {
    margin-top: auto;
    padding: 0.5rem 0.25rem;
    border-top: 1px solid var(--mud-palette-divider);
}

.nf-nav-who[b-16jsj5pgi4] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    line-height: 1.25;
}

.nf-nav-who-name[b-16jsj5pgi4] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--mud-palette-text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nf-nav-who-meta[b-16jsj5pgi4] {
    font-size: 0.6875rem;
    color: var(--mud-palette-text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Pages/Admin/Settings/Index.razor.rz.scp.css */
/* Portada de Ajustes — catálogos y configuración, sacados del sidebar en el rediseño de navegación. */
.nf-settings-cap[b-it4v0sywsr] {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
    margin-bottom: 0.625rem;
}

.nf-settings-grid[b-it4v0sywsr] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
    gap: 0.75rem;
}

[b-it4v0sywsr] .nf-settings-card {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.875rem 1rem;
    border-radius: 12px;
    cursor: pointer;
    transition: border-color 120ms ease, background 120ms ease;
}

[b-it4v0sywsr] .nf-settings-card:hover {
    border-color: var(--mud-palette-primary);
    background: var(--mud-palette-background-grey);
}

.nf-settings-label[b-it4v0sywsr] {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--mud-palette-text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nf-settings-chevron[b-it4v0sywsr] {
    color: var(--mud-palette-text-disabled);
}

@media (prefers-reduced-motion: reduce) {
    [b-it4v0sywsr] .nf-settings-card {
        transition: none;
    }
}
/* /Pages/FiscalAuthorizations/Index.razor.rz.scp.css */
/* Autorizaciones fiscales: tarjetas con el rango activo arriba, histórico abajo. */
.nf-auth-header[b-p2of1cbxnp] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.nf-auth-cards[b-p2of1cbxnp] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

/* El borde izquierdo es el semáforo: verde normal, ámbar cuando el rango se está acabando. */
.nf-auth-card[b-p2of1cbxnp] {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
    padding: 1rem 1.25rem;
    border: 1px solid var(--mud-palette-divider);
    border-left: 3px solid var(--mud-palette-primary);
    border-radius: 14px;
}

.nf-auth-card--warning[b-p2of1cbxnp] {
    border-left-color: var(--mud-palette-warning);
}

.nf-auth-card--empty[b-p2of1cbxnp] {
    border-left-color: var(--mud-palette-lines-default);
}

.nf-auth-card-head[b-p2of1cbxnp] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.nf-auth-card-label[b-p2of1cbxnp] {
    display: block;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.nf-auth-card-number[b-p2of1cbxnp] {
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1.15;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.01em;
}

.nf-auth-card-facts[b-p2of1cbxnp] {
    display: flex;
    align-items: flex-end;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.nf-auth-fact[b-p2of1cbxnp] {
    display: flex;
    flex-direction: column;
    line-height: 1.3;
}

.nf-auth-fact span[b-p2of1cbxnp] {
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.nf-auth-fact b[b-p2of1cbxnp] {
    font-size: 0.9375rem;
    font-variant-numeric: tabular-nums;
}

.nf-auth-actions[b-p2of1cbxnp] {
    display: flex;
    gap: 0.125rem;
}

.nf-auth-consumo[b-p2of1cbxnp] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.6875rem;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

/* Los números fiscales se comparan en columna: tabular sí o sí. */
[b-p2of1cbxnp] .nf-num {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

[b-p2of1cbxnp] .nf-filter {
    min-width: 11rem;
}
/* /Pages/Forbidden.razor.rz.scp.css */
.nf-forbidden[b-9ix8w37g6n] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    max-width: 480px;
    margin: 10vh auto 0;
    padding: 0 16px;
}

.nf-forbidden-scene[b-9ix8w37g6n] {
    position: relative;
    width: 100%;
    height: 96px;
    overflow: hidden;
}

[b-9ix8w37g6n] .nf-forbidden-thief,
[b-9ix8w37g6n] .nf-forbidden-police,
[b-9ix8w37g6n] .nf-forbidden-lock {
    position: absolute;
    top: 50%;
    font-size: 48px !important;
    width: 48px !important;
    height: 48px !important;
    transform: translateY(-50%);
}

[b-9ix8w37g6n] .nf-forbidden-thief {
    color: var(--mud-palette-secondary);
    left: 0;
    animation: nf-thief-run-b-9ix8w37g6n 1.8s ease-in forwards;
}

[b-9ix8w37g6n] .nf-forbidden-police {
    left: -56px;
    animation: nf-police-chase-b-9ix8w37g6n 1.8s ease-in forwards, nf-police-lights-b-9ix8w37g6n 0.3s linear infinite 1.8s;
}

[b-9ix8w37g6n] .nf-forbidden-lock {
    color: var(--mud-palette-primary);
    left: 50%;
    margin-left: -24px;
    opacity: 0;
    transform: translateY(-50%) scale(0.4);
    animation: nf-lock-pop-b-9ix8w37g6n 0.5s ease-out 1.8s forwards;
}

@keyframes nf-thief-run-b-9ix8w37g6n {
    0% {
        left: 0;
    }

    85% {
        left: calc(50% - 60px);
    }

    100% {
        left: calc(50% - 24px);
    }
}

@keyframes nf-police-chase-b-9ix8w37g6n {
    0% {
        left: -56px;
    }

    85% {
        left: calc(50% - 108px);
    }

    100% {
        left: calc(50% - 72px);
    }
}

@keyframes nf-police-lights-b-9ix8w37g6n {
    0%, 100% {
        color: #DC2626;
    }

    50% {
        color: #2563EB;
    }
}

@keyframes nf-lock-pop-b-9ix8w37g6n {
    0% {
        opacity: 0;
        transform: translateY(-50%) scale(0.4);
    }

    70% {
        opacity: 1;
        transform: translateY(-50%) scale(1.15);
    }

    100% {
        opacity: 1;
        transform: translateY(-50%) scale(1);
    }
}
/* /Pages/Home.razor.rz.scp.css */
/* Home (Pages/Home.razor) — encabezado de página y contenedores de layout. El resto (barra de indicadores,
   panel de pendientes, tira de contrato, panel de gráfico) vive en sus propios Components/*.razor.css.
   Sin "::deep": estas clases son las más externas del árbol de Home (nada dentro de este archivo las
   envuelve), así que ::deep — que compila a un selector descendiente `[scope] .clase` — nunca encuentra un
   ancestro con el mismo scope y la regla queda muerta (esto es lo que causaba el fondo "transparente" con
   texto blanco encima). El selector plano `.clase` sí funciona porque Blazor agrega el atributo de scope
   directamente sobre el elemento (igual que ya hace Pages/Login.razor.css, que tampoco usa ::deep). */
.nf-home-header[b-znm7r8n54x] {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.nf-home-header-badge[b-znm7r8n54x] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: rgba(var(--mud-palette-primary-rgb), 0.12);
    color: var(--mud-palette-primary);
    flex-shrink: 0;
}

.nf-home-header-text[b-znm7r8n54x] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    min-width: 0;
}

.nf-home-header-title[b-znm7r8n54x] {
    font-weight: 800 !important;
    letter-spacing: -0.01em;
}

.nf-home-header-caption[b-znm7r8n54x] {
    color: var(--mud-palette-text-secondary);
    font-weight: 500;
    /* El nombre del suplidor viene de datos y puede ser largo — que no empuje al botón fuera de la fila. */
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nf-home-header-action[b-znm7r8n54x] {
    margin-left: auto;
    flex-shrink: 0;
    text-transform: none;
    font-weight: 700;
    border-radius: 12px;
}

.nf-home-section[b-znm7r8n54x] {
    margin-bottom: 1.5rem;
}

.nf-home-section-title[b-znm7r8n54x] {
    display: flex;
    align-items: baseline;
    gap: 0.625rem;
    font-weight: 700 !important;
    margin-bottom: 0.75rem;
}

.nf-home-section-caption[b-znm7r8n54x] {
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--mud-palette-text-secondary);
}

/* Pendientes (2/3) + tendencia (1/3): lo accionable manda, el gráfico acompaña. */
.nf-home-columns[b-znm7r8n54x] {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    gap: 1.25rem;
    align-items: start;
    margin-bottom: 1.5rem;
}

.nf-home-contracts[b-znm7r8n54x] {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
}

@media (max-width: 960px) {
    .nf-home-columns[b-znm7r8n54x] {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 700px) {
    .nf-home-header[b-znm7r8n54x] {
        flex-wrap: wrap;
    }

    .nf-home-header-action[b-znm7r8n54x] {
        margin-left: 0;
        width: 100%;
    }
}

.nf-fade-in[b-znm7r8n54x] {
    animation: nf-home-fade-up-b-znm7r8n54x 0.45s ease-out both;
}

@keyframes nf-home-fade-up-b-znm7r8n54x {
    from {
        opacity: 0;
        transform: translateY(8px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .nf-fade-in[b-znm7r8n54x] {
        animation: none !important;
    }
}
/* /Pages/Invoices/Index.razor.rz.scp.css */
/* El NCF identifica la factura: cifras de ancho fijo para poder compararlas de un vistazo. */
.nf-ncf[b-ydgf1umot8] {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    letter-spacing: 0.01em;
    color: var(--mud-palette-text-primary);
}

.nf-ncf--none[b-ydgf1umot8] {
    font-weight: 400;
    color: var(--mud-palette-text-disabled);
}
/* /Pages/Login.razor.rz.scp.css */
/* Login (Pages/Login.razor) — formulario + vitrina de planes lado a lado, con anchos fluidos (flex-basis +
   min/max, no porcentajes fijos) para que ambos paneles se acomoden a cualquier ancho de ventana, incluidas
   pantallas ultra-anchas. Por debajo de 900px se apilan en columna (formulario arriba, planes abajo) en vez
   de ocultar la vitrina — perder esa información en pantallas chicas era el problema, no el espacio en sí.
   CSS isolation (Blazor la scopea automáticamente a este componente vía NutriFlow.Web.styles.css). */
.nf-login-shell[b-sta5gl7my4] {
    display: flex;
    min-height: 100vh;
}

.nf-login-left[b-sta5gl7my4] {
    flex: 1 1 420px;
    min-width: 320px;
    max-width: 560px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #FFFFFF;
    padding: 3rem clamp(1.5rem, 4vw, 4rem);
    box-sizing: border-box;
}

.nf-login-form-col[b-sta5gl7my4] {
    width: 100%;
    max-width: 380px;
}

.nf-login-logo-badge[b-sta5gl7my4] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: linear-gradient(135deg, #0F9D74, #2563EB);
    box-shadow: 0 6px 16px rgba(15, 157, 116, 0.28);
    flex-shrink: 0;
}

.nf-login-field[b-sta5gl7my4]  .mud-input-outlined {
    border-radius: 10px;
    transition: box-shadow 0.15s ease-in-out;
}

.nf-login-submit[b-sta5gl7my4] {
    border-radius: 10px !important;
    transition: transform 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
    box-shadow: 0 10px 24px rgba(15, 157, 116, 0.25);
}

.nf-login-submit:hover:not(.mud-disabled)[b-sta5gl7my4] {
    transform: translateY(-1px);
    box-shadow: 0 14px 28px rgba(15, 157, 116, 0.32);
}

.nf-login-trust[b-sta5gl7my4] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 1.5rem;
    color: var(--mud-palette-text-secondary);
}

.nf-fade-in[b-sta5gl7my4] {
    animation: nf-login-fade-up-b-sta5gl7my4 0.5s ease-out both;
}

@keyframes nf-login-fade-up-b-sta5gl7my4 {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.nf-login-right[b-sta5gl7my4] {
    position: relative;
    flex: 2 1 640px;
    min-width: 0;
    overflow: hidden;
    display: flex;
    align-items: center;
    background: linear-gradient(135deg, #0F9D74 0%, #0B7A5A 55%, #0A6B4E 100%);
}

.nf-login-aurora[b-sta5gl7my4] {
    position: absolute;
    border-radius: 50%;
    filter: blur(60px);
    pointer-events: none;
    animation: nf-login-float-b-sta5gl7my4 14s ease-in-out infinite;
}

.nf-login-aurora-1[b-sta5gl7my4] {
    width: 26rem;
    height: 26rem;
    top: -8rem;
    left: -6rem;
    background: rgba(52, 211, 153, 0.35);
}

.nf-login-aurora-2[b-sta5gl7my4] {
    width: 22rem;
    height: 22rem;
    bottom: -10rem;
    right: -4rem;
    background: rgba(37, 99, 235, 0.28);
    animation-duration: 18s;
    animation-delay: -4s;
}

.nf-login-aurora-3[b-sta5gl7my4] {
    width: 16rem;
    height: 16rem;
    bottom: 4rem;
    left: 30%;
    background: rgba(245, 158, 11, 0.18);
    animation-duration: 20s;
    animation-delay: -9s;
}

@keyframes nf-login-float-b-sta5gl7my4 {
    0%, 100% { transform: translate(0, 0) scale(1); }
    50% { transform: translate(3%, -4%) scale(1.06); }
}

.nf-login-right-leaf[b-sta5gl7my4] {
    position: absolute;
    top: -12%;
    right: -10%;
    width: 65%;
    opacity: 0.08;
    transform: rotate(18deg);
    pointer-events: none;
}

.nf-login-right-leaf svg[b-sta5gl7my4] {
    width: 100%;
    height: 100%;
}

.nf-login-right-overlay[b-sta5gl7my4] {
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 15% 20%, rgba(255, 255, 255, 0.10) 0%, rgba(255, 255, 255, 0) 45%),
                linear-gradient(180deg, rgba(15, 17, 21, 0.05) 0%, rgba(15, 17, 21, 0.28) 100%);
    pointer-events: none;
}

.nf-login-plans[b-sta5gl7my4] {
    position: relative;
    z-index: 1;
    padding: clamp(2.5rem, 5vw, 4rem) clamp(1.5rem, 5vw, 4rem);
    box-sizing: border-box;
    width: 100%;
    max-width: 1280px;
    margin: 0 auto;
}

/* auto-fit reacomoda 1/2/3 columnas según el ancho disponible en vez de saltar entre un grid fijo de 3
   columnas y una sola columna angosta — así se aprovecha el espacio en cualquier resolución intermedia. */
.nf-login-plan-grid[b-sta5gl7my4] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
    gap: 1.25rem;
    align-items: stretch;
}

.nf-login-plan-card[b-sta5gl7my4] {
    position: relative;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 14px;
    padding: 1.5rem 1.25rem;
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
    transition: transform 0.18s ease-in-out, background 0.18s ease-in-out, box-shadow 0.18s ease-in-out, border-color 0.18s ease-in-out;
    animation: nf-login-fade-up-b-sta5gl7my4 0.5s ease-out both;
}

.nf-login-plan-card:hover[b-sta5gl7my4] {
    transform: translateY(-4px);
    background: rgba(255, 255, 255, 0.12);
    border-color: rgba(255, 255, 255, 0.3);
    box-shadow: 0 16px 32px rgba(0, 0, 0, 0.18);
}

.nf-login-plan-card--highlighted[b-sta5gl7my4] {
    background: rgba(255, 255, 255, 0.14);
    border-color: rgba(255, 255, 255, 0.35);
    transform: translateY(-6px);
    animation: nf-login-fade-up-b-sta5gl7my4 0.5s ease-out both, nf-login-glow-b-sta5gl7my4 3.2s ease-in-out 0.6s infinite;
}

.nf-login-plan-card--highlighted:hover[b-sta5gl7my4] {
    transform: translateY(-9px);
}

@keyframes nf-login-glow-b-sta5gl7my4 {
    0%, 100% { box-shadow: 0 0 0 0 rgba(245, 158, 11, 0); }
    50% { box-shadow: 0 0 0 5px rgba(245, 158, 11, 0.12); }
}

.nf-login-plan-icon[b-sta5gl7my4] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.14);
    color: #FFFFFF;
}

.nf-login-plan-badge[b-sta5gl7my4] {
    position: absolute;
    top: -0.65rem;
    right: 1rem;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    background: #F59E0B;
    color: #1F2937;
    font-size: 0.7rem;
    font-weight: 700;
    padding: 0.15rem 0.6rem;
    border-radius: 999px;
    letter-spacing: 0.02em;
}

.nf-login-plan-tier[b-sta5gl7my4] {
    display: flex;
    align-items: center;
}

.nf-login-plan-tier-dot[b-sta5gl7my4] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.25);
    margin-right: 4px;
}

.nf-login-plan-tier-dot--filled[b-sta5gl7my4] {
    background: #F59E0B;
}

.nf-login-plan-price[b-sta5gl7my4] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    border-top: 1px solid rgba(255, 255, 255, 0.16);
    border-bottom: 1px solid rgba(255, 255, 255, 0.16);
    padding: 0.6rem 0;
    margin-bottom: 1rem;
}

.nf-login-plan-cta[b-sta5gl7my4] {
    border-radius: 10px !important;
}

@media (prefers-reduced-motion: reduce) {
    .nf-fade-in[b-sta5gl7my4],
    .nf-login-plan-card[b-sta5gl7my4],
    .nf-login-plan-card--highlighted[b-sta5gl7my4],
    .nf-login-aurora[b-sta5gl7my4] {
        animation: none !important;
    }

    .nf-login-submit[b-sta5gl7my4],
    .nf-login-plan-card[b-sta5gl7my4] {
        transition: none !important;
    }
}

/* Debajo de 900px ya no cabe cómodamente el layout lado a lado (el formulario quedaría comprimido) — se
   apila en columna en vez de ocultar la vitrina de planes, para no perder esa información en pantallas
   chicas (tablet/celular). */
@media (max-width: 900px) {
    .nf-login-shell[b-sta5gl7my4] {
        flex-direction: column;
    }

    .nf-login-left[b-sta5gl7my4] {
        flex: 1 1 auto;
        max-width: 100%;
        min-width: 0;
        width: 100%;
        background: linear-gradient(135deg, #F7F8FA 0%, #E8F5F0 100%);
    }

    .nf-login-right[b-sta5gl7my4] {
        flex: 1 1 auto;
        min-height: 0;
        padding-block: 1rem;
    }

    .nf-login-plan-card--highlighted[b-sta5gl7my4] {
        transform: none;
    }

    .nf-login-plan-card--highlighted:hover[b-sta5gl7my4] {
        transform: translateY(-4px);
    }
}

@media (max-width: 480px) {
    .nf-login-plan-grid[b-sta5gl7my4] {
        grid-template-columns: 1fr;
    }
}
/* /Pages/Menus/Index.razor.rz.scp.css */
/* Cabecera del ciclo de menú (rediseño 2026-08-26). Reemplaza a las tres tarjetas grandes —"Meses del
   ciclo 1", "Semanas por mes 5", "Días del ciclo"— que pesaban más que la matriz y la empujaban abajo.
   Ahora los mismos datos van en una línea y el alto queda para el contenido. */
.nf-menue-header[b-564lr77kvx] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.nf-menue-identity[b-564lr77kvx] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    min-width: 0;
}

.nf-menue-facts[b-564lr77kvx] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    font-size: 0.8125rem;
    color: var(--mud-palette-text-secondary);
}

/* Separador entre datos: evita que se lean como una frase corrida. */
.nf-menue-facts > span + span[b-564lr77kvx]::before {
    content: "·";
    margin-right: 0.5rem;
    color: var(--mud-palette-text-disabled);
}

.nf-menue-badge[b-564lr77kvx] {
    padding: 0.0625rem 0.4375rem;
    border-radius: 999px;
    border: 1px solid currentColor;
    font-size: 0.6875rem;
    font-weight: 700;
}

.nf-menue-badge--current[b-564lr77kvx] {
    color: var(--mud-palette-success);
}

.nf-menue-badge--future[b-564lr77kvx] {
    color: var(--mud-palette-info);
}

.nf-menue-badge--past[b-564lr77kvx] {
    color: var(--mud-palette-text-disabled);
}
/* /Pages/Services/Index.razor.rz.scp.css */
/* El mínimo que activa cada precio, junto al precio y en segundo plano. */
.nf-price-min[b-r4cwmewk1t] {
    display: block;
    font-size: 0.65625rem;
    color: var(--mud-palette-text-secondary);
}
