/* /Features/ComplianceAlert/Pages/Index.razor.rz.scp.css */
/* Compliance alerts page. Radzen handles the header (RadzenStack), config panel (RadzenCard),
   bulk bar (RadzenStack), table (RadzenDataGrid), the DD-type / days / action pills (RadzenBadge)
   and the error (RadzenAlert). Only the pieces with no Radzen equivalent are styled here: the
   accent-bordered stat tiles, the empty block, and the disclaimer note. */

/* Stat tiles — colored left-border accent (no Radzen equivalent) */
.alert-stats-grid[b-hvfsnq3ebo] { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; }
.alert-stat-tile[b-hvfsnq3ebo] { border-radius: 10px; padding: 10px 14px; background: var(--gf-grey-50); border: 1px solid var(--gf-grey-200); }
.alert-stat-label[b-hvfsnq3ebo] { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.03em; color: var(--gf-grey-500); }
.alert-stat-value[b-hvfsnq3ebo] { margin: 2px 0 0; font-size: 24px; font-weight: 700; }
.alert-stat-total[b-hvfsnq3ebo] { border-left: 4px solid #b91c1c; }
.alert-stat-vencida[b-hvfsnq3ebo] { border-left: 4px solid #b45309; }
.alert-stat-nunca[b-hvfsnq3ebo] { border-left: 4px solid var(--gf-grey-500); }

/* Config panel toggle row (inside a RadzenCard) */
.alert-config-toggle[b-hvfsnq3ebo] { display: flex; align-items: center; gap: 0.5rem; cursor: pointer; font-weight: 600; }
.alert-topics[b-hvfsnq3ebo] { display: flex; flex-wrap: wrap; gap: 0.4rem; }

/* Bulk-selection bar */
.alert-bulk[b-hvfsnq3ebo] { background: var(--gf-primary-soft); padding: 0.5rem 1rem; border-radius: 8px; }

/* Data-grid cell text */
.alert-company[b-hvfsnq3ebo] { font-weight: 600; color: var(--gf-grey-900); }
.alert-rut[b-hvfsnq3ebo] { font-size: 12px; color: var(--gf-grey-500); margin-bottom: 4px; }

/* Empty state */
.alert-empty[b-hvfsnq3ebo] { text-align: center; padding: 40px 0; color: var(--gf-grey-500); }
.alert-empty-icon[b-hvfsnq3ebo] { font-size: 36px; color: #10b981; display: block; margin-bottom: 6px; }
.alert-empty p[b-hvfsnq3ebo] { margin: 0; }

/* Footer disclaimer note */
.alert-disclaimer[b-hvfsnq3ebo] { font-size: 12px; color: var(--gf-grey-500); background: var(--gf-grey-50); border-radius: 8px; padding: 10px 12px; }
/* /Features/Configuration/Components/InstructionsCard.razor.rz.scp.css */
.instructions-upload[b-vhgy0hq1ay] {
    position: relative;
    overflow: hidden;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.25rem 0.75rem;
    border: 1px solid var(--rz-primary);
    border-radius: var(--rz-border-radius);
    color: var(--rz-primary);
    font-size: 0.75rem;
    font-weight: 500;
    text-transform: uppercase;
    white-space: nowrap;
    cursor: pointer;
}

.instructions-upload:hover[b-vhgy0hq1ay] {
    background: var(--rz-primary-lighter);
}

.instructions-upload.is-busy[b-vhgy0hq1ay] {
    opacity: 0.6;
    pointer-events: none;
}

.instructions-upload[b-vhgy0hq1ay]  input[type=file] {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
}

.instructions-download[b-vhgy0hq1ay] {
    display: inline-flex;
    align-items: center;
    gap: 0.125rem;
    vertical-align: middle;
    color: var(--rz-primary);
    font-weight: 500;
    text-decoration: none;
}

/* El ícono trae su propio line-height; sin esto queda sobre la línea base, más alto que el texto. */
.instructions-download[b-vhgy0hq1ay]  .rzi {
    font-size: 1.125em;
    line-height: 1;
}

.instructions-download:hover[b-vhgy0hq1ay] {
    text-decoration: underline;
}
/* /Features/Notifications/Components/NotificationBell.razor.rz.scp.css */
/* Mismo aspecto que .gf-logout-btn en MainLayout, para que los dos íconos del encabezado se lean como par. */
.gf-bell-btn[b-ls1djl24qe] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--gf-grey-500);
    padding: 8px;
    border-radius: 50%;
}

.gf-bell-btn:hover[b-ls1djl24qe] { background-color: var(--gf-grey-200); color: var(--gf-grey-800); }

/* Anclado por el borde izquierdo: "8" y "9+" parten en el mismo punto y solo "9+" crece hacia afuera. */
.gf-bell-badge[b-ls1djl24qe] {
    position: absolute;
    top: 2px;
    left: 22px;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 999px;
    background: var(--gf-status-rechazado);
    color: var(--gf-light);
    font-size: 9.5px;
    font-weight: 700;
    line-height: 1;
    border: 1.5px solid var(--gf-light);
}
/* /Features/Notifications/Components/NotificationPanel.razor.rz.scp.css */
.gf-np[b-iwvcyrpejo] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--gf-light);
}

.gf-np-head[b-iwvcyrpejo] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 18px;
    background: var(--gf-primary);
    color: var(--gf-light);
}

.gf-np-head h2[b-iwvcyrpejo] { margin: 0; font-size: 19px; font-weight: 700; color: var(--gf-light); }

.gf-np-close[b-iwvcyrpejo] {
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--gf-light);
    padding: 8px;
    border-radius: 50%;
}

/* app.css pinta todos los íconos en verde de marca; sin esto la X queda verde sobre el header verde. */
.gf-np-close .material-icons-round[b-iwvcyrpejo] { color: inherit; }

.gf-np-close:hover[b-iwvcyrpejo] { background-color: rgba(255, 255, 255, 0.16); }

.gf-np-tools[b-iwvcyrpejo] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    padding: 14px 18px 10px;
}

.gf-np-error[b-iwvcyrpejo] { margin: 0 18px 8px; font-size: 12.5px; color: var(--gf-status-rechazado); }

.gf-np-list[b-iwvcyrpejo] {
    flex: 1;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 0 12px 16px;
}

.gf-np-loading[b-iwvcyrpejo] { display: flex; flex-direction: column; gap: 8px; }

.gf-np-empty[b-iwvcyrpejo] {
    margin: 8px 6px;
    padding: 36px 16px;
    text-align: center;
    border: 1px solid var(--gf-grey-200);
    border-radius: 10px;
    background: var(--gf-grey-50);
    color: var(--gf-grey-700);
    font-size: 15px;
}

.gf-np-item[b-iwvcyrpejo] {
    border: 1px solid var(--gf-grey-200);
    border-radius: 10px;
    padding: 12px 14px;
    background: var(--gf-light);
}

.gf-np-unread[b-iwvcyrpejo] { background: var(--gf-primary-soft); }

.gf-np-mine[b-iwvcyrpejo] { border-color: var(--gf-primary); box-shadow: inset 3px 0 0 var(--gf-primary); }

/* Los ítems son componentes hijos: el CSS aislado solo llega a su markup con ::deep. */
.gf-np-item[b-iwvcyrpejo]  .gf-np-body { display: flex; flex-direction: column; gap: 6px; min-width: 0; }

.gf-np-item[b-iwvcyrpejo]  .gf-np-top {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 10px;
}

.gf-np-item[b-iwvcyrpejo]  .gf-np-name { font-weight: 600; font-size: 14.5px; color: var(--gf-grey-900); }

.gf-np-item[b-iwvcyrpejo]  .gf-np-date {
    font-size: 12px;
    color: var(--gf-grey-700);
    white-space: nowrap;
    font-variant-numeric: lining-nums tabular-nums;
}

.gf-np-item[b-iwvcyrpejo]  .gf-np-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    color: var(--gf-grey-700);
}

.gf-np-item[b-iwvcyrpejo]  .gf-np-tag-mine {
    font-size: 11px;
    font-weight: 600;
    color: var(--gf-primary);
    background: var(--gf-primary-soft);
    padding: 4px 7px;
    border-radius: 4px;
}

.gf-np-item[b-iwvcyrpejo]  .gf-np-docs { display: flex; flex-wrap: wrap; gap: 5px; }

.gf-np-item[b-iwvcyrpejo]  .gf-np-doc {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 11.5px;
    background: var(--gf-grey-100);
    color: var(--gf-grey-800);
    padding: 3px 7px;
    border-radius: 4px;
}

.gf-np-item[b-iwvcyrpejo]  .gf-np-doc .material-icons-round { font-size: 13px; color: var(--gf-grey-500); }

.gf-np-item[b-iwvcyrpejo]  .gf-np-actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
}

.gf-np-item[b-iwvcyrpejo]  .gf-np-read { font-size: 12px; color: var(--gf-grey-500); }

.gf-np-item[b-iwvcyrpejo]  .gf-np-generic {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    font-size: 13px;
    color: var(--gf-grey-800);
}
/* /Features/Provider/Components/AiOriginalResult.razor.rz.scp.css */
.ai-original[b-iczdol6o04] {
    display: inline-block;
    margin-left: 0.35rem;
    font-size: 0.6875rem;
    color: var(--rz-text-secondary-color, #71717a);
    white-space: nowrap;
}
/* /Features/Provider/Components/DeudaTesoreriaResult.razor.rz.scp.css */
.topic-score[b-jl5xu5lpgd] {
    font-weight: 600;
    font-variant-numeric: lining-nums tabular-nums;
    white-space: nowrap;
}

.table-scroll[b-jl5xu5lpgd] {
    overflow-x: auto;
}

.rule-table[b-jl5xu5lpgd] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.rule-table th[b-jl5xu5lpgd] {
    text-align: left;
    font-weight: 600;
    white-space: nowrap;
    padding: 0.4rem 0.6rem;
    border-bottom: 2px solid var(--rz-base-300, #d4d4d8);
}

.rule-table td[b-jl5xu5lpgd] {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--rz-base-200, #e4e4e7);
    vertical-align: top;
}

.fact-grid[b-jl5xu5lpgd] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 0.75rem 1.25rem;
    margin-top: 0.5rem;
}

.fact[b-jl5xu5lpgd] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.fact-label[b-jl5xu5lpgd] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--rz-text-secondary-color, #71717a);
}

.fact-value[b-jl5xu5lpgd] {
    font-weight: 600;
    overflow-wrap: anywhere;
}

.fact-note[b-jl5xu5lpgd] {
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color, #71717a);
    overflow-wrap: anywhere;
}

.reason-list[b-jl5xu5lpgd] {
    margin: 0.25rem 0 0;
    padding-left: 1.25rem;
}
/* /Features/Provider/Components/DocumentoInfoDialog.razor.rz.scp.css */
/* El cuerpo hace scroll propio: sin altura acotada, tres bloques de texto empujan el botón «Cerrar»
   fuera de la pantalla en documentos con muchas líneas. */
.docinfo-body[b-7a4x5c3dab] {
    max-height: 60vh;
    overflow-y: auto;
    padding-right: 0.25rem;
}

.docinfo-bloque[b-7a4x5c3dab] {
    margin-bottom: 1rem;
}

.docinfo-bloque:last-child[b-7a4x5c3dab] {
    margin-bottom: 0;
}

/* Ícono y texto del título de cada bloque en una fila, centrados verticalmente. Va sobre un <div>
   propio del componente (no sobre RadzenText) para que el scope de Blazor lo alcance. */
.docinfo-titulo[b-7a4x5c3dab] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin-bottom: 0.35rem;
}

/* El ícono acompaña al texto: mismo tamaño de línea, sin desbordar hacia arriba. ::deep + <i> porque el
   ícono lo renderiza RadzenIcon (componente hijo, fuera del alcance directo del CSS scoped) y es el único
   <i> del título — así no dependemos del nombre exacto de la clase del ícono. El color viene por bloque
   (--docinfo-color); va en el ícono, no en el texto del título. */
.docinfo-titulo[b-7a4x5c3dab]  i {
    font-size: 1.15rem;
    line-height: 1;
    color: var(--docinfo-color);
}

.docinfo-body ul[b-7a4x5c3dab] {
    margin: 0;
    padding-left: 1.25rem;
}

.docinfo-body li[b-7a4x5c3dab] {
    margin-bottom: 0.35rem;
    line-height: 1.35;
}

/* Bullets de la lista con el color del bloque — solo el marcador, no el texto del ítem. */
.docinfo-bloque li[b-7a4x5c3dab]::marker {
    color: var(--docinfo-color);
}

/* Color por bloque: se define en la <section> para que lo hereden tanto el ícono del título como los
   marcadores de la lista. Aplica SOLO a ícono y bullets (arriba), nunca al texto. */
.docinfo-extrae[b-7a4x5c3dab] {
    --docinfo-color: #3DB7B0;
}

.docinfo-valida[b-7a4x5c3dab] {
    --docinfo-color: #007D32;
}

.docinfo-nohace[b-7a4x5c3dab] {
    --docinfo-color: #EF4135;
}
/* /Features/Provider/Components/DocumentoRutResult.razor.rz.scp.css */
/* El puntaje va tabular y con el mismo peso que el veredicto: es el otro dato que se lee de un vistazo. */
.topic-score[b-fwz3qzc03f] {
    font-weight: 600;
    font-variant-numeric: lining-nums tabular-nums;
    white-space: nowrap;
}

/* Wide tables scroll inside their own box so the page body never scrolls sideways. */
.table-scroll[b-fwz3qzc03f] {
    overflow-x: auto;
}

.rule-table[b-fwz3qzc03f] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.rule-table th[b-fwz3qzc03f] {
    text-align: left;
    font-weight: 600;
    white-space: nowrap;
    padding: 0.4rem 0.6rem;
    border-bottom: 2px solid var(--rz-base-300, #d4d4d8);
}

.rule-table td[b-fwz3qzc03f] {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--rz-base-200, #e4e4e7);
    vertical-align: top;
}

.fact-grid[b-fwz3qzc03f] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 0.75rem 1.25rem;
    margin-top: 0.5rem;
}

.fact[b-fwz3qzc03f] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.fact-label[b-fwz3qzc03f] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--rz-text-secondary-color, #71717a);
}

.fact-value[b-fwz3qzc03f] {
    font-weight: 600;
    /* A long company name wraps instead of widening the grid column. */
    overflow-wrap: anywhere;
}

.fact-note[b-fwz3qzc03f] {
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color, #71717a);
    overflow-wrap: anywhere;
}

.reason-list[b-fwz3qzc03f] {
    margin: 0.25rem 0 0;
    padding-left: 1.25rem;
}
/* /Features/Provider/Components/EstatutoResult.razor.rz.scp.css */
/* El puntaje va tabular y con el mismo peso que el veredicto: es el otro dato que se lee de un vistazo. */
.topic-score[b-ppfuo21zwt] {
    font-weight: 600;
    font-variant-numeric: lining-nums tabular-nums;
    white-space: nowrap;
}

/* Wide tables scroll inside their own box so the page body never scrolls sideways. */
.table-scroll[b-ppfuo21zwt] {
    overflow-x: auto;
}

.rule-table[b-ppfuo21zwt] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.rule-table th[b-ppfuo21zwt] {
    text-align: left;
    font-weight: 600;
    white-space: nowrap;
    padding: 0.4rem 0.6rem;
    border-bottom: 2px solid var(--rz-base-300, #d4d4d8);
}

.rule-table td[b-ppfuo21zwt] {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--rz-base-200, #e4e4e7);
    vertical-align: top;
}

.fact-grid[b-ppfuo21zwt] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 0.75rem 1.25rem;
    margin-top: 0.5rem;
}

.fact[b-ppfuo21zwt] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.fact-label[b-ppfuo21zwt] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--rz-text-secondary-color, #71717a);
}

.fact-value[b-ppfuo21zwt] {
    font-weight: 600;
    /* A long company name wraps instead of widening the grid column. */
    overflow-wrap: anywhere;
}

.fact-note[b-ppfuo21zwt] {
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color, #71717a);
    overflow-wrap: anywhere;
}

.reason-list[b-ppfuo21zwt] {
    margin: 0.25rem 0 0;
    padding-left: 1.25rem;
}
/* /Features/Provider/Components/F30FormResult.razor.rz.scp.css */
/* El puntaje va tabular y con el mismo peso que el veredicto: es el otro dato que se lee de un vistazo. */
.topic-score[b-oi1817wqid] {
    font-weight: 600;
    font-variant-numeric: lining-nums tabular-nums;
    white-space: nowrap;
}

/* Wide tables scroll inside their own box so the page body never scrolls sideways. */
.table-scroll[b-oi1817wqid] {
    overflow-x: auto;
}

.period-table[b-oi1817wqid],
.rule-table[b-oi1817wqid] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.period-table th[b-oi1817wqid],
.rule-table th[b-oi1817wqid] {
    text-align: left;
    font-weight: 600;
    white-space: nowrap;
    padding: 0.4rem 0.6rem;
    border-bottom: 2px solid var(--rz-base-300, #d4d4d8);
}

.period-table td[b-oi1817wqid],
.rule-table td[b-oi1817wqid] {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--rz-base-200, #e4e4e7);
    vertical-align: top;
}

.period-table td[b-oi1817wqid] {
    white-space: nowrap;
}

    /* Amounts and page numbers right-align so the digits line up and an outlier is visible at a glance. */
.period-table .num[b-oi1817wqid],
.rule-table .num[b-oi1817wqid] {
    text-align: right;
    font-variant-numeric: lining-nums tabular-nums;
}

    /* An undeclared month is the finding, not a footnote: it has to be visible while scanning the column. */
.period-table tr.undeclared[b-oi1817wqid] {
    background: var(--rz-warning-lighter, #fef9c3);
}

.state-dot[b-oi1817wqid] {
    display: inline-block;
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    margin-right: 0.4rem;
    vertical-align: middle;
}

.state-ok[b-oi1817wqid] {
    background: var(--rz-success, #16a34a);
}

.state-missing[b-oi1817wqid] {
    background: var(--rz-danger, #dc2626);
}

.fact-grid[b-oi1817wqid] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 0.75rem 1.25rem;
    margin-top: 0.5rem;
}

.fact[b-oi1817wqid] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.fact-label[b-oi1817wqid] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--rz-text-secondary-color, #71717a);
}

.fact-value[b-oi1817wqid] {
    font-weight: 600;
    /* A long company name wraps instead of widening the grid column. */
    overflow-wrap: anywhere;
}

/* Un valor que se leyó pero no se pudo interpretar. No es un error del sistema ni un dato válido:
   es texto del documento que alguien tiene que ir a mirar. */
.fact-unreadable[b-oi1817wqid] {
    font-weight: 400;
    font-style: italic;
    color: var(--rz-warning-dark, #a16207);
}

.fact-note[b-oi1817wqid] {
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color, #71717a);
    overflow-wrap: anywhere;
}

.reason-list[b-oi1817wqid] {
    margin: 0.25rem 0 0;
    padding-left: 1.25rem;
}
/* /Features/Provider/Components/FloidDetail.razor.rz.scp.css */
.fx-card[b-hsqd1ug10l] {
    width: 100%;
}

.fx-semaforos[b-hsqd1ug10l] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.fx-sem[b-hsqd1ug10l] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.25rem 0.5rem;
    border: 1px solid var(--rz-border, #e0e0e0);
    border-radius: 6px;
}

.fx-sem-label[b-hsqd1ug10l] {
    font-size: 0.8rem;
    color: var(--rz-text-secondary-color, #6b7280);
}

.fx-tablewrap[b-hsqd1ug10l] {
    overflow-x: auto;
    width: 100%;
}

.fx-table[b-hsqd1ug10l] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}

.fx-table th[b-hsqd1ug10l],
.fx-table td[b-hsqd1ug10l] {
    text-align: left;
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--rz-border, var(--gf-grey-200));
    vertical-align: top;
}

.fx-table thead th[b-hsqd1ug10l] {
    background: var(--rz-base-200, #f5f5f5);
    font-weight: 600;
    white-space: nowrap;
}

.fx-table tbody tr:hover[b-hsqd1ug10l] {
    background: var(--rz-base-100, #fafafa);
}

.fx-doclist[b-hsqd1ug10l] {
    margin: 0.25rem 0 0 1.1rem;
    padding: 0;
    font-size: 0.9rem;
}

.fx-doclist li[b-hsqd1ug10l] {
    margin-bottom: 0.15rem;
}
/* /Features/Provider/Components/GesintelDetail.razor.rz.scp.css */
.gx-card[b-jjrpmgylha] {
    width: 100%;
}

.gx-semaforos[b-jjrpmgylha] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.gx-sem[b-jjrpmgylha] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.25rem 0.5rem;
    border: 1px solid var(--rz-border, #e0e0e0);
    border-radius: 6px;
}

.gx-sem-label[b-jjrpmgylha] {
    font-size: 0.8rem;
    color: var(--rz-text-secondary-color, #6b7280);
}

.gx-flags[b-jjrpmgylha] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.gx-tablewrap[b-jjrpmgylha] {
    overflow-x: auto;
    width: 100%;
}

.gx-table[b-jjrpmgylha] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}

.gx-table th[b-jjrpmgylha],
.gx-table td[b-jjrpmgylha] {
    text-align: left;
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--rz-border, var(--gf-grey-200));
    vertical-align: top;
}

.gx-table thead th[b-jjrpmgylha] {
    background: var(--rz-base-200, #f5f5f5);
    font-weight: 600;
    white-space: nowrap;
}

.gx-table tbody tr:hover[b-jjrpmgylha] {
    background: var(--rz-base-100, #fafafa);
}
/* /Features/Provider/Components/LaborInsuranceResult.razor.rz.scp.css */
/* El puntaje va tabular y con el mismo peso que el veredicto: es el otro dato que se lee de un vistazo. */
.topic-score[b-3qyn43ivgk] {
    font-weight: 600;
    font-variant-numeric: lining-nums tabular-nums;
    white-space: nowrap;
}

/* Wide tables scroll inside their own box so the page body never scrolls sideways. */
.table-scroll[b-3qyn43ivgk] {
    overflow-x: auto;
}

.period-table[b-3qyn43ivgk],
.rule-table[b-3qyn43ivgk] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.period-table th[b-3qyn43ivgk],
.rule-table th[b-3qyn43ivgk] {
    text-align: left;
    font-weight: 600;
    white-space: nowrap;
    padding: 0.4rem 0.6rem;
    border-bottom: 2px solid var(--rz-base-300, #d4d4d8);
}

.period-table td[b-3qyn43ivgk],
.rule-table td[b-3qyn43ivgk] {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--rz-base-200, #e4e4e7);
    vertical-align: top;
}

.period-table td[b-3qyn43ivgk] {
    white-space: nowrap;
}

/* Amounts and page numbers right-align so the digits line up and an outlier is visible at a glance. */
.period-table .num[b-3qyn43ivgk],
.rule-table .num[b-3qyn43ivgk] {
    text-align: right;
    font-variant-numeric: lining-nums tabular-nums;
}

/* An undeclared month is the finding, not a footnote: it has to be visible while scanning the column. */
.period-table tr.undeclared[b-3qyn43ivgk] {
    background: var(--rz-warning-lighter, #fef9c3);
}

.state-dot[b-3qyn43ivgk] {
    display: inline-block;
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    margin-right: 0.4rem;
    vertical-align: middle;
}

.state-ok[b-3qyn43ivgk] {
    background: var(--rz-success, #16a34a);
}

.state-missing[b-3qyn43ivgk] {
    background: var(--rz-danger, #dc2626);
}

.fact-grid[b-3qyn43ivgk] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 0.75rem 1.25rem;
    margin-top: 0.5rem;
}

.fact[b-3qyn43ivgk] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.fact-label[b-3qyn43ivgk] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--rz-text-secondary-color, #71717a);
}

.fact-value[b-3qyn43ivgk] {
    font-weight: 600;
    /* A long company name wraps instead of widening the grid column. */
    overflow-wrap: anywhere;
}

/* Un valor que se leyó pero no se pudo interpretar. No es un error del sistema ni un dato válido:
   es texto del documento que alguien tiene que ir a mirar. */
.fact-unreadable[b-3qyn43ivgk] {
    font-weight: 400;
    font-style: italic;
    color: var(--rz-warning-dark, #a16207);
}

.fact-note[b-3qyn43ivgk] {
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color, #71717a);
    overflow-wrap: anywhere;
}

.reason-list[b-3qyn43ivgk] {
    margin: 0.25rem 0 0;
    padding-left: 1.25rem;
}
/* /Features/Provider/Components/ManualApprovalCell.razor.rz.scp.css */
.manual-approved[b-678e934yjy] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    font-size: 0.75rem;
    line-height: 1.35;
    color: var(--rz-text-secondary-color, #71717a);
}

.manual-title[b-678e934yjy] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    font-weight: 700;
    color: var(--rz-text-color);
}

/* `::deep` because RadzenIcon renders the <i>. */
.manual-title[b-678e934yjy]  .rzi {
    flex: none;
    font-size: 1rem;
    color: var(--rz-primary);
}

.manual-meta[b-678e934yjy] {
    overflow-wrap: anywhere;
}

.manual-reason[b-678e934yjy] {
    font-style: italic;
    color: var(--rz-text-color);
    overflow-wrap: anywhere;
}

/* Same compact size as SectionUploadButton so both actions in the row line up. `::deep` because
   RadzenButton renders the <button>. */
.manual-action[b-678e934yjy]  .rz-button {
    gap: 0.25rem;
    padding: 0.3rem 0.65rem;
    min-height: 0;
    line-height: 1.5;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    white-space: nowrap;
}

.manual-action[b-678e934yjy]  .rz-button .rzi {
    font-size: 1.1rem;
}

.manual-action[b-678e934yjy]  .rz-button-box {
    gap: 0.25rem;
}

.manual-muted[b-678e934yjy] {
    color: var(--rz-text-secondary-color, #71717a);
}

/* /Features/Provider/Components/ManualApprovalDialog.razor.rz.scp.css */
/* Read-only AI verdict, with its own scroll so a long list of rules doesn't push the buttons off screen. */
.ai-verdict[b-p78lkxejo9] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-height: 14rem;
    overflow-y: auto;
    padding: 0.75rem;
    border: 1px solid var(--rz-border-color, #e4e4e7);
    border-radius: var(--rz-border-radius, 4px);
    background: var(--rz-base-background-color, #fafafa);
    font-size: 0.8125rem;
}

.ai-verdict:focus-visible[b-p78lkxejo9] {
    outline: var(--rz-outline-focus, 2px solid var(--rz-primary));
    outline-offset: 2px;
}

.ai-status[b-p78lkxejo9],
.ai-rule[b-p78lkxejo9] {
    font-weight: 600;
}

.ai-finding[b-p78lkxejo9] {
    display: flex;
    flex-direction: column;
}

.ai-value[b-p78lkxejo9] {
    color: var(--rz-text-secondary-color, #71717a);
    overflow-wrap: anywhere;
}

.reason-field[b-p78lkxejo9] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.reason-label[b-p78lkxejo9] {
    font-size: 0.8125rem;
    font-weight: 600;
}

.reason-input[b-p78lkxejo9] {
    width: 100%;
    box-sizing: border-box;
    resize: vertical;
}

.reason-counter[b-p78lkxejo9] {
    align-self: flex-end;
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color, #71717a);
}

.reason-counter-short[b-p78lkxejo9] {
    color: var(--gf-status-rechazado);
}
/* /Features/Provider/Components/OmitirSiiDialog.razor.rz.scp.css */
/* El texto de la omisión, con scroll propio. La altura máxima está en `rem` y no en `vh`: el diálogo ya
   vive dentro de una ventana acotada, y encadenar dos límites de viewport deja la caja de dos líneas en
   un portátil. */
.omision-texto[b-cp043o06jt] {
    max-height: 12rem;
    overflow-y: auto;
    padding: 0.75rem;
    border: 1px solid var(--rz-border-color, #e4e4e7);
    border-radius: var(--rz-border-radius, 4px);
    background: var(--rz-base-background-color, #fafafa);
}

/* `tabindex` en el markup lo hace enfocable; el foco tiene que verse o el scroll por teclado queda
   invisible. */
.omision-texto:focus-visible[b-cp043o06jt] {
    outline: 2px solid var(--rz-primary, #2f6f4e);
    outline-offset: 2px;
}

/* El <input type="file"> es inline y arrastra el rótulo de formatos a su renglón. */
.omision-archivo[b-cp043o06jt] {
    display: block;
}

/* `text-align` hereda, así que alcanza con el contenedor: la clase en el RadzenText no aplicaría. */
.omision-falta[b-cp043o06jt] {
    text-align: right;
}

/* `align-items: start` y no `center`: la declaración ocupa dos renglones, y centrada deja la casilla
   flotando a media altura del texto. */
.omision-declaracion[b-cp043o06jt] {
    display: flex;
    align-items: start;
    gap: 0.6rem;
}

/* `::deep` porque el rótulo lo dibuja RadzenLabel: sin eso la regla no aplica y no hay error que lo
   diga. */
.omision-declaracion[b-cp043o06jt]  .omision-declaracion-texto {
    cursor: pointer;
    line-height: 1.35;
}
/* /Features/Provider/Components/PanelInfoDialog.razor.rz.scp.css */
/* Con scroll propio: sin altura acotada, cinco indicadores mas las notas empujan el boton fuera de la
   pantalla en un portatil (mismo criterio que DocumentoInfoDialog). */
.panelinfo-body[b-lscgbzb3s5] {
    max-height: 52vh;
    overflow-y: auto;
    padding-right: 4px;
}

.panelinfo-item + .panelinfo-item[b-lscgbzb3s5] {
    margin-top: 14px;
}

.panelinfo-titulo[b-lscgbzb3s5] {
    display: flex;
    align-items: center;
    gap: 6px;
}

/* El color se pone en la fila y el icono lo hereda: asi el par icono-titulo lleva el mismo tono que su
   tarjeta en el panel. Solo el par — la descripcion se queda gris, o el modal se lee como un semaforo. */
.panelinfo-total[b-lscgbzb3s5] {
    color: var(--gf-grey-900);
}

.panelinfo-aprobados[b-lscgbzb3s5] {
    color: var(--gf-status-aprobado);
}

.panelinfo-revision[b-lscgbzb3s5] {
    color: var(--gf-status-revision);
}

.panelinfo-rechazados[b-lscgbzb3s5] {
    color: var(--gf-status-rechazado);
}

.panelinfo-vencidas[b-lscgbzb3s5] {
    color: var(--gf-status-vencida);
}

.panelinfo-titulo .material-icons-round[b-lscgbzb3s5] {
    font-size: 16px;
    color: inherit;
}

.panelinfo-etiqueta[b-lscgbzb3s5] {
    font-size: 13px;
    font-weight: 600;
}

.panelinfo-descripcion[b-lscgbzb3s5] {
    margin: 2px 0 0 22px;
    font-size: 12px;
    line-height: 1.45;
    color: var(--gf-grey-700);
}

.panelinfo-notas[b-lscgbzb3s5] {
    margin: 0;
    padding-left: 18px;
    font-size: 12px;
    line-height: 1.45;
}

.panelinfo-notas li + li[b-lscgbzb3s5] {
    margin-top: 4px;
}
/* /Features/Provider/Components/PdfPreviewDialog.razor.rz.scp.css */
/* Matches Gen2's PDFPreview.tsx header exactly: title left, download+close icon buttons right,
   a bottom divider — escapes Radzen's own dialog-content padding via negative margins so this
   header row spans the full dialog width, same trick used by .gf-modal-footer (app.css). */
.pdfprev-header[b-bt4wlia3z3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin: -1.25rem -1.25rem 0.75rem;
    padding: 12px 16px;
    border-bottom: 1px solid var(--gf-grey-200);
}

.pdfprev-title[b-bt4wlia3z3] {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    color: var(--gf-grey-900);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pdfprev-actions[b-bt4wlia3z3] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

/* Real (not min-) height: Radzen's .rz-dialog-content doesn't stretch to fill a forced dialog
   frame (flex: 0 1 auto), so this needs to be the actual sizing source, matching Gen2's own
   `h-[85vh]` panel — a min-height alone left blank space below the iframe inside a taller frame. */
.pdfprev-body[b-bt4wlia3z3] {
    height: 78vh;
}

.pdfprev-iframe[b-bt4wlia3z3] {
    width: 100%;
    height: 100%;
    border: none;
    display: block;
}

/* Sin vista previa (tipo no renderizable, sin contenido, o el blob falló) el cuerpo no se deja en
   blanco: un marco vacío se lee como "todavía carga" y no como un motivo. */
.pdfprev-empty[b-bt4wlia3z3] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 100%;
    padding: 0 24px;
    text-align: center;
    color: var(--rz-text-secondary-color, #71717a);
    /* Por la variable que Radzen expone, no por su clase interna: las custom properties se heredan y
       el CSS isolation no las frena, así que el <i> del RadzenIcon la toma como hijo. El color lo
       hereda de esta misma regla. */
    --rz-icon-size: 40px;
}
/* /Features/Provider/Components/ProviderDecisionPanel.razor.rz.scp.css */
/* Mismo lenguaje que FloidDetail (fx-) y GesintelDetail (gx-): tabla plana con scroll propio, cabecera
   sobre --rz-base-200 y separadores suaves. Se repiten los valores en vez de compartir una clase porque
   el CSS de cada componente tiene alcance propio y no alcanza a los demas. */

.pd-card[b-cizij3o4eg] {
    width: 100%;
}

.pd-tablewrap[b-cizij3o4eg] {
    overflow-x: auto;
    width: 100%;
}

.pd-table[b-cizij3o4eg] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}

.pd-table th[b-cizij3o4eg],
.pd-table td[b-cizij3o4eg] {
    text-align: left;
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--rz-border, var(--gf-grey-200));
    vertical-align: top;
}

.pd-table thead th[b-cizij3o4eg] {
    background: var(--rz-base-200, #f5f5f5);
    font-weight: 600;
    white-space: nowrap;
}

.pd-table tbody tr:hover[b-cizij3o4eg] {
    background: var(--rz-base-100, #fafafa);
}

/* La fecha y la transicion no se parten en dos lineas: son los dos datos que se leen de un vistazo. */
.pd-nowrap[b-cizij3o4eg] {
    white-space: nowrap;
}

/* El comentario se recorta a una linea; el title de la celda (ProviderDecisionPanel.razor) muestra el
   texto completo al pasar el mouse. */
.pd-comment[b-cizij3o4eg] {
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Features/Provider/Components/ProviderFlowPanel.razor.rz.scp.css */
/* --- Línea de tiempo del proceso --- */

.flow-steps[b-liyeflu8ho] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem 0.15rem;
}

.flow-step[b-liyeflu8ho] {
    display: inline-flex;
    align-items: center;
    padding: 0.2rem 0.6rem;
    border-radius: 999px;
    font-size: 0.75rem;
    white-space: nowrap;
    background: var(--rz-base-200, #f4f4f5);
    color: var(--rz-text-secondary-color, #71717a);
}

/* El separador va en el pseudo-elemento y no en el markup: así el orden de los pasos lo decide
   FichaFlow.Steps y agregar uno no obliga a acordarse de intercalar la flecha. */
.flow-step:not(:last-child)[b-liyeflu8ho]::after {
    content: "›";
    margin: 0 0 0 0.45rem;
    color: var(--rz-text-disabled-color, #a1a1aa);
}

.flow-step.done[b-liyeflu8ho] {
    background: var(--rz-success-lighter, #dcfce7);
    color: var(--rz-success-dark, #15803d);
}

/* El paso actual tiene que distinguirse del cumplido a la vista, no leyendo la etiqueta. */
.flow-step.current[b-liyeflu8ho] {
    background: var(--rz-primary, #3f51b5);
    color: var(--gf-light);
    font-weight: 600;
}

/* El paso evaluado cuando la evaluación frena el avance (Desacreditado). */
.flow-step.done.negative[b-liyeflu8ho] {
    background: var(--rz-danger-lighter, #fee2e2);
    color: var(--rz-danger-dark, #b91c1c);
}

.flow-step.current.negative[b-liyeflu8ho] {
    background: var(--rz-danger-dark, #b91c1c);
    color: var(--gf-light);
}

/* Un impedimento o un fallo técnico del SII no es un paso del proceso: se dibuja aparte y sin flecha,
   para que no se lea como que alguien lo recorre. */
.flow-step.off-ramp[b-liyeflu8ho] {
    background: var(--rz-danger-lighter, #fee2e2);
    color: var(--rz-danger-dark, #b91c1c);
    margin-left: 0.6rem;
}

.flow-step.off-ramp[b-liyeflu8ho]::after {
    content: none;
}

/* --- La acción del paso --- */

.flow-action[b-liyeflu8ho] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-top: 1rem;
}

/* Renglón propio: al lado de la nota del paso las dos frases se leen como una sola corrida.
   `::deep` porque es un RadzenText — sin eso la regla no aplica y la línea se mezcla en silencio. */
.flow-action[b-liyeflu8ho]  .flow-cycle {
    flex: 1 0 100%;
}

/* Los avisos NO se estilan acá: son RadzenAlert, y el CSS aislado no llega a un componente hijo — la
   regla no aplicaría y el margen se perdería en silencio. Usan las utilidades de Radzen en el markup. */

/* --- El enlace recién emitido --- */

.flow-link[b-liyeflu8ho] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    margin-top: 1rem;
}

.flow-link-row[b-liyeflu8ho] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}
/* /Features/Provider/Components/ProviderGrid.razor.rz.scp.css */
/* El marco lo dibuja la PROPIA grilla: .rz-datatable ya trae border, border-radius y overflow: hidden.
   Un borde propio encima quedaba como dos marcos con radios distintos, y eso es lo que se veia raro en
   las esquinas. Aca solo se retintan sus variables.

   Van declaradas en el envoltorio y sin ::deep a proposito: las custom properties heredan, asi que
   cruzan el limite del componente hijo solas. ::deep se reserva para lo que apunta a sus elementos. */
.prov-grid[b-zzacgwe5us] {
    --rz-grid-border-radius: 10px;
    --rz-grid-cell-border: 1px solid var(--gf-grey-200);
    --rz-grid-header-background-color: var(--gf-grey-50);

    --v14-panel: #f1f4f7;
    --v14-muted-text: #546276;
    --v14-warn-bg: #fdeedd;
    --v14-warn-text: #a85408;
    --v14-ok-bg: #e7f4ee;
    --v14-ok-text: #1a7a50;
    --v14-crit-bg: #fdeaea;
    --v14-crit-text: #c62828;
}

/* Colores del badge ETAPA por grupo de avance (ProviderStages.ColorClass). !important porque pisan la
   clase de color que ya trae el badge de Radzen (BadgeStyle.Light), no solo la agregan. */
.prov-grid[b-zzacgwe5us]  .stage-badge.stage-neutral {
    background-color: var(--v14-panel) !important;
    color: var(--v14-muted-text) !important;
}

.prov-grid[b-zzacgwe5us]  .stage-badge.stage-warn {
    background-color: var(--v14-warn-bg) !important;
    color: var(--v14-warn-text) !important;
}

.prov-grid[b-zzacgwe5us]  .stage-badge.stage-ok {
    background-color: var(--v14-ok-bg) !important;
    color: var(--v14-ok-text) !important;
}

.prov-grid[b-zzacgwe5us]  .stage-badge.stage-crit {
    background-color: var(--v14-crit-bg) !important;
    color: var(--v14-crit-text) !important;
}

/* Cuando la columna ETAPA no alcanza para el texto completo, se recorta con elipsis; el title
   del span envoltorio (ProviderGrid.razor) muestra el texto completo al pasar el mouse. */
.prov-grid[b-zzacgwe5us]  .prov-etapa-cell {
    display: inline-block;
    max-width: 100%;
}

.prov-grid[b-zzacgwe5us]  .prov-etapa-cell .rz-badge {
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
}

/* Radzen no define hover de fila (no hay variable que tocar), asi que esta regla si tiene que alcanzar
   los elementos que dibuja el hijo. */
.prov-grid[b-zzacgwe5us]  .rz-grid-table tbody tr:hover {
    background: var(--gf-grey-50);
}

/* Esqueleto de la tabla. Repite el marco de la grilla —mismo borde y mismo radio— porque mientras carga
   la grilla esta oculta: sin esto el recuadro apareceria al llegar los datos, que es justo el salto que
   se quiere evitar. Las columnas repiten los anchos reales y la fila su alto, por lo mismo. */
.prov-skeleton[b-zzacgwe5us] {
    border: 1px solid var(--gf-grey-200);
    border-radius: 10px;
    overflow: hidden;
    padding: 0.5rem 0;
}

.prov-skeleton-row[b-zzacgwe5us] {
    display: grid;
    grid-template-columns: 130px 220px 110px 110px 160px 150px 170px 90px;
    align-items: center;
    gap: 1rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--gf-grey-200);
}

.prov-skeleton-row:last-child[b-zzacgwe5us] {
    border-bottom: none;
}

/* Oculta, no desmontada: ver el comentario de la grilla en ProviderGrid.razor. */
.prov-hidden[b-zzacgwe5us] {
    display: none;
}
/* /Features/Provider/Components/SectionUploadButton.razor.rz.scp.css */
.upload-btn[b-myjhsgb9pn] {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.3rem 0.65rem;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 500;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    white-space: nowrap;
    cursor: pointer;
    background: var(--rz-primary);
    color: var(--gf-light);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.18);
}

.upload-btn[b-myjhsgb9pn]  .rzi {
    font-size: 1.1rem;
}

.upload-btn:hover[b-myjhsgb9pn] {
    background: var(--rz-primary-dark);
}

/* Replacing is the less common action once a document exists, so it reads as secondary. */
.upload-btn-replace[b-myjhsgb9pn] {
    background: var(--gf-light);
    color: var(--rz-primary);
    box-shadow: inset 0 0 0 1px var(--rz-border-color, #e4e4e7);
}

.upload-btn-replace:hover[b-myjhsgb9pn] {
    background: var(--gf-primary-soft);
}

.upload-btn:focus-within[b-myjhsgb9pn] {
    outline: var(--rz-outline-focus, 2px solid var(--rz-primary));
    outline-offset: 2px;
}

.upload-btn-disabled[b-myjhsgb9pn] {
    opacity: 0.5;
    pointer-events: none;
}

/* Visually hidden but still focusable: display:none would take the control out of the tab order.
   `::deep` because InputFile renders the <input>. */
.upload-btn[b-myjhsgb9pn]  .upload-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/* /Features/Provider/Components/TaxFolderResult.razor.rz.scp.css */
/* El puntaje va tabular y con el mismo peso que el veredicto: es el otro dato que se lee de un vistazo. */
.topic-score[b-uu40xkyn8q] {
    font-weight: 600;
    font-variant-numeric: lining-nums tabular-nums;
    white-space: nowrap;
}

/* Wide tables scroll inside their own box so the page body never scrolls sideways. */
.table-scroll[b-uu40xkyn8q] {
    overflow-x: auto;
}

.period-table[b-uu40xkyn8q],
.rule-table[b-uu40xkyn8q] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.period-table th[b-uu40xkyn8q],
.rule-table th[b-uu40xkyn8q] {
    text-align: left;
    font-weight: 600;
    white-space: nowrap;
    padding: 0.4rem 0.6rem;
    border-bottom: 2px solid var(--rz-base-300, #d4d4d8);
}

.period-table td[b-uu40xkyn8q],
.rule-table td[b-uu40xkyn8q] {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--rz-base-200, #e4e4e7);
    vertical-align: top;
}

.period-table td[b-uu40xkyn8q] {
    white-space: nowrap;
}

/* Amounts and page numbers right-align so the digits line up and an outlier is visible at a glance. */
.period-table .num[b-uu40xkyn8q],
.rule-table .num[b-uu40xkyn8q] {
    text-align: right;
    font-variant-numeric: lining-nums tabular-nums;
}

/* An undeclared month is the finding, not a footnote: it has to be visible while scanning the column. */
.period-table tr.undeclared[b-uu40xkyn8q] {
    background: var(--rz-warning-lighter, #fef9c3);
}

.state-dot[b-uu40xkyn8q] {
    display: inline-block;
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    margin-right: 0.4rem;
    vertical-align: middle;
}

.state-ok[b-uu40xkyn8q] {
    background: var(--rz-success, #16a34a);
}

.state-missing[b-uu40xkyn8q] {
    background: var(--rz-danger, #dc2626);
}

.fact-grid[b-uu40xkyn8q] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 0.75rem 1.25rem;
    margin-top: 0.5rem;
}

.fact[b-uu40xkyn8q] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.fact-label[b-uu40xkyn8q] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--rz-text-secondary-color, #71717a);
}

.fact-value[b-uu40xkyn8q] {
    font-weight: 600;
    /* A long company name wraps instead of widening the grid column. */
    overflow-wrap: anywhere;
}

/* Un valor que se leyó pero no se pudo interpretar. No es un error del sistema ni un dato válido:
   es texto del documento que alguien tiene que ir a mirar. */
.fact-unreadable[b-uu40xkyn8q] {
    font-weight: 400;
    font-style: italic;
    color: var(--rz-warning-dark, #a16207);
}

.fact-note[b-uu40xkyn8q] {
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color, #71717a);
    overflow-wrap: anywhere;
}

.reason-list[b-uu40xkyn8q] {
    margin: 0.25rem 0 0;
    padding-left: 1.25rem;
}
/* /Features/Provider/Pages/Detail.razor.rz.scp.css */
.section-grid[b-uifqj2ghqv] {
    margin: 1rem 0;
    display: grid;
    grid-template-columns: repeat(auto-fill);
    gap: 1rem;
}

.section-actions[b-uifqj2ghqv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.5rem;
    flex-wrap: wrap;
}

/* --- Tarjeta unificada de Documentación (rediseño US ficha-proveedor) --- */

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

.doc-card-header strong[b-uifqj2ghqv] {
    font-size: 1rem;
}

/* Bloqueo sin velo: mientras evalúa o el proveedor carga, el botón «Evaluar todo» y el listado no aceptan
   interacción (input de archivo incluido) y se atenúan para leerse como deshabilitados. Sin overlay: solo
   se apaga el contenido de esta tarjeta. */
.doc-card-busy .doc-card-header[b-uifqj2ghqv],
.doc-card-busy .doc-table-wrap[b-uifqj2ghqv] {
    opacity: 0.5;
    pointer-events: none;
    user-select: none;
}

/* Una tabla ancha hace scroll dentro de su propio contenedor, no ensancha la página. */
.doc-table-wrap[b-uifqj2ghqv] {
    overflow-x: auto;
}

.doc-table[b-uifqj2ghqv] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.doc-table thead th[b-uifqj2ghqv] {
    text-align: left;
    font-size: 0.6875rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    font-weight: 600;
    color: var(--rz-text-secondary-color, #71717a);
    background: var(--rz-base-100, #f4f4f5);
    padding: 0.5rem 0.6rem;
    border-bottom: 1px solid var(--rz-border-color, #e4e4e7);
    white-space: nowrap;
}

.doc-table tbody td[b-uifqj2ghqv] {
    padding: 0.65rem 0.6rem;
    border-bottom: 1px solid var(--rz-border-color, #e4e4e7);
    vertical-align: top;
}

/* La última fila no lleva línea: el borde de la tarjeta ya cierra la tabla. */
.doc-table tbody tr:last-child td[b-uifqj2ghqv] {
    border-bottom: none;
}

/* La columna Sección apila etiqueta y peso, como en las tarjetas anteriores. */
.doc-table .col-seccion[b-uifqj2ghqv] {
    min-width: 9rem;
}

.doc-table .col-seccion .doc-name[b-uifqj2ghqv],
.doc-table .col-seccion .doc-optional[b-uifqj2ghqv],
.doc-table .col-seccion .doc-meta[b-uifqj2ghqv] {
    display: block;
}

.doc-table .col-seccion .doc-optional[b-uifqj2ghqv] {
    margin: 0.15rem 0;
}

.doc-table .col-seccion .doc-optional[b-uifqj2ghqv]  span {
    text-transform: none;
}

.doc-table .col-documento[b-uifqj2ghqv] {
    min-width: 12rem;
}

/* Un nombre de archivo largo se corta con elipsis (el nombre completo va en el title): sin tope, el
   nowrap haría que la columna crezca hasta el largo del nombre y la tabla vuelva a desbordar. */
.doc-table .col-documento .doc-name:not(.doc-name-btn)[b-uifqj2ghqv],
.doc-table .col-documento .doc-name-text[b-uifqj2ghqv] {
    display: block;
    max-width: 14rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.doc-table .col-documento .doc-name-btn[b-uifqj2ghqv] {
    min-width: 0;
    max-width: 100%;
}


.doc-table .col-aprobacion[b-uifqj2ghqv] {
    min-width: 8rem;
    max-width: 12rem;
}

/* En la tabla el estado del documento no necesita el margen superior que usaba dentro de la tarjeta. */
.doc-table .doc-state[b-uifqj2ghqv],
.doc-table .doc-score[b-uifqj2ghqv] {
    margin-top: 0;
}

.doc-table input[type="file"][b-uifqj2ghqv] {
    max-width: 100%;
}

/* --- Estado del documento de cada sección (task 36533) --- */

.doc-state[b-uifqj2ghqv] {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
    margin-top: 0.5rem;
    font-size: 0.8125rem;
    min-width: 0;
}

/* Un documento cargado y uno ausente tienen que distinguirse de un vistazo, no leyendo el texto. */
.doc-loaded[b-uifqj2ghqv] {
    color: var(--rz-success-dark, #15803d);
}

.doc-missing[b-uifqj2ghqv] {
    color: var(--rz-text-secondary-color, #71717a);
}

.doc-lines[b-uifqj2ghqv] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.doc-name[b-uifqj2ghqv] {
    font-weight: 600;
    /* Un nombre de archivo largo se corta en vez de ensanchar la tarjeta y romper la grilla. */
    overflow: hidden;
    text-overflow: ellipsis;
    /*white-space: nowrap;*/
    max-width: 300px;

}


.doc-name-row[b-uifqj2ghqv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
}

.doc-name-btn[b-uifqj2ghqv] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    font-weight: 600;
    color: inherit;
    text-align: left;
    cursor: pointer;
    --rz-icon-size: 1rem;
}
.doc-name-btn .doc-name-text[b-uifqj2ghqv] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* El ojo en gris y no en el verde que hereda del estado «cargado»: el verde dice que el documento
   está, el ojo dice que se puede abrir. Son dos cosas distintas y conviene que se lean distinto.
   Va con ::deep porque Radzen no expone una variable de color para el icono, solo de tamaño. */
.doc-name-btn[b-uifqj2ghqv]  .rzi {
    color: var(--rz-text-secondary-color, #71717a);
    transition: color 0.12s ease;
}

.doc-name-btn:hover[b-uifqj2ghqv]  .rzi,
.doc-name-btn:focus-visible[b-uifqj2ghqv]  .rzi {
    color: inherit;
}

.doc-name-btn:hover .doc-name-text[b-uifqj2ghqv],
.doc-name-btn:focus-visible .doc-name-text[b-uifqj2ghqv] {
    text-decoration: underline;
}

.doc-meta[b-uifqj2ghqv] {
    color: var(--rz-text-secondary-color, #71717a);
}

.doc-origin[b-uifqj2ghqv] {
    margin-top: 0.25rem;
    /* El distintivo es inline-block: sin esto se estira al ancho de la columna flex y se lee como una
       barra en vez de una etiqueta. */
    align-self: flex-start;
}

/* `::deep` because InputFile renders the <input>, so it never gets this page's CSS-isolation attribute.
   On narrow screens the input is clipped inside its own cell instead of spilling over the next column;
   the browser's own tooltip on a file input shows the full text on hover. */


.doc-score[b-uifqj2ghqv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.4rem;
    flex-wrap: wrap;
}

.topic-score[b-uifqj2ghqv] {
    font-weight: 600;
    font-variant-numeric: lining-nums tabular-nums;
    white-space: nowrap;
}

/* El rótulo y el input nativo van juntos: el rótulo es lo que dice si se carga o se reemplaza. */
.file-label[b-uifqj2ghqv] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color, #71717a);
    min-width: 0;
}

.file-label input[type="file"][b-uifqj2ghqv] {
    max-width: 100%;
}

/* `min-width: 0` para que un nombre largo se acomode en vez de estirar la fila: sin eso el mínimo de
   contenido del bloque le gana al envoltorio y la marca de frescura desborda la tarjeta. */
.ficha-identity[b-uifqj2ghqv] {
    flex: 1 1 16rem;
    min-width: 0;
}

/* Con los rótulos los distintivos son largos y ya no entran en un renglón: el envoltorio los baja en
   vez de desbordar la tarjeta, y el `gap` reemplaza el margen suelto que llevaba cada uno. */
.ficha-badges[b-uifqj2ghqv] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

/* `flex-start` y no el `center` del contenedor: la cabecera crece con el nombre y el correo, y
   centrada quedaría flotando a media altura. `nowrap` la mantiene en un renglón; cuando deja de
   entrar, el envoltorio de la cabecera la baja entera en vez de cortarla. */
.ficha-freshness[b-uifqj2ghqv] {
    display: flex;
    align-items: center;
    align-self: flex-start;
    gap: 0.35rem;
    white-space: nowrap;
    color: var(--rz-text-secondary-color, #71717a);
}

/* El reloj acompaña a la frase, no la encabeza: al tamaño y al color del texto de al lado. `::deep`
   porque el icono lo dibuja RadzenIcon. */
.ficha-freshness[b-uifqj2ghqv]  i {
    font-size: 1rem;
    color: inherit;
}

/* /Features/Provider/Pages/Index.razor.rz.scp.css */
/* Provider dashboard styles, ported from the old AgenteContratistas Proveedores page. Only the
   custom pieces Radzen has no equivalent for are kept here — the stats panel (RadzenCard), the
   filters row (RadzenStack), the error (RadzenAlert) and pagination (RadzenStack) are handled by
   Radzen components in Index.razor and are intentionally NOT styled here. */

.prov-page[b-ew9imeg3n2] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

/* Header inside the stats RadzenCard */
.prov-title[b-ew9imeg3n2] {
    font-size: 18px;
    font-weight: 700;
    color: var(--gf-grey-900);
    margin: 0;
}

.prov-subtitle[b-ew9imeg3n2] {
    font-size: 12px;
    color: var(--gf-grey-500);
    margin: 0;
}

/* El boton de ayuda va pegado al titulo y no en la barra de acciones: explica los indicadores de esta
   tarjeta, no ofrece una accion sobre los proveedores. */
.prov-titlerow[b-ew9imeg3n2] {
    display: flex;
    align-items: center;
    gap: 2px;
}

/* Stat tiles ---------------------------------------------------------------- */
.prov-stats-grid[b-ew9imeg3n2] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
}

@media (min-width: 640px) {
    .prov-stats-grid[b-ew9imeg3n2] {
        grid-template-columns: repeat(3, 1fr);
    }
}

@media (min-width: 1024px) {
    .prov-stats-grid[b-ew9imeg3n2] {
        grid-template-columns: repeat(5, 1fr);
    }
}

/* Los tiles mantienen el fondo de color de esta pagina, pero con el relieve del resto del
   proyecto: borde propio, acento lateral (como .rep-stat-tile en Reportes) y una sombra minima
   para que se lean como piezas y no como manchas de color. */
.prov-stat-tile[b-ew9imeg3n2] {
    border-radius: 12px;
    padding: 12px 14px;
    border: 1px solid var(--gf-grey-200);
    border-left-width: 4px;
    border-left-style: solid;
    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.05);
}

.prov-stat-labelrow[b-ew9imeg3n2] {
    display: flex;
    align-items: center;
    gap: 5px;
}

.prov-stat-labelrow .material-icons-round[b-ew9imeg3n2] {
    font-size: 13px;
    color: inherit;
}

.prov-stat-label[b-ew9imeg3n2] {
    font-size: 10px;
    font-weight: 500;
    opacity: 0.8;
}

.prov-stat-value[b-ew9imeg3n2] {
    font-size: 22px;
    font-weight: 700;
    margin: 2px 0 0;
}

.prov-stat-loading[b-ew9imeg3n2] {
    display: block;
    width: 3rem;
    height: 22px;
    margin-top: 4px;
    border-radius: 4px;
    background: currentColor;
    opacity: 0.15;
    animation: prov-stat-pulse-b-ew9imeg3n2 1.2s ease-in-out infinite;
}

@keyframes prov-stat-pulse-b-ew9imeg3n2 { 50% { opacity: 0.3; } }

@media (prefers-reduced-motion: reduce) {
    .prov-stat-loading[b-ew9imeg3n2] { animation: none; }
}

.prov-stat-total[b-ew9imeg3n2] {
    background: var(--gf-grey-50);
    color: var(--gf-grey-900);
    border-left-color: var(--gf-grey-500);
}

.prov-stat-aprobados[b-ew9imeg3n2] {
    background: #d1fae5;
    color: var(--gf-status-aprobado);
    border-left-color: #10b981;
}

.prov-stat-revision[b-ew9imeg3n2] {
    background: #fef3c7;
    color: var(--gf-status-revision);
    border-left-color: #f59e0b;
}

.prov-stat-rechazados[b-ew9imeg3n2] {
    background: #fee2e2;
    color: var(--gf-status-rechazado);
    border-left-color: #ef4444;
}

.prov-stat-pendientes[b-ew9imeg3n2] {
    background: var(--gf-grey-50);
    color: var(--gf-grey-500);
    border-left-color: var(--gf-grey-300);
}

.prov-stat-vencidas[b-ew9imeg3n2] {
    background: #ffedd5;
    color: var(--gf-status-vencida);
    border-left-color: #f97316;
}
/* /Features/PublicDocumentRequest/Components/DocumentRow.razor.rz.scp.css */
/* Fila de documento del portal público. La forma sale del prototipo: ícono, rótulo con la condición
   debajo, y la acción a la derecha. Consume los tokens --gf-* globales (wwwroot/css/app.css). */

/* Todo en una línea, como el prototipo: ícono, texto, y la acción a la derecha. Ahora entra, porque
   el botón es un label de ~70px y no el control nativo de ~250px que había antes. */
.doc-row[b-4fu1a8se36] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    border: 1px solid var(--gf-grey-300);
    border-radius: 10px;
    background: var(--gf-light);
    transition: border-color 0.2s ease, background-color 0.2s ease;
}

/* min-width:0 es lo que le permite encogerse: sin eso un rótulo largo vuelve a empujar el botón. */
.doc-head[b-4fu1a8se36] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1;
    min-width: 0;
}

.doc-icon[b-4fu1a8se36] {
    font-size: 20px;
    flex-shrink: 0;
    line-height: 1.4;
    color: var(--gf-grey-500);
}

.doc-main[b-4fu1a8se36] {
    flex: 1;
    min-width: 0;
}

/* min-width:0 y flex-wrap no son decorativos: un hijo de flex arranca con min-width:auto, así que sin
   esto un rótulo largo ensancha el título y empuja el botón fuera de la fila. */
.doc-label[b-4fu1a8se36] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px 8px;
    min-width: 0;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.3;
    color: var(--gf-grey-900);
}

/* Corta entre palabras, no en cualquier letra. Con "anywhere" el navegador considera que el rótulo
   puede medir un carácter, y el título terminaba partido letra por letra. */
.doc-label > span:first-child[b-4fu1a8se36] {
    min-width: 0;
    overflow-wrap: break-word;
}

.doc-optional[b-4fu1a8se36] {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    color: var(--gf-grey-700);
    background: var(--gf-grey-100);
    border-radius: 6px;
    padding: 2px 6px;
}

/* Ajusta en vez de truncar: acá también va el motivo del error, y un motivo cortado a la mitad deja
   al proveedor sin saber qué hacer. */
.doc-sub[b-4fu1a8se36] {
    margin-top: 2px;
    font-size: 12px;
    line-height: 1.4;
    color: var(--gf-grey-500);
    overflow-wrap: break-word;
}

.doc-action[b-4fu1a8se36] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-shrink: 0;
    min-height: 30px;
}

/* position:relative acota el input oculto, que va en absolute: sin un ancestro posicionado se
   ubicaría contra la página. white-space:nowrap evita que "Cambiar" se parta en dos líneas. */
.doc-btn[b-4fu1a8se36] {
    position: relative;
    display: inline-block;
    padding: 6px 16px;
    border: 1px solid var(--gf-grey-300);
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
    color: var(--gf-grey-900);
    background: var(--gf-light);
    cursor: pointer;
}

.doc-btn:hover[b-4fu1a8se36] {
    background: var(--gf-grey-100);
}

/* Sin ::deep esta regla no aplica: InputFile es un componente y el CSS aislado no alcanza su markup,
   así que el control nativo queda a la vista. No se usa display:none: pierde el foco por teclado. */
.doc-btn[b-4fu1a8se36]  input[type="file"] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Nombre distinto del de la fila (.doc-sending): si compartieran clase, la regla de estado de la
   fila y la del texto se aplicarían a los dos elementos. */
.doc-sending-text[b-4fu1a8se36] {
    font-size: 12px;
    font-weight: 700;
    color: var(--gf-grey-700);
}

.doc-badge[b-4fu1a8se36] {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 800;
    color: #1f8a5b;
    background: #e7f4ee;
}

/* ===== ESTADOS ===== */

.doc-selected[b-4fu1a8se36] {
    border-color: var(--gf-primary-accent);
}

.doc-selected .doc-icon[b-4fu1a8se36] {
    color: var(--gf-primary-accent);
}

.doc-sending[b-4fu1a8se36] {
    opacity: 0.85;
}

.doc-sent[b-4fu1a8se36] {
    border-color: #bfe0cf;
    background: #f2faf6;
}

.doc-sent .doc-icon[b-4fu1a8se36] {
    color: #1f8a5b;
}

.doc-failed[b-4fu1a8se36] {
    border-color: #f3c2c2;
    background: #fdf6f6;
}

.doc-failed .doc-icon[b-4fu1a8se36],
.doc-failed .doc-sub[b-4fu1a8se36] {
    color: #c62828;
}

/* En pantalla angosta sí se apila: ahí el ancho no alcanza para el rótulo y el botón en una línea, y
   truncar el nombre del documento es peor que usar dos renglones. */
@media (max-width: 420px) {
    .doc-row[b-4fu1a8se36] {
        flex-direction: column;
        align-items: stretch;
        padding: 12px;
        gap: 10px;
    }

    .doc-head[b-4fu1a8se36] {
        align-items: flex-start;
    }

    .doc-label[b-4fu1a8se36] {
        font-size: 13px;
    }
}
/* /Features/PublicDocumentRequest/Components/LinkUnavailable.razor.rz.scp.css */
/* Pantalla de enlace no disponible. Centrada y sobria: el proveedor no tiene nada que hacer acá
   salvo leer y escribir un correo. */

.lnk[b-acyy7jmj8b] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 460px;
    margin: 48px auto;
    padding: 32px 24px;
    border: 1px solid var(--gf-grey-300);
    border-radius: 12px;
    background: var(--gf-light);
}

.lnk-icon[b-acyy7jmj8b] {
    width: 52px;
    height: 52px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--gf-grey-100);
    color: var(--gf-grey-500);
    font-size: 26px;
}

.lnk-title[b-acyy7jmj8b] {
    margin: 16px 0 0;
    font-size: 19px;
    font-weight: 800;
    color: var(--gf-grey-900);
}

.lnk-message[b-acyy7jmj8b] {
    margin: 8px 0 0;
    font-size: 13.5px;
    line-height: 1.5;
    color: var(--gf-grey-700);
}

/* Sin ::deep no aplica: RadzenButton es un componente y su <button> no lleva el atributo de ámbito. */
.lnk[b-acyy7jmj8b]  .lnk-retry {
    margin-top: 18px;
}

.lnk-contact[b-acyy7jmj8b] {
    margin: 20px 0 0;
    padding-top: 16px;
    border-top: 1px solid var(--gf-grey-200);
    width: 100%;
    font-size: 12px;
    color: var(--gf-grey-500);
}

.lnk-contact a[b-acyy7jmj8b] {
    font-weight: 700;
    color: var(--gf-primary-accent);
}

@media (max-width: 600px) {
    .lnk[b-acyy7jmj8b] {
        margin: 24px auto;
        padding: 24px 18px;
    }
}
/* /Features/PublicDocumentRequest/Pages/Index.razor.rz.scp.css */
/* El encabezado vive acá y no en PublicLayout.razor.css porque el CSS aislado no atraviesa @Body:
   el contenido pertenece a esta página, no al marco. */

.gf-public-heading[b-hjzkpqjk0g] {
    margin: 0 0 16px;
    font-size: 22px;
    font-weight: 800;
    color: var(--gf-grey-900);
}

/* ===== CABECERA GRANATE ===== */

.pub-hero[b-hjzkpqjk0g] {
    background: linear-gradient(100deg, #7a1330 0%, #a01c40 100%);
    border-radius: 12px;
    padding: 22px 26px;
    margin-bottom: 18px;
    color: var(--gf-light);
}

/* El color va explícito y no heredado de .pub-hero: la herencia pierde contra cualquier regla que
   apunte al elemento, y Radzen trae la suya para h1 y p. */
.pub-hero-title[b-hjzkpqjk0g] {
    margin: 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--gf-light);
}

.pub-hero-sub[b-hjzkpqjk0g] {
    margin: 4px 0 0;
    font-size: 13.5px;
    color: var(--gf-light);
    opacity: 0.9;
}

/* RadzenCard y RadzenAlert son componentes: la clase llega a su elemento raíz, pero sin el atributo
   de ámbito de este archivo. Por eso van con ::deep desde .pub-page, que sí es un elemento nuestro. */
.pub-page[b-hjzkpqjk0g]  .pub-card {
    border-radius: 12px;
}

.pub-page[b-hjzkpqjk0g]  .pub-notice {
    margin: 0 0 16px;
}

/* ===== TARJETA DE ESTADO ===== */

.pub-state[b-hjzkpqjk0g] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 18px 4px 20px;
}

.pub-state-icon[b-hjzkpqjk0g] {
    flex-shrink: 0;
    width: 38px;
    height: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
    background: var(--gf-primary-soft);
    color: var(--gf-primary-accent);
    font-size: 20px;
}

.pub-state-main[b-hjzkpqjk0g] {
    flex: 1;
    min-width: 0;
}

/* Mismo motivo que en la fila de documento: sin min-width:0 y sin permitir el salto, el título más
   la insignia empujan al botón de confirmar fuera de la tarjeta. */
.pub-state-title[b-hjzkpqjk0g] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px 10px;
    min-width: 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--gf-grey-900);
}

.pub-state-badge[b-hjzkpqjk0g] {
    font-size: 10.5px;
    font-weight: 800;
    color: var(--gf-primary-accent);
    background: var(--gf-primary-soft);
    border-radius: 6px;
    padding: 3px 8px;
}

.pub-state-sub[b-hjzkpqjk0g] {
    margin: 4px 0 0;
    font-size: 13px;
    color: var(--gf-grey-700);
}

/* Estado de revisión. Los colores son los del prototipo para ese momento del flujo (#fdf3dd sobre
   #b8860b): ámbar, ni el azul de "en progreso" ni el verde de aprobado — todavía no está aprobado. */
.pub-state.is-review .pub-state-icon[b-hjzkpqjk0g] {
    background: #fdf3dd;
    color: #b8860b;
}

.pub-state.is-review .pub-state-badge[b-hjzkpqjk0g] {
    background: #fdf3dd;
    color: #b8860b;
}

/* Sin ::deep no aplica —RadzenButton es un componente— y el botón hereda el flex-start del
   contenedor. No se encoge: su rótulo dice qué falta, y truncarlo mata el aviso. */
.pub-state[b-hjzkpqjk0g]  .pub-confirm {
    flex-shrink: 0;
    align-self: center;
}

/* ===== GRILLA DE DOCUMENTOS ===== */

.pub-grid[b-hjzkpqjk0g] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.pub-loading[b-hjzkpqjk0g] {
    padding-top: 4px;
}

/* Una sola columna en pantalla angosta, y el botón pasa a ocupar el ancho: el proveedor puede estar
   entrando desde el teléfono. */
@media (max-width: 820px) {
    .pub-grid[b-hjzkpqjk0g] {
        grid-template-columns: minmax(0, 1fr);
    }

    .pub-state[b-hjzkpqjk0g] {
        flex-wrap: wrap;
    }

    .pub-state[b-hjzkpqjk0g]  .pub-confirm {
        width: 100%;
    }
}

@media (max-width: 600px) {
    .pub-hero[b-hjzkpqjk0g] {
        padding: 18px;
    }

    .pub-hero-title[b-hjzkpqjk0g] {
        font-size: 18px;
    }
}
/* /Features/Report/Pages/Index.razor.rz.scp.css */
/* Report page. Radzen handles the actions bar (RadzenStack), table (RadzenDataGrid), the
   result/SII/AML pills (RadzenBadge), the error (RadzenAlert) and the pending panel (RadzenCard).
   Only the pieces with no Radzen equivalent are styled here: the accent-bordered stat tiles, the
   semaforo dot in the Score cell, and the loading/empty blocks. */

/* Stat tiles — colored left-border accent (no Radzen equivalent) */
.rep-stats-grid[b-tly0pwwjqw] { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; }
.rep-stat-tile[b-tly0pwwjqw] { background: var(--gf-light); border: 1px solid var(--gf-grey-200); border-radius: 10px; padding: 10px 14px; }
.rep-stat-value[b-tly0pwwjqw] { margin: 0; font-size: 22px; font-weight: 700; }
.rep-stat-label[b-tly0pwwjqw] { font-size: 11px; color: var(--gf-grey-500); }
.rep-stat-total[b-tly0pwwjqw] { border-left: 4px solid var(--gf-grey-500); }
.rep-stat-evaluados[b-tly0pwwjqw] { border-left: 4px solid #3b82f6; }
.rep-stat-aprobados[b-tly0pwwjqw] { border-left: 4px solid #10b981; }
.rep-stat-revisar[b-tly0pwwjqw] { border-left: 4px solid #f59e0b; }
.rep-stat-rechazados[b-tly0pwwjqw] { border-left: 4px solid #ef4444; }

/* Semaforo dot in the Score column */
.rep-semaforo-dot[b-tly0pwwjqw] { display: inline-block; width: 8px; height: 8px; border-radius: 9999px; margin-right: 4px; }
.rep-dot-verde[b-tly0pwwjqw] { background: #10b981; }
.rep-dot-amarillo[b-tly0pwwjqw] { background: #f59e0b; }
.rep-dot-rojo[b-tly0pwwjqw] { background: #ef4444; }
.rep-dot-gris[b-tly0pwwjqw] { background: #9ca3af; }

/* Small icon inside the Resultado RadzenBadge */
.rep-badge-icon[b-tly0pwwjqw] { font-size: 14px; vertical-align: middle; margin-right: 2px; }

/* Data-grid cell text */
.report-company[b-tly0pwwjqw] { font-weight: 600; color: var(--gf-grey-900); }
.report-detail[b-tly0pwwjqw] { font-size: 12px; color: var(--gf-grey-500); font-family: monospace; }

/* Pending pills row */
.report-pending[b-tly0pwwjqw] { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.5rem; }

/* Loading / empty */
.rep-loading[b-tly0pwwjqw], .rep-empty[b-tly0pwwjqw] { text-align: center; padding: 40px 0; color: var(--gf-grey-500); }
.rep-empty-icon[b-tly0pwwjqw] { font-size: 36px; display: block; margin-bottom: 6px; color: var(--gf-grey-300); }
.rep-empty p[b-tly0pwwjqw] { margin: 0 0 10px; }
/* /Features/Rule/Components/MatrixHelpTip.razor.rz.scp.css */
.matrix-tip[b-bqxyly9vj3] { position: relative; display: inline-flex; }

.matrix-tip-button[b-bqxyly9vj3] {
    width: 18px;
    height: 18px;
    padding: 0;
    border-radius: 9999px;
    border: 1.5px solid #6b7280;
    background: transparent;
    color: #6b7280;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
    cursor: help;
}

.matrix-tip-button:hover[b-bqxyly9vj3],
.matrix-tip-button:focus-visible[b-bqxyly9vj3] {
    border-color: #4338ca;
    color: #4338ca;
    outline: none;
}

.matrix-tip-body[b-bqxyly9vj3] {
    display: none;
    position: absolute;
    top: calc(100% + 8px);
    left: 50%;
    transform: translateX(-30%);
    z-index: 20;
    width: min(380px, 84vw);
    padding: 10px 12px;
    border-radius: 6px;
    border: 1px solid var(--gf-grey-300);
    background: var(--gf-light);
    color: var(--gf-grey-900);
    font-size: 13px;
    font-weight: 400;
    line-height: 1.5;
    box-shadow: 0 6px 20px rgba(16, 24, 40, .12);
}

.matrix-tip:hover .matrix-tip-body[b-bqxyly9vj3],
.matrix-tip:focus-within .matrix-tip-body[b-bqxyly9vj3] {
    display: block;
}

.matrix-tip-scale[b-bqxyly9vj3] { display: grid; gap: 4px; margin-top: 10px; }
.matrix-tip-axis[b-bqxyly9vj3] { font-size: 11px; color: var(--gf-grey-700); }
.matrix-tip-labels[b-bqxyly9vj3] { display: flex; justify-content: space-between; }
.matrix-tip-bar[b-bqxyly9vj3] { display: grid; grid-template-columns: repeat(13, 1fr); gap: 1px; }

.matrix-tip-seg[b-bqxyly9vj3] {
    height: 18px;
    border-radius: 3px;
    display: grid;
    place-items: center;
    font: 500 10px monospace;
    color: var(--gf-light);
}

.seg-ok[b-bqxyly9vj3] { background: #1f9d55; }
.seg-warn[b-bqxyly9vj3] { background: #c99a06; }
.seg-bad[b-bqxyly9vj3] { background: #d64545; }
/* /Features/Rule/Pages/Index.razor.rz.scp.css */
.rule-stats[b-w7lqbbqz55] { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.75rem; }
.rule-stat-value[b-w7lqbbqz55] { font-size: 26px; font-weight: 700; color: #111827; }
.rule-stat-label[b-w7lqbbqz55] { font-size: 12px; color: #6b7280; }
.rule-stat-p-badge[b-w7lqbbqz55] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 9999px;
    background: var(--gf-primary);
    color: var(--gf-light);
    font-weight: 700;
    font-size: 12px;
}


.rule-source-header[b-w7lqbbqz55] { display: flex; align-items: center; gap: 0.5rem; cursor: pointer; }
.rule-spacer[b-w7lqbbqz55] { flex: 1; }
.rule-muted[b-w7lqbbqz55] { color: #6b7280; font-size: 13px; }
.rule-dot[b-w7lqbbqz55] { width: 10px; height: 10px; border-radius: 9999px; display: inline-block; }

.rule-source-body[b-w7lqbbqz55] { margin-top: 0.75rem; display: flex; flex-direction: column; gap: 0.5rem; }
.rule-catalog-row[b-w7lqbbqz55], .rule-config-row[b-w7lqbbqz55] {
    display: flex; align-items: center; gap: 0.75rem;
    padding: 0.5rem; border-radius: 6px; background: #f9fafb;
}
.rule-config-main[b-w7lqbbqz55] { display: flex; flex-direction: column; gap: 0.15rem; flex: 1; }
.rule-row-head[b-w7lqbbqz55] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 2px;
}
.rule-mono[b-w7lqbbqz55] { font-family: monospace; font-size: 12px; background: #eef2ff; color: #4338ca; padding: 1px 6px; border-radius: 4px; }
.rule-type-pill[b-w7lqbbqz55] {
    font-size: 10px;
    background: var(--gf-grey-100);
    color: var(--gf-grey-500);
    padding: 1px 6px;
    border-radius: 9999px;
}
.rule-desc[b-w7lqbbqz55] { font-size: 13px; color: #374151; }

.rule-edit[b-w7lqbbqz55] { display: flex; align-items: center; gap: 0.4rem; flex: 1; }
.rule-textarea[b-w7lqbbqz55] { flex: 1; font-family: monospace; font-size: 12px; padding: 0.4rem; border: 1px solid #d1d5db; border-radius: 6px; }
.rule-view[b-w7lqbbqz55] { display: flex; align-items: center; gap: 0.4rem; }
.rule-value[b-w7lqbbqz55] { font-family: monospace; font-size: 12px; max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rule-weight-bar[b-w7lqbbqz55] {
    display: flex;
    height: 16px;
    border-radius: 9999px;
    overflow: hidden;
}

.rule-weight-segment[b-w7lqbbqz55] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rule-weight-segment-label[b-w7lqbbqz55] {
    font-size: 9px;
    font-weight: 700;
    color: var(--gf-light);
    opacity: 0;
    transition: opacity .15s;
}

.rule-weight-segment:hover .rule-weight-segment-label[b-w7lqbbqz55] {
    opacity: 1;
}

.rule-legend[b-w7lqbbqz55] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    font-size: 12px;
    color: var(--gf-grey-700);
}

.rule-legend-item[b-w7lqbbqz55] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.rule-legend-dot[b-w7lqbbqz55] {
    width: 8px;
    height: 8px;
    border-radius: 9999px;
    display: inline-block;
}
/* /Layout/MainLayout.razor.rz.scp.css */
/* App-shell styles, ported from the original Debida Diligencia MainLayout.razor.css. Consumes the
   global --gf-* tokens (defined in wwwroot/css/app.css). NavLink renders its own <a>, so the menu
   selectors need ::deep. */

.gf-layout-container[b-kr68g4lszq] {
    display: flex;
    width: 100%;
    min-height: 100vh;
    background-color: var(--gf-light);
    font-family: var(--gf-font-body);
    overflow-x: hidden;
}

/* ===== SIDEBAR ===== */
.gf-sidebar[b-kr68g4lszq] {
    width: 140px;
    min-width: 140px;
    background-color: var(--gf-light);
    display: flex;
    flex-direction: column;
    gap: 20px;
    padding: 0 16px;
    position: sticky;
    top: 0;
    height: 100vh;
    z-index: 100;
    transition: width 0.3s ease;
}

.gf-sidebar.collapsed[b-kr68g4lszq] { width: 44px; min-width: 44px; }
.gf-sidebar.collapsed .gf-menu-item-content[b-kr68g4lszq] { justify-content: center; }
.gf-sidebar.collapsed .gf-menu-item-text[b-kr68g4lszq] { display: none; }

.gf-sidebar-header[b-kr68g4lszq] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 12px;
    min-height: 40px;
}

.gf-sidebar.collapsed .gf-sidebar-header[b-kr68g4lszq] { padding: 20px 0; }

.gf-sidebar-logo[b-kr68g4lszq] { display: flex; align-items: center; color: var(--gf-primary); }
.gf-sidebar-close-btn-mobile[b-kr68g4lszq] { display: none; cursor: pointer; color: var(--gf-grey-500); }

.gf-sidebar-toggle[b-kr68g4lszq] {
    position: absolute;
    right: 16px;
    top: 26px;
    border-radius: 8px;
    border: 1px solid #E6E8F0;
    background: var(--gf-light);
    padding: 3px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
    color: var(--gf-grey-500);
    z-index: 10;
}

.gf-sidebar-toggle:hover[b-kr68g4lszq] { background: var(--gf-grey-50); border-color: var(--gf-grey-300); }
.gf-sidebar.collapsed .gf-sidebar-toggle[b-kr68g4lszq] { top: 19px; left: calc(100% - 10px); right: auto; }

.gf-menu-container[b-kr68g4lszq] {
    display: flex;
    flex-direction: column;
    width: 100%;
    overflow-y: auto;
    flex: 1;
}

[b-kr68g4lszq] .gf-menu-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px;
    cursor: pointer;
    border-radius: 8px;
    text-decoration: none;
    transition: background-color 0.2s ease;
}

.gf-sidebar:not(.collapsed)[b-kr68g4lszq]  .gf-menu-item { padding-right: 4px; }

[b-kr68g4lszq] .gf-menu-item:hover { background-color: var(--gf-grey-50); }
[b-kr68g4lszq] .gf-menu-item.active { background-color: var(--gf-grey-50); }

/* Aviso al pie del menu: "sin paginas asignadas" (informativo) o "menu de respaldo" (degradado).
   Discreto a proposito — informa sin competir con las opciones reales. */
.gf-menu-note[b-kr68g4lszq] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px;
    color: var(--gf-grey-500);
    font-size: 12px;
    line-height: 16px;
}

.gf-menu-note-icon[b-kr68g4lszq] { font-size: 18px; line-height: 18px; }
.gf-menu-note-warning[b-kr68g4lszq] { color: #b45309; }

/* Con el sidebar contraido solo queda el icono, igual que las opciones del menu. */
.gf-sidebar.collapsed .gf-menu-note[b-kr68g4lszq] { justify-content: center; }
.gf-sidebar.collapsed .gf-menu-note-text[b-kr68g4lszq] { display: none; }

/* Fila de menu en carga: misma caja que una opcion real para que el alto del menu no salte cuando
   llegan las paginas, pero sin hover ni cursor de enlace — no es clickeable. */
[b-kr68g4lszq] .gf-menu-item-skeleton {
    cursor: default;
    pointer-events: none;
}

[b-kr68g4lszq] .gf-menu-item-skeleton:hover { background-color: transparent; }

.gf-menu-item-content[b-kr68g4lszq] { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; }

.gf-menu-item-icon[b-kr68g4lszq] {
    width: 20px;
    height: 20px;
    color: var(--gf-grey-500);
    font-size: 20px;
    line-height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

[b-kr68g4lszq] .gf-menu-item.active .gf-menu-item-icon { color: var(--gf-primary); }

.gf-menu-item-text[b-kr68g4lszq] {
    font-size: 14px;
    font-weight: 500;
    line-height: 20px;
    color: var(--gf-grey-800);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}

[b-kr68g4lszq] .gf-menu-item.active .gf-menu-item-text { color: var(--gf-primary); }

/* ===== MAIN CONTAINER ===== */
.gf-main-container[b-kr68g4lszq] { flex: 1; display: flex; flex-direction: column; min-width: 0; }

/* ===== NAVBAR ===== */
.gf-navbar[b-kr68g4lszq] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 20px 32px;
    background-color: var(--gf-light);
}

.gf-navbar-content[b-kr68g4lszq] { display: flex; align-items: center; gap: 16px; }
.gf-navbar-divider[b-kr68g4lszq] { width: 1px; height: 40px; background-color: var(--gf-grey-300); }
.gf-profile-section[b-kr68g4lszq] { display: flex; align-items: center; gap: 8px; }

/* Ponderación weight bar (segmented — no Radzen equivalent). Hidden under 1024px (see media query). */
.gf-ponderacion[b-kr68g4lszq] { display: flex; flex-direction: column; gap: 4px; min-width: 350px; }
.gf-ponderacion-label[b-kr68g4lszq] { font-size: 10px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--gf-grey-500); }
.gf-ponderacion-bar[b-kr68g4lszq] { display: flex; height: 18px; border-radius: 9999px; overflow: hidden; }
.gf-pond-seg[b-kr68g4lszq] { display: flex; align-items: center; justify-content: center; font-size: 8px; font-weight: 700; color: var(--gf-light); white-space: nowrap; overflow: hidden; }
.gf-pond-1[b-kr68g4lszq] { background: #00521f; }
.gf-pond-2[b-kr68g4lszq] { background: #00722c; }
.gf-pond-3[b-kr68g4lszq] { background: var(--gf-primary); }
.gf-pond-4[b-kr68g4lszq] { background: #34a35f; }
.gf-pond-5[b-kr68g4lszq] { background: #6dc28e; }

.gf-profile-badge-text[b-kr68g4lszq] {
    font-size: 11px;
    font-weight: 500;
    line-height: 12px;
    color: var(--gf-primary-accent);
    background-color: var(--gf-primary-soft);
    padding: 4px 8px;
    border-radius: 4px;
}

.gf-profile-avatar[b-kr68g4lszq] {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--gf-grey-200);
    color: var(--gf-grey-700);
    font-size: 24px;
}

.gf-profile-avatar-initial[b-kr68g4lszq] {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--gf-primary);
    color: var(--gf-light);
    font-size: 14px;
    font-weight: 700;
    flex-shrink: 0;
}
.gf-profile-text[b-kr68g4lszq] {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
    min-width: 0;
}

.gf-profile-name[b-kr68g4lszq] {
    font-size: 14px;
    font-weight: 600;
    color: var(--gf-grey-900);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 160px;
}

.gf-profile-role[b-kr68g4lszq] {
    font-size: 11px;
    color: var(--gf-grey-500);
    white-space: nowrap;
    text-transform: capitalize;
}

.gf-logout-btn[b-kr68g4lszq] {
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--gf-grey-500);
    padding: 8px;
    border-radius: 50%;
}

.gf-logout-btn:hover[b-kr68g4lszq] { background-color: var(--gf-grey-200); color: var(--gf-grey-800); }

.gf-logo-menu-mobile-container[b-kr68g4lszq] { display: none; align-items: center; gap: 16px; }

.gf-mobile-toggle[b-kr68g4lszq] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    background: var(--gf-light);
    border: 1px solid var(--gf-grey-300);
    border-radius: 8px;
    cursor: pointer;
    color: var(--gf-grey-700);
}

/* ===== BODY ===== */
.gf-body[b-kr68g4lszq] {
    flex: 1;
    background-color: var(--gf-grey-50);
    border-top-left-radius: 16px;
    border-top: 1px solid var(--gf-grey-200);
    border-left: 1px solid var(--gf-grey-200);
    padding: 24px 32px 40px 32px;
    min-height: calc(100vh - 80px);
    overflow-x: hidden;
    overflow-y: auto;
}

.gf-sidebar-overlay[b-kr68g4lszq] {
    display: none;
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 999;
}

.gf-sidebar-overlay.active[b-kr68g4lszq] { display: block; }

/* ===== RESPONSIVE (off-canvas under 1024px) ===== */
@media (max-width: 1024px) {
    .gf-sidebar[b-kr68g4lszq] {
        position: fixed;
        left: 0;
        top: 0;
        width: 280px;
        min-width: 280px;
        height: 100vh;
        z-index: 1000;
        transform: translateX(-100%);
        transition: transform 0.3s ease;
    }

    .gf-sidebar.collapsed[b-kr68g4lszq] { width: 280px; min-width: 280px; }
    .gf-sidebar.collapsed .gf-menu-item-text[b-kr68g4lszq] { display: initial; }
    .gf-sidebar.collapsed .gf-menu-item-content[b-kr68g4lszq] { justify-content: flex-start; }
    .gf-sidebar.collapsed .gf-sidebar-header[b-kr68g4lszq] { padding: 20px 12px; }
    .gf-sidebar-toggle[b-kr68g4lszq] { display: none; }
    .gf-sidebar-close-btn-mobile[b-kr68g4lszq] { display: flex; }
    .gf-sidebar.mobile-open[b-kr68g4lszq] { transform: translateX(0); box-shadow: 2px 0 10px rgba(0, 0, 0, 0.1); }
    .gf-navbar[b-kr68g4lszq] { justify-content: space-between; padding: 16px 20px; }
    .gf-body[b-kr68g4lszq] { padding: 16px 20px; border-top-left-radius: 0; }
    .gf-logo-menu-mobile-container[b-kr68g4lszq] { display: flex; }
    .gf-ponderacion[b-kr68g4lszq], .gf-navbar-divider[b-kr68g4lszq] { display: none; }
}

@media (max-width: 576px) {
    .gf-logo-mobile[b-kr68g4lszq] { display: none; }
}
/* /Layout/PublicLayout.razor.rz.scp.css */
/* Marco del portal público. Consume los tokens --gf-* globales (wwwroot/css/app.css), igual que
   MainLayout.razor.css, para que la marca sea la misma aunque el marco no lo sea. */

.gf-public-shell[b-hkkiaxc6z5] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background: #f4f5f7;
    font-family: var(--gf-font-body);
}

.gf-public-header[b-hkkiaxc6z5] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 24px;
    background-color: var(--gf-light);
    border-bottom: 1px solid var(--gf-grey-300);
    position: sticky;
    top: 0;
    z-index: 10;
}

.gf-public-logo[b-hkkiaxc6z5] {
    flex-shrink: 0;
    display: block;
}

.gf-public-title[b-hkkiaxc6z5] {
    font-size: 15px;
    font-weight: 700;
    color: var(--gf-grey-900);
}

.gf-public-body[b-hkkiaxc6z5] {
    flex: 1;
    width: 100%;
    max-width: 1040px;
    margin: 0 auto;
    padding: 24px 16px 48px;
}

/* El proveedor puede entrar desde el teléfono: el encabezado no debe empujar la página a lo ancho. */
@media (max-width: 600px) {
    .gf-public-header[b-hkkiaxc6z5] {
        padding: 12px 16px;
        gap: 10px;
    }

    .gf-public-title[b-hkkiaxc6z5] {
        font-size: 13px;
    }

    .gf-public-body[b-hkkiaxc6z5] {
        padding: 16px 12px 32px;
    }
}
/* /Shared/Component/BrandLoader.razor.rz.scp.css */
.brand-loader[b-4q5zgv6kun] {
    min-height: 360px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    animation: brand-loader-appear-b-4q5zgv6kun 0.2s ease-out 150ms both;
}

/* Alto fijo: el rebote ocurre dentro de la caja y no empuja el texto de abajo. */
.brand-loader-fruits[b-4q5zgv6kun] {
    display: flex;
    align-items: flex-end;
    gap: 10px;
    height: 40px;
}

.brand-loader-fruits span[b-4q5zgv6kun] {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    animation: brand-loader-hop-b-4q5zgv6kun 1.2s ease-in-out infinite;
}

.brand-loader-fruits span:nth-child(1)[b-4q5zgv6kun] {
    background-color: #EF4135; /* Pantone 032 C */
}

.brand-loader-fruits span:nth-child(2)[b-4q5zgv6kun] {
    background-color: #80BA27; /* Pantone 368 C */
    animation-delay: 0.15s;
}

.brand-loader-fruits span:nth-child(3)[b-4q5zgv6kun] {
    background-color: #007D32; /* Pantone 356 C */
    animation-delay: 0.3s;
}

.brand-loader-message[b-4q5zgv6kun] {
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--gf-grey-700);
}

@keyframes brand-loader-appear-b-4q5zgv6kun {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes brand-loader-hop-b-4q5zgv6kun {
    0%, 60%, 100% { transform: translateY(0); }
    30% { transform: translateY(-16px); }
}

/* Sin movimiento: los tres frutos quietos. */
@media (prefers-reduced-motion: reduce) {
    .brand-loader-fruits span[b-4q5zgv6kun] {
        animation: none;
    }
}
/* /Shared/Component/RiskBadge.razor.rz.scp.css */
.risk-badge[b-oh4jtv8iwh] {
    display: inline-flex;
    align-items: center;
    border-radius: 9999px;
    font-weight: 600;
    white-space: nowrap;
}

.risk-sm[b-oh4jtv8iwh] { padding: 1px 8px; font-size: 10px; }
.risk-md[b-oh4jtv8iwh] { padding: 3px 10px; font-size: 12px; }

.risk-emerald[b-oh4jtv8iwh] { background: #d1fae5; color: #047857; }
.risk-blue[b-oh4jtv8iwh] { background: #dbeafe; color: #1d4ed8; }
.risk-amber[b-oh4jtv8iwh] { background: #fef3c7; color: #b45309; }
.risk-orange[b-oh4jtv8iwh] { background: #ffedd5; color: #c2410c; }
.risk-red[b-oh4jtv8iwh] { background: #fee2e2; color: #b91c1c; }
.risk-gray[b-oh4jtv8iwh] { background: var(--gf-grey-100); color: #6b7280; }
/* /Shared/Component/ScoreRing.razor.rz.scp.css */
.score-ring[b-jiposdyvwj] {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.score-ring svg[b-jiposdyvwj] {
    position: absolute;
    top: 0;
    left: 0;
}

.score-ring-center[b-jiposdyvwj] {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    color: #1f2937;
    line-height: 1;
}

.score-ring-sub[b-jiposdyvwj] {
    font-size: 9px;
    font-weight: 500;
    color: #6b7280;
}
