/* /Components/Accidents/AccidentBaseForm.razor.rz.scp.css */
/* /Components/Accidents/AccidentDataGrid.razor.rz.scp.css */
/* /Components/Accidents/AccidentGroupedDataGrid.razor.rz.scp.css */
/* Scoped to this grid on purpose: none of these rules is a new design primitive,
   they are this component's use of primitives that already exist in app.css
   (`.status-badge`, the `--status-*` plates, the MudBlazor palette). Putting them
   here keeps app.css from growing a Siniestros-only section. */

/* ORIGEN — the chip itself is MudBlazor's (`Variant.Text` / `Color.Info`), exactly
   as the Pólizas grid renders it. The only thing supplied here is the DARK-mode
   hue swap for the internal state, which the reference also has.

   Pólizas does that swap in C# (`isDark ? Color.Success : Color.Info`) off a bool
   read once from local storage in `OnInitializedAsync`. That flag never updates
   when the user hits the theme toggle, so the chip keeps the light hue until a
   reload. Same visual result is achieved here off `.app-dark` — the class
   MainLayout already puts on the shell — which follows the toggle for free.

   `::deep` is load-bearing: `MudChip` is a COMPONENT, and Blazor's CSS isolation
   only stamps the scope attribute on elements authored in this file, never on the
   markup a child component renders. Without `::deep` (and without the `.origin-cell`
   wrapper to hang it off) this selector would compile to
   `.origin-chip--internal[b-xxx]` and match nothing.

   12% over transparent matches the weight MudBlazor's own text-variant chip uses
   for its plate, so only the hue changes and the chip keeps its shape. */
.app-dark .origin-cell[b-2ov4y3w3fg]  .origin-chip--internal {
    background-color: color-mix(in srgb, var(--mud-palette-success) 12%, transparent);
    color: var(--mud-palette-success);
}

/* PÓLIZAS SINIESTRADAS — number plus an optional "unresolved" marker. `inline-flex`
   with a gap rather than a positioned dot: the cell has no fixed width and an
   absolutely-positioned marker would collide with the column's own alignment. */
.siniestred-count[b-2ov4y3w3fg] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

/* "N sin resolver" — the labelled replacement for the old bare amber dot, which
   review found unreadable (a 7px dot is a legend the operator does not have).
   Shape comes from app.css `.status-badge`; only the plate is supplied here.

   Amber, from the warn triple the status badges already use — the same colour the
   app spends on "re-abierto", which is the state this badge most often reflects, so
   the two reinforce each other instead of introducing a fourth signal colour. */
.unresolved-badge[b-2ov4y3w3fg] {
    background: var(--status-warn-bg);
    color: var(--status-warn-fg);
    flex-shrink: 0;
}

/* The dot span is authored in this component, so it carries the scope attribute. */
.unresolved-badge .status-badge__dot[b-2ov4y3w3fg] {
    background: var(--status-warn-dot);
}

/* El pager del L3 se lee como subordinado del de arriba, no como su igual. */
.l3-pager[b-2ov4y3w3fg]  .mud-table-pagination {
    min-height: 36px;
    font-size: 12px;
}

.l3-pager[b-2ov4y3w3fg]  .mud-table-pagination-caption,
.l3-pager[b-2ov4y3w3fg]  .mud-table-pagination-select .mud-input-slot {
    font-size: 12px;
}

.l3-pager[b-2ov4y3w3fg]  .mud-table-pagination-actions .mud-icon-button {
    padding: 4px;
}

.l3-pager[b-2ov4y3w3fg]  .mud-table-pagination-actions .mud-icon-root {
    font-size: 1.05rem;
}
/* /Components/Accidents/AccidentInsuredLocations.razor.rz.scp.css */
.loc[b-3pixzawd8j] {
    margin-top: 8px;
    padding: 14px;
    border: 1px solid var(--gh-line-card);
    border-radius: var(--gh-r-card);
    background: var(--mud-palette-surface);
}

.loc__head[b-3pixzawd8j],
.loc__row[b-3pixzawd8j],
.loc__foot[b-3pixzawd8j] {
    display: grid;
    grid-template-columns: 20px minmax(0, 1.5fr) minmax(0, 1fr) minmax(150px, 0.9fr);
    align-items: center;
    column-gap: 16px;
}

.loc__head[b-3pixzawd8j] {
    padding: 0 14px 10px;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .11em;
    text-transform: uppercase;
    color: var(--gh-label-2);
}

.loc__row[b-3pixzawd8j] {
    padding: 10px 14px;
    margin-bottom: 8px;
    border: 1px solid var(--gh-line-card);
    border-radius: var(--gh-r-tray-1);
    cursor: pointer;
}

.loc__row:last-of-type[b-3pixzawd8j] {
    margin-bottom: 0;
}

.loc__row:hover[b-3pixzawd8j] {
    border-color: var(--gh-line-row-1-hover);
}

.loc__row--on[b-3pixzawd8j] {
    border-color: var(--mud-palette-primary);
    background: var(--gh-tray-1);
}

.loc__box[b-3pixzawd8j] {
    appearance: none;
    -webkit-appearance: none;
    width: 18px;
    height: 18px;
    margin: 0;
    border: 1.5px solid var(--gh-line-row-1);
    border-radius: 5px;
    background: var(--mud-palette-surface);
    display: grid;
    place-content: center;
    cursor: pointer;
}

.loc__box:checked[b-3pixzawd8j] {
    border-color: var(--mud-palette-primary);
    background: var(--mud-palette-primary);
}

.loc__box:checked[b-3pixzawd8j]::after {
    content: "";
    width: 9px;
    height: 5px;
    margin-top: -2px;
    border-left: 2px solid var(--mud-palette-primary-text);
    border-bottom: 2px solid var(--mud-palette-primary-text);
    transform: rotate(-45deg);
}

.loc__box:disabled[b-3pixzawd8j] {
    cursor: default;
    opacity: .6;
}

.loc__place[b-3pixzawd8j] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.loc__title[b-3pixzawd8j] {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.loc__name[b-3pixzawd8j] {
    font-size: 14px;
    font-weight: 600;
    color: var(--gh-title);
}

.loc__badge[b-3pixzawd8j] {
    padding: 1px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
    color: var(--gh-title);
    background: var(--gh-tray-2);
}

.loc__claimed[b-3pixzawd8j] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    font-size: 12px;
}

.loc__claimed-k[b-3pixzawd8j] {
    color: var(--gh-label-1);
}

.loc__claimed-v[b-3pixzawd8j] {
    font-weight: 600;
    color: var(--gh-body);
    font-variant-numeric: tabular-nums;
}

.loc__detail[b-3pixzawd8j] {
    font-size: 12px;
    color: var(--gh-label-1);
}

.loc__muni[b-3pixzawd8j] {
    font-size: 14px;
    color: var(--gh-body);
}

.loc__right[b-3pixzawd8j] {
    justify-self: end;
    text-align: right;
}

.loc__amount[b-3pixzawd8j] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    white-space: nowrap;
}

.loc__sym[b-3pixzawd8j] {
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .04em;
    color: var(--gh-label-1);
}

.loc__figure[b-3pixzawd8j] {
    font-size: 15px;
    font-weight: 600;
    color: var(--gh-title);
    font-variant-numeric: tabular-nums;
}

.loc__foot[b-3pixzawd8j] {
    margin-top: 12px;
    padding: 12px 14px 2px;
    border-top: 1px solid var(--gh-line-divider);
}

.loc__count[b-3pixzawd8j] {
    font-size: 13px;
    font-weight: 600;
    color: var(--gh-body);
}

.loc__amount--total .loc__figure[b-3pixzawd8j] {
    font-size: 17px;
    font-weight: 700;
}
/* /Components/Accidents/AccidentManagement.razor.rz.scp.css */
/* /Components/Accidents/AccidentObservations.razor.rz.scp.css */
/* /Components/Auth/Credentials/EmailConfirmationDialog.razor.rz.scp.css */
/* /Components/Common/AppConfirmationDialog.razor.rz.scp.css */
/* /Components/CompanySetup/CompanyRegistrationForm.razor.rz.scp.css */
.form-container_custom[b-vjbsxi1k2n] {
    width: 100%;
    margin: auto;
    background: #0a53be;
    padding: 50px;
    height: 500px;
}
/* /Components/Dialogs/Accidents/AccidentManagementDialogForm.razor.rz.scp.css */
/* /Components/Dialogs/Client/ClientDialog.razor.rz.scp.css */
.dialogHeader[b-qbeokvtpef] {
    align-items: center;
    display: flex;
}

.client-dialog-content[b-qbeokvtpef] {
    overflow-y: auto;
}
/* /Components/Dialogs/DueDiligence/DueDiligenceDetailDialog.razor.rz.scp.css */
.dialogHeader[b-7qckpqapdr] {
    display: flex;
    align-items: center;
}

.dialog-title-strong[b-7qckpqapdr] {
    font-weight: 700;
    letter-spacing: 0;
}

.dialog-scroll[b-7qckpqapdr] {
    overflow: auto;
}
/* /Components/Dialogs/DueDiligence/DueDiligenceDialog.razor.rz.scp.css */
article[b-eg1ep6e3e5] {
    padding: .5rem 0;
}

.dialogHeader[b-eg1ep6e3e5] {
    display: flex;
    align-items: center;
}

.dialog-scroll[b-eg1ep6e3e5] {
    overflow: auto;
}

.prospect-partner-paper[b-eg1ep6e3e5] {
    background: var(--mud-palette-tertiary);
}

.prospect-empty-partners[b-eg1ep6e3e5] {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
}
/* /Components/Dialogs/DueDiligence/PartnerDialog.razor.rz.scp.css */
.dialog-scroll[b-5quyd7ibki] {
    overflow: auto;
}
/* /Components/Dialogs/DueDiligence/ScreeningResultDialog.razor.rz.scp.css */
.dialogHeader[b-awho7h1obk] {
    display: flex;
    align-items: center;
}

.dialog-title-strong[b-awho7h1obk] {
    font-weight: 700;
    letter-spacing: 0;
}

.dialog-scroll[b-awho7h1obk] {
    overflow: auto;
}
/* /Components/Dialogs/DueDiligence/SendToInsurerDialog.razor.rz.scp.css */
article[b-g094x5hoxh] {
    padding: .5rem 0;
}

.dialogHeader[b-g094x5hoxh] {
    display: flex;
    align-items: center;
}

.dialog-scroll[b-g094x5hoxh] {
    overflow: auto;
}
/* /Components/Dialogs/Policy/PolicyInsuredItemsDialog.razor.rz.scp.css */
.policy-insured-items-dialog__header[b-s5k31fcvon] {
    display: flex;
    align-items: center;
}

.policy-insured-items-dialog__title[b-s5k31fcvon],
.policy-insured-items-dialog__strong[b-s5k31fcvon] {
    font-weight: 700;
    letter-spacing: 0;
}

.policy-insured-items-dialog__scroll[b-s5k31fcvon] {
    max-height: 72vh;
    overflow: auto;
    padding-right: 4px;
}

.policy-insured-items-dialog__summary[b-s5k31fcvon] {
    background: var(--mud-palette-tertiary);
}

.policy-insured-items-dialog__summary-row[b-s5k31fcvon] {
    flex-wrap: wrap;
    gap: 12px;
}

.policy-insured-items-dialog__label[b-s5k31fcvon] {
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: 0;
}
/* /Components/Dialogs/Reports/ReportFilterDialog.razor.rz.scp.css */
/* /Components/DueDiligence/DueDiligenceDataGrid.razor.rz.scp.css */
.prospect-toolbar-button[b-a6xx31yvsl] {
    width: 200px;
    white-space: nowrap;
    display: flex;
    align-items: center;
}
/* /Components/DueDiligence/DueDiligencesDataGrid.razor.rz.scp.css */
.prospect-toolbar-button[b-o4bvff6y8l] {
    width: 200px;
    white-space: nowrap;
    display: flex;
    align-items: center;
}
/* /Components/DueDiligence/ProspectMatchCard.razor.rz.scp.css */
.prospect-match-card[b-861czv1eeb] {
    background: var(--mud-palette-surface);
}

.prospect-match-card__label[b-861czv1eeb] {
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: 0;
}

.prospect-match-card__title[b-861czv1eeb] {
    font-weight: 700;
    overflow-wrap: anywhere;
}

.prospect-match-card__header[b-861czv1eeb],
.prospect-match-card__chips[b-861czv1eeb] {
    flex-wrap: wrap;
}
/* /Components/DueDiligence/ProspectResultSummary.razor.rz.scp.css */
.prospect-summary[b-gnfiqdx8y8] {
    background: var(--mud-palette-tertiary);
}

.prospect-summary__title[b-gnfiqdx8y8] {
    font-weight: 700;
    overflow-wrap: anywhere;
}

.prospect-summary__label[b-gnfiqdx8y8] {
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: 0;
}

.prospect-summary__chips[b-gnfiqdx8y8] {
    flex-wrap: wrap;
}

@media (max-width: 959px) {
    .prospect-summary__chips[b-gnfiqdx8y8] {
        justify-content: flex-start;
    }
}
/* /Components/DueDiligence/ProspectScreeningList.razor.rz.scp.css */
[b-haue5uxm3j] .prospect-screening-list {
    background: var(--mud-palette-background-gray);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    padding: 1rem;
}

.prospect-screening-list__header[b-haue5uxm3j] {
    flex-wrap: wrap;
}

.prospect-screening-list__title[b-haue5uxm3j] {
    font-weight: 700;
    letter-spacing: 0;
}

.prospect-screening-list__empty[b-haue5uxm3j],
.prospect-screening-list__skeleton[b-haue5uxm3j] {
    background: var(--mud-palette-tertiary);
}
/* /Components/DueDiligence/ProspectScreeningPanel.razor.rz.scp.css */
[b-3ejjxsech3] .prospect-panel-header {
    background: var(--mud-palette-background-gray);
    border-bottom: 1px solid var(--mud-palette-lines-default);
    min-height: 68px;
}

.prospect-panel-header__content[b-3ejjxsech3],
.prospect-panel-header__identity[b-3ejjxsech3],
.prospect-panel-header__metrics[b-3ejjxsech3] {
    flex-wrap: wrap;
}

.prospect-panel-header__identity[b-3ejjxsech3] {
    min-width: 0;
}

.prospect-panel-header__name[b-3ejjxsech3],
.prospect-panel-body__title[b-3ejjxsech3] {
    font-weight: 700;
    letter-spacing: 0;
}

.prospect-panel-body[b-3ejjxsech3] {
    padding: .75rem 0;
}

.prospect-panel-body__list-label[b-3ejjxsech3] {
    font-weight: 700;
    letter-spacing: 0;
}

.prospect-panel-body__list-value[b-3ejjxsech3] {
    font-weight: 400;
}

.prospect-panel-body__section[b-3ejjxsech3] {
    background: var(--mud-palette-surface);
}
/* /Components/DueDiligence/ProspectTraceTimeline.razor.rz.scp.css */
.prospect-timeline[b-v366yh9cjc] {
    background: var(--mud-palette-tertiary);
}

.prospect-timeline__items[b-v366yh9cjc] {
    overflow-x: auto;
    overflow-y: hidden;
    padding-bottom: .25rem;
}

.prospect-timeline__title[b-v366yh9cjc],
.prospect-timeline__step-label[b-v366yh9cjc] {
    font-weight: 700;
    letter-spacing: 0;
}

.prospect-timeline__step-user[b-v366yh9cjc] {
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: 0;
}

[b-v366yh9cjc] .prospect-timeline__availability-alert {
    color: var(--mud-palette-primary-darken);
    border-color: rgba(var(--mud-palette-primary-rgb), var(--mud-palette-border-opacity));
    background: var(--mud-palette-primary-hover);
}

[b-v366yh9cjc] .prospect-timeline__availability-alert .mud-alert-icon {
    color: var(--mud-palette-primary);
}

.prospect-timeline__item[b-v366yh9cjc] {
    min-width: 11.5rem;
    transition: opacity var(--motion-base) var(--motion-ease), transform var(--motion-base) var(--motion-ease);
}

.prospect-timeline__item.is-active[b-v366yh9cjc] {
    opacity: 1;
}

.prospect-timeline__item.is-inactive[b-v366yh9cjc] {
    opacity: .48;
}
/* /Components/DueDiligence/SnapshotsDataGrid.razor.rz.scp.css */
.prospect-toolbar-button[b-18fl1xxjmb] {
    width: 200px;
    white-space: nowrap;
    display: flex;
    align-items: center;
}
/* /Components/GeneralComponent/FileUploadPanel.razor.rz.scp.css */
.file-upload-panel[b-khqu5izgal] {
    width: 100%;
}

.file-upload-panel__header[b-khqu5izgal],
.file-upload-panel__actions[b-khqu5izgal],
.file-upload-panel__file-row[b-khqu5izgal] {
    gap: 0.75rem;
}

.file-upload-panel__header[b-khqu5izgal],
.file-upload-panel__actions[b-khqu5izgal] {
    flex-wrap: wrap;
}

.file-upload-panel__actions[b-khqu5izgal] {
    align-items: flex-start;
}

.file-upload-panel__help-text[b-khqu5izgal] {
    flex: 1 1 18rem;
    min-width: min(100%, 18rem);
}

.file-upload-panel__alert[b-khqu5izgal] {
    overflow-wrap: anywhere;
}

.file-upload-panel__title[b-khqu5izgal] {
    font-weight: 700;
}

.file-upload-panel__chips[b-khqu5izgal] {
    justify-content: flex-end;
}

.file-upload-panel__list[b-khqu5izgal] {
    border-radius: 8px;
    min-width: 0;
    width: 100%;
}

.file-upload-panel__list.file-upload-panel__list--scroll[b-khqu5izgal] {
    max-height: 8rem;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding-right: 0.25rem;
}

.file-upload-panel__file-row[b-khqu5izgal] {
    align-items: center;
    display: flex;
    justify-content: space-between;
    min-width: 0;
    padding: 0.25rem 0;
    width: 100%;
}

.file-upload-panel__file-row--pending-delete[b-khqu5izgal] {
    background: rgba(255, 152, 0, 0.08);
    border-radius: 8px;
    padding-inline: 0.5rem;
}

.file-upload-panel__file-row--pending-delete .file-upload-panel__file-meta[b-khqu5izgal] {
    opacity: 0.55;
    pointer-events: none;
    user-select: none;
}

.file-upload-panel__file-row--pending-delete .file-upload-panel__file-name[b-khqu5izgal] {
    text-decoration: line-through;
}

.file-upload-panel__file-row--duplicate[b-khqu5izgal] {
    background: rgba(244, 67, 54, 0.08);
    border-left: 3px solid var(--mud-palette-error);
    border-radius: 8px;
    padding-left: 0.5rem;
    padding-right: 0.5rem;
}

.file-upload-panel__file-meta[b-khqu5izgal] {
    align-items: center;
    display: flex;
    gap: 0.75rem;
    min-width: 0;
}

.file-upload-panel__file-copy[b-khqu5izgal] {
    align-items: center;
    display: flex;
    gap: 0.5rem;
    min-width: 0;
}

.file-upload-panel__file-name[b-khqu5izgal] {
    display: inline-block;
    max-width: 420px;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: bottom;
    white-space: nowrap;
}
/* /Components/IssuanceOrder/OrderAttrChip.razor.rz.scp.css */
/* Reuses existing hairline/label tokens rather than the mock's literal hex
   (#D4DDEA border, #5B6E88 / #93A1B5 text) per design D1's rule against
   copying handoff numbers verbatim: `--gh-line-card` is the app's existing
   card-hairline token and sits within a few hex points of the mock's border;
   `--gh-label-2` is an EXACT match for the mock's default text colour. The
   muted variant intentionally does NOT use `--text-support` / `--text-placeholder`
   (spec I3 reserves those for genuinely empty values) — `--text-support` still
   clears the 3:1 micro-label floor at this 11.5px size, so it is used for the
   de-emphasised "No renovable" state instead. */
.attr-chip[b-xjtojtf86v] {
    display: inline-flex;
    align-items: center;
    padding: 3px 9px;
    border: 1px solid var(--gh-line-card);
    border-radius: var(--r-chip);
    font-size: 11.5px;
    font-weight: 600;
    color: var(--gh-label-2);
    white-space: nowrap;
}

.attr-chip--muted[b-xjtojtf86v] {
    color: var(--text-support);
}
/* /Components/IssuanceOrder/OrderCountCard.razor.rz.scp.css */
/* Geometry/colours taken verbatim from mock-orders-module.html's count pill
   (`padding:8px 14px;background:#F5F8FC;border:1px solid #DCE3EE;
   border-radius:12px`), mapped onto this app's existing token names rather
   than the mock's raw hexes (same convention as OrderStepRail/OrderAttrChip):
   `--surf-item` for the near-white fill, `--gh-line-card` for the hairline. */
.order-count-card[b-1bfh9l9v8o] {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    background: var(--surf-item);
    border: 1px solid var(--gh-line-card);
    border-radius: 12px;
}

.order-count-card__value[b-1bfh9l9v8o] {
    font-size: 20px;
    font-weight: 700;
    line-height: 1;
    color: var(--mud-palette-primary);
}

.order-count-card__label[b-1bfh9l9v8o] {
    font-size: 12.5px;
    font-weight: 600;
    color: var(--gh-label-2);
}
/* /Components/IssuanceOrder/OrderStatusChip.razor.rz.scp.css */
/* Only the two new buckets Órdenes needs beyond what AccidentStatusBadge
   already ships in wwwroot/app.css (`.status-badge--open/--closed/--reopen`,
   reused as-is for info/neutral/warn — design D3). `.status-badge` and
   `.status-badge__dot` themselves are global classes from app.css and are not
   redeclared here; this file only adds the "ok" and "danger" modifiers, using
   the token pair added in S0 (design D1/A3). Scoped CSS is safe here because
   nothing here competes with a MudBlazor rule (design D1's load-order note). */

.status-badge--ok[b-d1pyv1mqtn] {
    background: var(--status-ok-bg);
    color: var(--status-ok-fg);
}

.status-badge--ok .status-badge__dot[b-d1pyv1mqtn] {
    background: var(--status-ok-dot);
}

.status-badge--danger[b-d1pyv1mqtn] {
    background: var(--status-danger-bg);
    color: var(--status-danger-fg);
}

.status-badge--danger .status-badge__dot[b-d1pyv1mqtn] {
    background: var(--status-danger-dot);
}
/* /Components/IssuanceOrder/OrderStepRail.razor.rz.scp.css */
/* Geometry from mudblazor/modulo_orden_emision/mock-orders-module.html:
   28px circles, 999px radius, 2px connectors, 11px circle-to-label gap.
   Colours resolve through --mud-palette-primary (not a literal hex) so the
   current/completed accent inverts for free in dark theme (spec A2) instead
   of needing a second declaration site, and through the design-system
   tokens already declared in wwwroot/app.css's .app-light/.app-dark blocks
   (spec I5: no colour outside the design system). */
.step-rail[b-f172p8xelz] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    row-gap: 14px;
    padding: 18px 0 20px;
}

.step-rail__item[b-f172p8xelz] {
    display: flex;
    align-items: center;
    gap: 11px;
}

.step-rail__circle[b-f172p8xelz] {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    border-radius: var(--r-chip);
    font-size: 13px;
    font-weight: 700;
    border: none;
    padding: 0;
    cursor: default;
    font-family: inherit;
}

.step-rail__circle--completed[b-f172p8xelz] {
    background: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
    cursor: pointer;
}

.step-rail__circle--completed:hover[b-f172p8xelz],
.step-rail__circle--completed:focus-visible[b-f172p8xelz] {
    filter: brightness(1.08);
}

.step-rail__circle--current[b-f172p8xelz] {
    border: 2px solid var(--mud-palette-primary);
    color: var(--mud-palette-primary);
    background: transparent;
}

.step-rail__circle--pending[b-f172p8xelz] {
    background: var(--surf-chip-neutral);
    color: var(--text-support);
}

/* Design D4: "Locked | same as pending + padlock, opacity:.55". The dimming
   is applied on .step-rail__item (circle + label together) rather than only
   the circle, so the whole row reads as unavailable at a glance. Set as an
   explicit modifier class rather than `:has()` to avoid depending on
   selector support in whatever browsers this internal tool still needs. */
.step-rail__item--locked[b-f172p8xelz] {
    opacity: .55;
}

.step-rail__label-group[b-f172p8xelz] {
    display: flex;
    flex-direction: column;
    gap: 1px;
}

.step-rail__label[b-f172p8xelz] {
    /* --gh-label-2 is this app's own "muted level-2 label" token — the
       design system's --text-muted-2 name maps onto it (same pattern as
       OrderAttrChip.razor.css), not a new token. */
    font-size: 14px;
    font-weight: 600;
    white-space: nowrap;
    color: var(--gh-label-2);
}

.step-rail__label--current[b-f172p8xelz] {
    font-weight: 700;
    color: var(--gh-strong);
}

.step-rail__label--completed[b-f172p8xelz] {
    color: var(--gh-body);
}

/* Spec D1: a locked step's reason MUST be stated, not just implied by a padlock. */
.step-rail__reason[b-f172p8xelz] {
    font-size: 11px;
    color: var(--text-support);
    white-space: nowrap;
}

.step-rail__connector[b-f172p8xelz] {
    flex: 1 1 24px;
    min-width: 24px;
    height: 2px;
    margin: 0 16px;
}

.step-rail__connector--done[b-f172p8xelz] {
    background: var(--mud-palette-primary);
}

.step-rail__connector--pending[b-f172p8xelz] {
    background: var(--gh-line-divider);
}
/* /Components/IssuanceOrder/OrderToggle.razor.rz.scp.css */
/* Geometry/colours verbatim from mock-orders-module.html's cfg-strip block
   (design D4 §5.5 / spec E1): 40px chip, 18px check box, 10px chip radius,
   1px marked border. Resolved through --mud-palette-primary (not a literal
   hex) so the marked state inverts for free in dark theme (spec A2), same
   pattern as OrderStepRail.razor.css. */
.cfg-toggle[b-mno438caqc] {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    height: 40px;
    padding: 0 15px;
    background: var(--mud-palette-surface);
    border: 1px solid var(--line-input);
    border-radius: 10px;
    cursor: pointer;
    outline: none;
    user-select: none;
}

.cfg-toggle:hover[b-mno438caqc] {
    border-color: var(--gh-line-row-2-hover);
}

.cfg-toggle:focus-visible[b-mno438caqc] {
    box-shadow: 0 0 0 2px var(--mud-palette-primary);
}

/* Disabled = "you cannot change this", NOT "you cannot read this". View mode
   (`Consultar`) exists precisely to READ these values, so the state indicator must
   stay legible.

   A group `opacity: .6` on the chip cannot be opted out of by a child: opacity
   creates a stacking context and composites the whole rendered subtree, so the box
   fill and the white check blend toward the backdrop together and their contrast
   collapses — measured 4.66:1 -> 3.18:1. `opacity: 1` on the box would NOT restore
   it. So the dim moves off the group and onto the two parts that are pure chrome;
   the checkbox keeps its full 4.66:1. */
.cfg-toggle--disabled[b-mno438caqc] {
    cursor: default;
}

.cfg-toggle--disabled .cfg-toggle__label[b-mno438caqc],
.cfg-toggle--disabled .cfg-toggle__hint[b-mno438caqc] {
    opacity: .6;
}

/* Marked: faint tinted plate under an accent border (the mock's #EEF3FA over
   #22456F). Both values are tokens now — the plate used to be
   `color-mix(--control-on 12%, --field-fill)`, on the theory that deriving it would
   make it invert for free. It did invert, just to the wrong place: #D3DBE7 in light
   (1.27x darker than the mock, reading as a grey slab) and #121D2E in dark (darker
   than the UNMARKED chip, so "marked" read as recessed). See `--control-on-plate`
   in app.css for the measurements. */
.cfg-toggle--on[b-mno438caqc] {
    background: var(--control-on-plate);
    border-color: var(--control-on);
}

.cfg-toggle__box[b-mno438caqc] {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    border-radius: 5px;
    border: 1.5px solid var(--gh-line-row-2-hover);
}

.cfg-toggle--on .cfg-toggle__box[b-mno438caqc] {
    border: none;
    /* `--control-on`, not `--mud-palette-primary`. Primary inverts to near-white
       (#E9EFF8) in dark, which turned the selected box into a washed grey blob and
       forced the check to go dark — the opposite of the approved design. This pair
       keeps a saturated accent + white check in BOTH themes. Light is unchanged:
       `--control-on` is #22456F there, the same value primary resolved to. */
    background: var(--control-on);
    color: var(--control-on-ink);
}

.cfg-toggle__label[b-mno438caqc] {
    font-size: 14px;
    font-weight: 600;
    color: var(--gh-body);
    white-space: nowrap;
}

.cfg-toggle--on .cfg-toggle__label[b-mno438caqc] {
    color: var(--gh-title);
}

/* "+ paso N" hint chip — info-blue while the step it unlocks is active,
   neutral otherwise (spec E1). */
.cfg-toggle__hint[b-mno438caqc] {
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 10.5px;
    font-weight: 700;
    background: var(--surf-chip-neutral);
    color: var(--gh-label-2);
    white-space: nowrap;
}

.cfg-toggle__hint--active[b-mno438caqc] {
    background: var(--status-info-bg);
    color: var(--status-info-fg);
}
/* /Components/IssuanceOrderForm/Tablas/CoaseguroTable.razor.rz.scp.css */
/* Spec F1-F6 (S4). All single-class selectors below apply directly to elements
   this component renders itself, or to a MudBlazor component's ROOT element via
   its own `Class` parameter (e.g. `Class="coins-icon-btn"` on `MudIconButton`) —
   both are reachable from scoped CSS. Anything that needs to reach PAST a
   MudBlazor component's root into its own internal markup (`.mud-input-filled`,
   `.mud-input-adornment`) lives in `wwwroot/app.css` instead, scoped by
   `.dlg-form .fld--outline` — same reasoning as design decision D1. */

.coins-panel[b-cijx987t4i] {
    border: 1px solid var(--gh-line-card);
    border-radius: 14px;
    padding: 16px;
}

.coins-panel__head[b-cijx987t4i] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
}

.coins-panel__label[b-cijx987t4i] {
    font-size: 12.5px;
    font-weight: 600;
    color: var(--gh-body);
}

.coins-panel__remaining[b-cijx987t4i] {
    margin-left: auto;
    font-size: 12.5px;
    color: var(--gh-label-2);
}

.coins-panel__remaining-value[b-cijx987t4i] {
    font-weight: 700;
}

.coins-panel__remaining-value--ok[b-cijx987t4i] {
    color: var(--status-ok-fg);
}

.coins-panel__remaining-value--warn[b-cijx987t4i] {
    color: var(--status-warn-fg);
}

.coins-panel__remaining-value--danger[b-cijx987t4i] {
    color: var(--status-danger-fg);
}

/* Spec F2: stacked bar first, legend right after it. */
.coins-bar[b-cijx987t4i] {
    display: flex;
    height: 12px;
    border-radius: 999px;
    overflow: hidden;
    background: var(--surf-chip-neutral);
    margin-bottom: 6px;
}

.coins-bar__segment[b-cijx987t4i] {
    height: 100%;
}

.coins-legend[b-cijx987t4i] {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin-bottom: 16px;
}

.coins-legend__item[b-cijx987t4i] {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 12px;
    color: var(--gh-body);
}

.coins-legend__dot[b-cijx987t4i],
.coins-row__dot[b-cijx987t4i] {
    width: 9px;
    height: 9px;
    border-radius: 3px;
    flex-shrink: 0;
}

/* Spec F1 (last sentence): the add row and the table MUST share one grid
   definition so the columns line up — this is that shared definition. */
.coins-grid[b-cijx987t4i] {
    display: grid;
    grid-template-columns: minmax(240px, 1fr) 120px 160px 120px;
    gap: 12px;
    align-items: center;
}

.coins-grid--add[b-cijx987t4i] {
    padding: 12px;
    background: var(--surf-item);
    border-radius: 11px;
    margin-bottom: 8px;
}

.coins-grid--header[b-cijx987t4i] {
    padding: 0 12px 8px;
}

.coins-grid--header span[b-cijx987t4i] {
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .1em;
    color: var(--gh-label-2);
}

.coins-grid__right[b-cijx987t4i] {
    text-align: right;
}

.coins-rows[b-cijx987t4i] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.coins-row[b-cijx987t4i] {
    padding: 11px 12px;
    background: var(--mud-palette-surface);
    border: 1px solid var(--gh-line-row-2);
    border-radius: 9px;
}

.coins-row:hover[b-cijx987t4i] {
    border-color: var(--gh-line-row-2-hover);
}

.coins-row__name[b-cijx987t4i] {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14.5px;
    font-weight: 600;
    color: var(--gh-strong);
}

.coins-row__actions[b-cijx987t4i] {
    display: flex;
    justify-content: flex-end;
    gap: 2px;
}

/* Spec F4: 32px icons, neutral at rest, red on hover ONLY for the destructive
   one — never a red text button at rest. */
.coins-icon-btn[b-cijx987t4i] {
    width: 32px;
    height: 32px;
    padding: 0;
    border-radius: var(--r-icon);
    color: var(--icon-action);
}

.coins-icon-btn:hover[b-cijx987t4i] {
    background: var(--field-fill-hover);
    color: var(--mud-palette-primary);
}

.coins-icon-btn--danger:hover[b-cijx987t4i] {
    background: var(--status-danger-bg);
    color: var(--status-danger-fg);
}

/* Spec F5: separated by border-top, "Total" left, summed percentage right. */
.coins-total[b-cijx987t4i] {
    padding: 12px;
    margin-top: 8px;
    border-top: 1px solid var(--gh-line-divider);
}

.coins-total__label[b-cijx987t4i] {
    font-size: 13px;
    font-weight: 700;
    color: var(--gh-body);
}

.coins-total__value[b-cijx987t4i] {
    font-size: 15px;
    font-weight: 700;
}

.coins-total__value--ok[b-cijx987t4i] {
    color: var(--status-ok-fg);
}

.coins-total__value--warn[b-cijx987t4i] {
    color: var(--status-warn-fg);
}

.coins-total__value--danger[b-cijx987t4i] {
    color: var(--status-danger-fg);
}

/* Spec F1: the button that stays neutral/disabled until both insurer and %
   are set. No `Color` prop set in the markup (landmine: `.mud-primary-text`/
   `.mud-chip-color-*` carry `!important`) — both states are fully owned here. */
.coins-add-btn[b-cijx987t4i] {
    height: 44px;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    box-shadow: none;
}

.coins-add-btn.mud-disabled[b-cijx987t4i] {
    background: var(--surf-chip-neutral);
    color: var(--text-placeholder);
    opacity: 1;
}

.coins-add-btn:not(.mud-disabled)[b-cijx987t4i] {
    background: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
}
/* /Components/Policy/InsuredItems/InsuredItemsConfigurationBuilder.razor.rz.scp.css */
/* .insured-items-panel__section deduped to wwwroot/app.css (S6a) — see the
   comment left in InsuredItemsImportPanel.razor.css.
   .insured-items-panel__field*/__create-option deduped to wwwroot/app.css
   (S6b, design #571 D7 — byte-identical to ProductDraftCard.razor.css's own
   copy, both files now resolve the one app.css rule). */

.insured-items-panel__nature[b-5ugh95b3de] {
    min-width: 50%;
    max-width: 100%;
}

.insured-items-panel__empty[b-5ugh95b3de] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 36px 20px;
    border: 1px dashed var(--mud-palette-lines-default);
    border-radius: 12px;
    text-align: center;
    background: var(--mud-palette-background-gray);
}

.insured-items-panel__empty .mud-icon-root[b-5ugh95b3de] { opacity: .55; }

.insured-items-panel__builder-footer[b-5ugh95b3de] {
    position: sticky;
    bottom: -20px;
    background: var(--mud-palette-background);
    padding: 10px 8px 10px 8px;
    z-index: 2;
}

.insured-items-panel__toggle-nature .mud-toggle-item[b-5ugh95b3de] {
    padding: 6px 14px;
}

.insured-items-panel__toggle-nature .mud-toggle-item .mud-icon-root[b-5ugh95b3de] { font-size: 18px; }

.insured-items-panel__nature-badge[b-5ugh95b3de] {
    font-size: 0.6rem;
    font-weight: 700;
    color: var(--mud-palette-success);
    background: color-mix(in srgb, var(--mud-palette-success) 14%, transparent);
    padding: 1px 6px;
    border-radius: 999px;
    margin-left: 6px;
}

.insured-items-panel__product-divider[b-5ugh95b3de] {
    border: 0;
    border-top: 1px solid var(--mud-palette-primary);
    margin: 4px 0;
    width: 100%;
    opacity: 0.8;
}

.gap-2[b-5ugh95b3de] { gap: 8px; }
/* /Components/Policy/InsuredItems/InsuredItemsImportPanel.razor.rz.scp.css */
/* =============================================================================
   InsuredItemsImportPanel — root scoped styles.
   Child regions own their extracted markup styles in their own .razor.css files.
   ========================================================================== */

.insured-items-panel[b-5hgdeum3lq] { width: 100%; }

/* orden-emision-redesign S6a: .insured-items-panel__section was duplicated
   byte-for-byte across this file and InsuredItemsConfigurationBuilder/
   ImportSection/NormalizedItemsSection.razor.css — a 4-way edit surface for
   one rule with no per-component behaviour. Deduped to wwwroot/app.css; the
   class name is unchanged so every `MudPaper Class="insured-items-panel__section"`
   (Policy's legacy markup included) still resolves it. */

/* Shared input normalization for descendants rendered by extracted components. */
.insured-items-panel[b-5hgdeum3lq]  .mud-input-control { margin-top: 0; width: 100%; }

.insured-items-panel[b-5hgdeum3lq]  .mud-input,
.insured-items-panel[b-5hgdeum3lq]  .mud-input-slot,
.insured-items-panel[b-5hgdeum3lq]  input.mud-input-slot,
.insured-items-panel[b-5hgdeum3lq]  .mud-select .mud-input-slot {
    font-size: 0.8125rem;
    line-height: 1.4;
}

.insured-items-panel[b-5hgdeum3lq]  .mud-input-slot::placeholder {
    font-size: 0.8125rem;
    opacity: .65;
}

.insured-items-panel[b-5hgdeum3lq]  .mud-input-helper-text {
    font-size: 0.72rem;
    line-height: 1.25;
    margin-top: 3px;
}

.insured-items-panel[b-5hgdeum3lq]  .mud-input-adornment .mud-icon-root {
    font-size: 20px;
    width: 20px;
    height: 20px;
}

.insured-items-panel[b-5hgdeum3lq]  .mud-autocomplete-list-item {
    padding: 6px 12px;
    min-height: 40px;
}

.insured-items-panel[b-5hgdeum3lq]  .mud-select .mud-input-control {
    min-height: 40px;
}

.insured-items-panel__section-header[b-5hgdeum3lq] {
    padding: 0 8px 0 0 !important;
}
/* /Components/Policy/InsuredItems/InsuredItemsImportSection.razor.rz.scp.css */
/* .insured-items-panel__section deduped to wwwroot/app.css (S6a) — see the
   comment left in InsuredItemsImportPanel.razor.css. */
/* /Components/Policy/InsuredItems/InsuredItemsNormalizedItemsSection.razor.rz.scp.css */
/* .insured-items-panel__section deduped to wwwroot/app.css (S6a) — see the
   comment left in InsuredItemsImportPanel.razor.css. Both rules below are
   Policy-mode only (design #571 D7/D8, tasks #573): Policy's MudStack header
   markup stays byte-identical to pre-change, so its CSS stays live too. Order
   mode's header is an owned <div class="items-sec__head"> (S6d task 7) with
   its own rule in wwwroot/app.css -- no MudStack, no utility-class selector,
   no padding conflict to inherit. */
.insured-items-panel__section-header[b-jm9n2u8x80] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    flex-wrap: wrap;
    padding: 0 0 0 12px !important;
}

/* The chained-utility-class selector that used to sit here
   (`.d-flex.flex-row.justify-space-between.align-center.gap-2.insured-items-panel__section-header`)
   is deleted, not relocated (S6d task 7, design D8): it chained MudBlazor's
   auto-generated utility classes onto the rule above, had no `!important`,
   and already lost to that rule -- confirmed dead before deletion, safe for
   both modes since Order's header never uses MudStack's utility classes. */

.insured-items-panel__table-scroll[b-jm9n2u8x80] {
    width: 100%;
    max-height: 420px;
    overflow-x: auto;
    overflow-y: auto;
}

.insured-items-panel__table-scroll[b-jm9n2u8x80]  table {
    min-width: 760px;
}

.insured-items-panel__table-scroll[b-jm9n2u8x80]  .mud-table-head th {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
    text-transform: uppercase;
    letter-spacing: .03em;
}

.insured-items-panel__table-scroll[b-jm9n2u8x80]  .mud-table-body td {
    font-size: 0.8125rem;
    vertical-align: middle;
}

.insured-items-panel__table-scroll[b-jm9n2u8x80]  .insured-items-panel__amount {
    text-align: right;
}
/* /Components/Policy/InsuredItems/InsuredItemsPanelHeader.razor.rz.scp.css */
.gap-2[b-1v0tto7gb0] { gap: 8px; }
/* /Components/Policy/InsuredItems/InsuredItemsProductDraftCard.razor.rz.scp.css */
.insured-items-panel__product-card[b-roc5wrz0uk] {
    padding: 16px 18px;
    border-radius: 12px;
    border: 1px solid var(--mud-palette-lines-default);
    border-left: 4px solid var(--mud-palette-primary);
    transition: box-shadow var(--motion-fast) var(--motion-ease), border-color var(--motion-fast) var(--motion-ease);
    background-color: var(--mud-palette-background);
}

.insured-items-panel__product-card:hover[b-roc5wrz0uk] {
    box-shadow: var(--shadow-sm);
}

.insured-items-panel__product-card[data-state="incomplete"][b-roc5wrz0uk] {
    border-left-color: var(--mud-palette-warning);
    background-color: color-mix(in srgb, var(--mud-palette-warning) 4%, transparent);
}

.insured-items-panel__product-card[data-state="ready"][b-roc5wrz0uk] {
    border-left-color: var(--mud-palette-success);
}

.insured-items-panel__product-header[b-roc5wrz0uk] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-width: 0;
}

.insured-items-panel__product-title[b-roc5wrz0uk] {
    font-size: 0.9375rem;
    font-weight: 600;
    line-height: 1.25;
    color: var(--mud-palette-text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.insured-items-panel__product-meta[b-roc5wrz0uk] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.insured-items-panel__product-code[b-roc5wrz0uk] {
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--mud-palette-text-secondary);
    background: var(--mud-palette-background-gray);
    padding: 1px 8px;
    border-radius: 999px;
    border: 1px solid var(--mud-palette-lines-default);
}

.insured-items-panel__plan-count[b-roc5wrz0uk] {
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
}

.insured-items-panel__plan-count--warning[b-roc5wrz0uk] { color: var(--mud-palette-warning); }
.insured-items-panel__plan-count--ok[b-roc5wrz0uk] { color: var(--mud-palette-success); }

.insured-items-panel__product-actions[b-roc5wrz0uk] {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
}

.insured-items-panel__product-actions[b-roc5wrz0uk]::before {
    content: "";
    width: 1px;
    height: 22px;
    background: var(--mud-palette-lines-default);
    margin: 0 4px;
}

/* Task 10: .insured-items-panel__plan-chip / __plan-currency / __pending-chip's
   !important rules relocated to wwwroot/app.css — deleted, not migrated, per
   design #571 D7 (app.css loads after MudBlazor, so a plain rule wins the
   cascade on load order alone). This file keeps only what needs no
   escalation. */
.insured-items-panel__plan-chip .mud-chip-content .mud-icon-root[b-roc5wrz0uk] { font-size: 16px; }

.insured-items-panel__new-plan[b-roc5wrz0uk] {
    padding: 14px 16px;
    border-radius: 10px;
    background-color: var(--mud-palette-background-gray);
    border: 1px dashed var(--mud-palette-primary);
}

.insured-items-panel__new-plan-title[b-roc5wrz0uk] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.875rem;
    font-weight: 600;
}

.insured-items-panel__new-plan-counter[b-roc5wrz0uk] {
    font-size: 0.7rem;
    font-weight: 700;
    color: var(--mud-palette-primary);
    background: color-mix(in srgb, var(--mud-palette-primary) 12%, transparent);
    padding: 2px 8px;
    border-radius: 999px;
}

.insured-items-panel__pending-plan-list[b-roc5wrz0uk] {
    min-height: 38px;
    padding: 6px 8px;
    border-radius: 8px;
    background: var(--mud-palette-background);
    border: 1px solid var(--mud-palette-lines-default);
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
    max-height: 120px;
    overflow-y: auto;
}

/* .insured-items-panel__field*/__create-option deduped to wwwroot/app.css
   (S6b, design #571 D7 — byte-identical to ConfigurationBuilder.razor.css's
   own copy). */

.insured-items-panel__plan-search[b-roc5wrz0uk] { width: 100%; }
/* /Components/Policy/PolicyConsultationSummary.razor.rz.scp.css */
/* polizas-redesign P3b (guide §3.1). Header + eight-fact strip, no per-field icons. */

.pol-head[b-a5rbvpsfxp] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}

.pol-head__label[b-a5rbvpsfxp] {
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--gh-label-2);
}

.pol-head__name[b-a5rbvpsfxp] {
    font-size: 24px;
    font-weight: 700;
    color: var(--gh-strong);
    line-height: 1.2;
}

.pol-head__doc[b-a5rbvpsfxp] {
    font-size: 13px;
    color: var(--gh-body);
}

.pol-head__chips[b-a5rbvpsfxp] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

/* The policy number is an identifier: monospaced so it is scannable, on the neutral
   chip plate rather than an outlined primary chip — it carries no state. */
.pol-head__number[b-a5rbvpsfxp] {
    display: inline-flex;
    align-items: center;
    padding: 5px 12px;
    border-radius: var(--r-chip);
    background: var(--surf-chip-neutral);
    font-family: var(--font-code);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: var(--gh-body);
}

/* Four columns, matching the tray and the mock. Collapses rather than squeezing. */
.pol-strip[b-a5rbvpsfxp] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px 20px;
    padding: 14px 16px;
    border-radius: 12px;
    background: var(--surf-item);
}

@media (max-width: 900px) {
    .pol-strip[b-a5rbvpsfxp] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.pol-strip__label[b-a5rbvpsfxp] {
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--gh-label-2);
    margin-bottom: 2px;
}

/* Body role, never a support/placeholder one: `Sin asignar` and `Sin fecha` are data
   and must clear the same contrast floor as a populated value (spec X2). */
.pol-strip__value[b-a5rbvpsfxp] {
    font-size: 14.5px;
    color: var(--gh-strong);
}
/* /Components/Policy/PolicyMovementMenu.razor.rz.scp.css */
/* polizas-redesign P5 (guide §5). Initials plate + two-line entry, so "Extensión" and
   "Disminución" stop being one word apart with nothing to distinguish them. */

.mov-menu__row[b-otau6jtrdl] {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 260px;
}

.mov-menu__plate[b-otau6jtrdl] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    flex: 0 0 30px;
    border-radius: 9px;
    background: var(--surf-chip-neutral);
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: var(--gh-body);
}

.mov-menu__text[b-otau6jtrdl] {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
}

.mov-menu__label[b-otau6jtrdl] {
    font-size: 14px;
    font-weight: 600;
    color: var(--gh-strong);
}

/* The description is what makes the entry decidable; support role so it never
   competes with the label it explains. */
.mov-menu__desc[b-otau6jtrdl] {
    font-size: 12px;
    color: var(--text-support);
}
/* /Components/Policy/PolicyRowDetail.razor.rz.scp.css */
/* polizas-redesign P1b-3c (spec L7). Micro-label above value, the pairing the
   detail tray uses across this design language. */

.pol-detail__label[b-t221k8mstc] {
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--gh-label-2);
    margin-bottom: 3px;
}

/* Body role, NOT a support/placeholder role. Empty values land here too — `No
   aplica`, `Sin negociar`, `Sin fee`, `Sin vigencia` are data and must clear the
   4.5:1 floor in both themes, so they cannot be dimmed to look "absent". */
.pol-detail__value[b-t221k8mstc] {
    font-size: 14.5px;
    color: var(--gh-strong);
    min-height: 22px;
}

/* The way out of the tray. Separated by a hairline so it reads as an action
   rather than one more fact, and right-aligned like the mock. */
.pol-detail__foot[b-t221k8mstc] {
    display: flex;
    justify-content: flex-end;
    padding-top: 12px;
    border-top: 1px solid var(--gh-line-divider);
}
/* /Components/Policy/PolicyTraceTimeline.razor.rz.scp.css */
/* polizas-redesign P3a (guide §3.2). ONE hue for the whole rail: state is carried
   by shape — filled+check, outlined+number, dashed — never by a second colour.

   Token mapping, since the handoff's names are not this app's:
     --btn-primary-bg   -> --control-on        (the saturated accent that does NOT
                                                invert in dark; a progress circle must
                                                stay brand, same call as the checkbox)
     --btn-outline-line -> --line-input        (this app's control-border token)
     --text-strong      -> --gh-strong
     --text-body        -> --gh-body
     --line-divider     -> --gh-line-divider   */

.policy-trace-timeline__title[b-13e9rikh79] {
    font-weight: 700;
    letter-spacing: 0;
    color: var(--gh-strong);
}

.trace-rail[b-13e9rikh79] {
    display: flex;
    align-items: flex-start;
    list-style: none;
    margin: 0;
    padding: 0;
    gap: 0;
}

.trace-rail__item[b-13e9rikh79] {
    position: relative;
    flex: 1 1 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    padding-right: 16px;
    min-width: 0;
}

/* The connector belongs to the step on its RIGHT and runs leftwards, so the first
   item has none.

   It must span CENTRE TO CENTRE, not edge to edge. The circle is 32px and sits at the
   item's left edge, so its centre is 16px in. With a plain `right: 100%` the connector
   ended at the item's left edge — 16px short of the circle it leads to — and started
   16px short of the previous one, so the whole rail was shifted half a circle to the
   left. `calc(100% - 16px)` puts its right end exactly on this circle's centre, and
   `width: 100%` carries it back to the previous circle's centre, because every item is
   `flex: 1 1 0` and therefore the same width. */
.trace-rail__connector[b-13e9rikh79] {
    position: absolute;
    /* 32px circle, 2px line: (32 / 2) - (2 / 2). */
    top: 15px;
    right: calc(100% - 16px);
    width: 100%;
    height: 2px;
    background: var(--gh-line-divider);
    /* Sin esto la línea se pinta ENCIMA de los círculos: es `position: absolute` y los
       círculos están en flujo, así que gana la absoluta aunque venga antes en el markup.
       Se veía como un trazo cruzando la cara de cada círculo. */
    z-index: 0;
}

.trace-rail__item:first-child .trace-rail__connector[b-13e9rikh79] {
    display: none;
}

/* A connector is "travelled" only when the step it leads to is reached. */
.trace-rail__item--done .trace-rail__connector[b-13e9rikh79],
.trace-rail__item--current .trace-rail__connector[b-13e9rikh79] {
    background: var(--control-on);
}

/* `position: relative` + `z-index` lo suben por encima del conector. El fondo tapa el
   tramo de línea que ahora pasa por debajo: sin él se vería cruzar el interior de los
   círculos sin relleno — el pendiente punteado y el actual, que son transparentes. */
.trace-rail__circle[b-13e9rikh79] {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 999px;
    background: var(--mud-palette-surface);
    font-size: 13px;
    font-weight: 700;
    margin-bottom: 6px;
    box-sizing: border-box;
}

.trace-rail__item--done .trace-rail__circle[b-13e9rikh79] {
    background: var(--control-on);
    color: var(--control-on-ink);
}

.trace-rail__item--current .trace-rail__circle[b-13e9rikh79] {
    border: 2px solid var(--control-on);
    color: var(--control-on);
}

/* Pending is dashed and unfilled — visibly not-yet rather than disabled. It is NOT
   dimmed with opacity: that would multiply onto the label and break the contrast
   floor (hard rule 4 of the Pólizas README). */
.trace-rail__item--pending .trace-rail__circle[b-13e9rikh79] {
    border: 2px dashed var(--line-input);
    color: var(--text-muted-2);
}

.trace-rail__label[b-13e9rikh79] {
    font-size: 14px;
    font-weight: 700;
    color: var(--gh-strong);
}

.trace-rail__item--pending .trace-rail__label[b-13e9rikh79] {
    font-weight: 600;
    color: var(--text-muted-2);
}

.trace-rail__date[b-13e9rikh79] {
    font-size: 13px;
    color: var(--gh-body);
}

.trace-rail__actor[b-13e9rikh79] {
    font-size: 12px;
    color: var(--text-support);
}

.trace-rail__hint[b-13e9rikh79] {
    font-size: 13px;
    color: var(--text-muted-2);
}

/* Narrow dialogs stack the rail instead of squeezing 32px circles into slivers. */
@media (max-width: 720px) {
    .trace-rail[b-13e9rikh79] {
        flex-direction: column;
        gap: 14px;
    }

    .trace-rail__connector[b-13e9rikh79] {
        display: none;
    }
}
/* /Components/Reports/CircularChartCardCount.razor.rz.scp.css */
/* /Components/Reports/CustomButtonAdvancedDownload.razor.rz.scp.css */
/* /Components/Reports/Helpers/ReportCardsSummaries.razor.rz.scp.css */
/* /Components/Reports/NotContentChart.razor.rz.scp.css */
/* /Components/UserControl/UserDataGrid.razor.rz.scp.css */
/* /Components/UserControl/UserRegistrationForm.razor.rz.scp.css */
.form-main_container[b-9pzcd2v6qb] {
    max-width: 800px;
    margin: auto;
}

article[b-9pzcd2v6qb] {
    padding: .5rem 0;
}

.articlesFormClient[b-9pzcd2v6qb] {
    display: flex;
    flex-direction: column;
    align-items: start;
    width: 100%;
}

.clientInfo label[b-9pzcd2v6qb] {
    width: 200px;
    margin-left: 1px;
    font-size: 1rem;
}

.input label[b-9pzcd2v6qb] {
    margin-bottom: 5px;
}

.input[b-9pzcd2v6qb] {
    width: 100%;
    display: flex;
    flex-direction: column;
    transition-duration: var(--motion-base);
}

.gridChecks div[b-9pzcd2v6qb] {
    margin-left: auto;
}

.mobile[b-9pzcd2v6qb] {
    height: 600px;
    overflow: scroll;
}
/* /Layout/MainLayout.razor.rz.scp.css */
.titleNavMenu[b-8spdn37qyh] {
    width: 100%;
    height: 70px;
    display: flex;
    align-items: center;
    justify-content: start;
    text-align: left;
    white-space: nowrap;
}

span[b-8spdn37qyh] {
    white-space: nowrap;
    display: flex;
    align-items: center;
}

.titleNavMenu img[b-8spdn37qyh] {
    /*width: 30px;*/
}

.titleNavMenu p[b-8spdn37qyh] {
    margin-left: 8px;
    font-size: 16px;
    font-weight: 300;
    color: var(--font-color-lightmode);
    white-space: nowrap;
    overflow: hidden;
}

@media (width <= 768px) or (height <= 900px) {
    .navBarMobile[b-8spdn37qyh] {
        display: none;
    }
}

@media (width >= 768px) {
    .navBarDesktop[b-8spdn37qyh] {
        display: none;
    }
}
/* /Layout/NavMenu.razor.rz.scp.css */

*[b-58rax2wqv0] {
    padding: 0;
    margin: 0;
}

.titleNavMenu[b-58rax2wqv0] {
    width: 100%;
    height: 70px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: left;
}

.titleNavMenu img[b-58rax2wqv0] {
    width: 30px;
}

.titleNavMenu span[b-58rax2wqv0] {
    margin-left: 8px;
    font-size: 16px;
    font-weight: bold;
    /*color: var(--font-color-darkmode);*/
    white-space: nowrap;
    overflow: hidden;
}

nav[b-58rax2wqv0] {
    /*background-color: var(--background-color-darkmode);*/
    height: 100%;
    overflow: hidden;

}

span[b-58rax2wqv0] {
    /*color: #fff;*/
}
/* /Pages/Accidents/Accident.razor.rz.scp.css */
/* The three KPI pills read as ONE group, so they sit closer to each other than
   the group sits to the title: `.grid-page-card__head` already supplies the 20px
   that separates title from group, and this tighter 10px binds the three.

   `.informationCards` (App.razor) is deliberately not reused here — it carries a
   `margin-left: 5rem` plus `> * { margin-left: 1rem }`, spacing sized for the old
   90px navy blocks, which would throw these much smaller pills off the head's
   rhythm. That class is shared with ~18 other pages and stays untouched. */
.kpi-pill-group[b-xr9f8h07wo] {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
/* /Pages/Auth/ForgotPassword.razor.rz.scp.css */
.form-main_container[b-qmmee2rn3i] {
    margin: auto;
    width: 100%;
    max-width: 500px;
    height: auto;
    padding: 3em;
    border-radius: 5px;
    background-color: #0c4128;
} 
/* /Pages/CompanySetup/TenantRegistration.razor.rz.scp.css */
/* /Pages/IssuanceOrder/IssuanceOrder.razor.rz.scp.css */

p[b-7jluzgn2ux] {
    margin: 0;
    padding: 0;
}

.title[b-7jluzgn2ux] {
    display: flex;
}

.btn-title[b-7jluzgn2ux] {
    margin-top: auto;
    margin-bottom: 20px;
}

@media (width <= 768px) {
    .contenedor[b-7jluzgn2ux] {
        height: 50%;
        width: 100%;
    }

    .tabla[b-7jluzgn2ux] {
        width: 100%;
        z-index: 1;
        position: relative;
    }
}
/* /Pages/Parametros/Departments.razor.rz.scp.css */
@media (width <= 768px) {
    .contenedor[b-g3wojtvb50] {
        height: 50%;
        width: 100%;
    }

    .tabla[b-g3wojtvb50] {
        width: 100%;
        z-index: 1;
        position: relative;
    }
}
/* /Pages/Parametros/LineOfBusiness.razor.rz.scp.css */
@media (width <= 768px) {
    .contenedor[b-nfiqo81j5x] {
        height: 50%;
        width: 100%;
    }

    .tabla[b-nfiqo81j5x] {
        width: 100%;
        z-index: 1;
        position: relative;
    }
}
/* /Pages/Parametros/SubDepartments.razor.rz.scp.css */
@media (width <= 768px) {
    .contenedor[b-lzbd722ur1] {
        height: 50%;
        width: 100%;
    }

    .tabla[b-lzbd722ur1] {
        width: 100%;
        z-index: 1;
        position: relative;
    }
}
/* /Pages/Policy/Tablas/MovimientosAprobados.razor.rz.scp.css */
.movements-approved-grid[b-3gsagoeueh]  .mud-table-body .mud-table-cell {
    font-size: .84rem;
    line-height: 1.35;
}

.movements-approved-grid[b-3gsagoeueh]  .mud-table-body .mud-chip {
    height: 26px;
    font-size: .78rem;
}

.movements-approved-grid__reason[b-3gsagoeueh] {
    overflow-wrap: anywhere;
}

/* polizas-redesign P4b (spec M1). Two lines: the date is what people scan, the
   time is context. Splitting them lets the date keep data weight without the
   time competing for it — the old single cell printed the machine form and both
   halves shouted equally. */
.mov-date[b-3gsagoeueh] {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
}

.mov-date__day[b-3gsagoeueh] {
    font-size: 14.5px;
    font-weight: 600;
    color: var(--gh-strong);
}

.mov-date__time[b-3gsagoeueh] {
    font-size: 12.5px;
    color: var(--text-support);
}
/* /Pages/Policy/Tablas/PolicyDatagrid.razor.rz.scp.css */
/* polizas-redesign P1a-4 (spec L4). Both cells take their values from the
   mock's own L1 row; neither introduces a colour outside the token set. */

/* Policy number: an identifier, so it is monospaced — digit columns line up
   between rows, which a proportional face cannot do. Was a Color.Primary
   MudChip, which spent the status hue on an identifier. */
.policy-number[b-2dy0kxtxgu] {
    font-family: var(--font-code);
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--gh-strong);
}

/* Validity period, rendered as one cell. Weight carries the emphasis instead
   of colour, so the row keeps exactly one coloured element (Estado). */
.policy-validity[b-2dy0kxtxgu] {
    font-size: 14.5px;
    font-weight: 600;
    color: var(--gh-strong);
    white-space: nowrap;
}

/* polizas-redesign P1b-2 (spec L3, guide §1.2). Per-currency totals as neutral
   pills — data, not status, so no hue. */
.tot-moneda[b-2dy0kxtxgu] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.tot-moneda__chip[b-2dy0kxtxgu] {
    display: inline-flex;
    align-items: baseline;
    gap: 5px;
    padding: 4px 10px;
    border-radius: var(--r-chip);
    background: var(--surf-item);
    font-size: 14.5px;
    font-weight: 600;
    color: var(--gh-strong);
    white-space: nowrap;
}

/* The currency code is a label on the amount, not part of it: smaller, heavier
   and in the support role so the eye lands on the figure. `em` carries no
   italics here — it is the guide's own markup for this span. */
.tot-moneda__chip em[b-2dy0kxtxgu] {
    font-size: 11.5px;
    font-weight: 700;
    font-style: normal;
    letter-spacing: 0.04em;
    color: var(--text-support);
}

.tot-moneda__chip--more[b-2dy0kxtxgu] {
    color: var(--text-support);
    cursor: default;
}

/* `Sin facturas` is a real value, so it reads at body contrast rather than as a
   dimmed placeholder (spec X2). */
.tot-moneda__empty[b-2dy0kxtxgu] {
    font-size: 14.5px;
    color: var(--gh-body);
}

.policy-insured-items-action[b-2dy0kxtxgu] {
    flex-wrap: wrap;
}

.policy-movements-history[b-2dy0kxtxgu],
.policy-movements-pending[b-2dy0kxtxgu] {
    background: var(--mud-palette-background);
}

.policy-movements-history__header[b-2dy0kxtxgu] {
    flex-wrap: wrap;
}

.policy-movements-history__title[b-2dy0kxtxgu] {
    font-weight: 700;
    letter-spacing: 0;
}

.policy-movements-pending[b-2dy0kxtxgu] {
    height: 700px;
    overflow: auto;
}
/* /Pages/Reports/LatePaymentReport.razor.rz.scp.css */
.small-text-grid[b-9sle0j23sc] {
    font-size: 0.85rem;
    color: red;
}
/* /Pages/Reports/PaidInstallmentsReport.razor.rz.scp.css */
.small-text-grid[b-75nqtq06yu] {
    font-size: 0.85rem;
    color: red;
}
/* /Pages/Reports/PendingInstallmentsReport.razor.rz.scp.css */
.small-text-grid[b-snly8e2bbj] {
    font-size: 0.85rem;
    color: red;
}
/* /Pages/Reports/PoliciesToRenew.razor.rz.scp.css */
.small-text-grid[b-eikp9wsrsp] {
    font-size: 0.85rem;
    color: red;
}
/* /Pages/Reports/ProductionReport.razor.rz.scp.css */
.report[b-zs8u7hc3wh] {
    height: 95vh;
    width: 97vw;
    padding: 1em;
    overflow: auto;
}

.report__header[b-zs8u7hc3wh] {
    margin-bottom: 1em;
}

.report__title[b-zs8u7hc3wh] {
    font-size: 2em;
    font-weight: bold;
}

.report__summary[b-zs8u7hc3wh] {
    display: flex;
    justify-content: flex-start;
    align-items: flex-start;
}

.report__content[b-zs8u7hc3wh] {
    max-width: 97vw;
    display: flex;
    justify-content: space-evenly;
    align-items: flex-start;
    margin-top: 3em;
    gap: 1em;
}

.report__table-wrapper[b-zs8u7hc3wh] {
    width: 85%;
    overflow: auto;
}

.report__charts[b-zs8u7hc3wh] {
    width: 25%;
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    align-items: center;
    gap: 2em;
}

.report__button[b-zs8u7hc3wh] {
    margin-bottom: 1.25em;
    margin-left: 1.25em;
    padding: 0.75em;
    width: auto;
    white-space: nowrap;
    display: flex;
    align-items: center;
}

.report__button--primary[b-zs8u7hc3wh] {
    font-size: 0.9em;
}

.report__search[b-zs8u7hc3wh] {
    margin-top: 0;
    margin-bottom: 1em;
}
/* /Pages/UserControl/UserControl.razor.rz.scp.css */
.modules-main_container[b-0a3qztb7qc] {
    width: calc(100vw - 300px);
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 1em;
}

.mud-drawer-close-mini-md-left .modules-main_container[b-0a3qztb7qc] {
    transition: all var(--motion-slow) var(--motion-ease);
    width: calc(100vw - 80px);

}
