/* Tipografía compartida de SOFIES. */
@media screen {
/* Tipografía de pantalla compartida. Los documentos impresos conservan sus estilos. */
:root {
    --ui-font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --ui-weight-regular: 400;
    --ui-weight-medium: 700;
    --ui-weight-strong: 800;
    --ui-text: 0.875rem;
    --ui-label: 0.8125rem;
    --ui-caption: 0.75rem;
    --ui-heading: 1.25rem;
}

/* Aumento moderado para lectura y captura en los módulos. */
body.app-portal,
body.module-portal {
    --ui-text: 0.9375rem;
    --ui-label: 0.875rem;
    --ui-caption: 0.8125rem;
}

body.app-portal,
body.module-portal,
body.login-page {
    font-family: var(--ui-font-family);
    font-size: var(--ui-text);
    font-weight: var(--ui-weight-regular);
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

:is(.app-portal, .module-portal, .login-page) :is(button, input, select, textarea) {
    font-family: var(--ui-font-family);
}

:is(.app-portal, .module-portal, .login-page) :is(input, select, textarea) {
    font-weight: var(--ui-weight-regular) !important;
}

:is(.app-portal, .module-portal, .login-page) button {
    font-weight: var(--ui-weight-medium) !important;
}

:is(.app-portal, .module-portal, .login-page) :is(h1, h2, h3, h4, h5, h6) {
    font-weight: var(--ui-weight-medium) !important;
    letter-spacing: normal;
    line-height: 1.35;
}

:is(.app-portal, .module-portal, .login-page) h1 {
    font-size: 1.25rem !important;
}

:is(.app-portal, .module-portal, .login-page) h2 {
    font-size: var(--ui-heading) !important;
}

:is(.app-portal, .module-portal, .login-page) :is(h3, h4, h5, h6) {
    font-size: 0.9375rem !important;
}

:is(.app-portal, .module-portal, .login-page) :is(strong, b) {
    font-weight: var(--ui-weight-strong);
}

:is(.app-portal, .module-portal, .login-page) .fw-bold {
    font-weight: var(--ui-weight-medium) !important;
}

:is(.app-portal, .module-portal, .login-page) :is(label, .form-label, label > span) {
    font-size: var(--ui-label);
    font-weight: var(--ui-weight-regular) !important;
}

:is(.app-portal, .module-portal, .login-page) :is(.form-control, .form-select) {
    font-size: var(--ui-text);
    font-weight: var(--ui-weight-regular) !important;
    line-height: 1.45;
}

:is(.app-portal, .module-portal, .login-page) :is(.btn, .btn-lg, .btn-sm) {
    font-size: var(--ui-label);
    font-weight: var(--ui-weight-medium) !important;
    line-height: 1.45;
}

:is(.app-portal, .module-portal, .login-page) :is(.alert, .form-text) {
    font-size: var(--ui-label);
    font-weight: var(--ui-weight-regular);
    line-height: 1.5;
}

:is(.app-portal, .module-portal) :is(.portal-eyebrow, .eyebrow, .search-chip) {
    font-size: var(--ui-caption);
    font-weight: var(--ui-weight-regular);
    letter-spacing: 0.025em;
    text-transform: none;
}

:is(.app-portal, .module-portal) :is(td, th) {
    font-size: var(--ui-label) !important;
    line-height: 1.4;
}

:is(.app-portal, .module-portal) th {
    font-weight: var(--ui-weight-medium) !important;
}

:is(.app-portal, .module-portal) thead th {
    font-size: var(--ui-caption) !important;
}

body.app-portal .portal-topbar {
    min-height: 64px;
    padding-block: 0.5rem;
}

body.app-portal .portal-page-heading {
    min-width: 0;
    margin-right: auto;
}

body.app-portal .portal-topbar h1 {
    font-size: var(--ui-heading) !important;
    white-space: normal;
    overflow-wrap: anywhere;
}

body.app-portal .portal-nav a {
    min-height: 48px;
    padding: 10px 11px;
    font-size: 0.9rem;
    font-weight: 720;
}

body.app-portal .portal-nav a.is-active,
body.app-portal .portal-brand strong {
    font-weight: var(--ui-weight-medium);
}

body.app-portal .portal-nav-search input {
    font-family: var(--ui-font-family);
    font-size: var(--ui-label);
    font-weight: var(--ui-weight-regular);
}

body.app-portal .portal-nav-group {
    font-size: var(--ui-caption);
    font-weight: var(--ui-weight-medium);
    letter-spacing: 0.035em;
}

/* IMP agrupa los enlaces dentro de secciones con títulos propios. */
body.app-portal .portal-nav-group > h2 {
    margin-block: 0.9rem 0.4rem;
    font-size: 0.72rem !important;
    font-weight: 900 !important;
    letter-spacing: 0.1em;
}

body.app-portal .portal-nav-section-label,
body.app-portal .portal-nav-parent {
    font-size: 0.6875rem;
    font-weight: var(--ui-weight-regular);
    letter-spacing: normal;
}

body.app-portal .module-card-copy {
    min-width: 0;
    flex: 1;
}

body.app-portal .module-card-copy p {
    margin-block: 0.25rem 0;
    font-size: var(--ui-caption);
    line-height: 1.45;
}

body.app-portal .portal-workspace-tabs {
    top: var(--workspace-topbar-height, 64px);
    padding-block: 0.35rem;
}

body.app-portal .portal-workspace-tab-select {
    min-height: 2.25rem;
    font-size: var(--ui-label);
    font-weight: var(--ui-weight-regular);
}

body.app-portal .is-active > .portal-workspace-tab-select {
    font-weight: var(--ui-weight-medium);
}

body.app-portal .portal-user strong {
    font-size: var(--ui-label);
    font-weight: var(--ui-weight-medium);
}

body.app-portal .portal-user small,
body.app-portal .database-footer {
    font-size: var(--ui-caption);
    font-weight: var(--ui-weight-regular);
}

body.app-portal .dashboard-hero {
    min-height: 100px;
    padding: 1rem 1.2rem;
}

body.app-portal .dashboard-hero > .module-icon {
    width: 3rem;
    height: 3rem;
    border-radius: 0.8rem;
    font-size: 1.35rem;
    box-shadow: none;
}

body.app-portal .module-card {
    display: flex;
    min-height: 80px;
    align-items: center;
    gap: 0.75rem;
    padding: 0.85rem 1rem;
}

body.app-portal .module-card .module-icon {
    flex: 0 0 auto;
    width: 2.4rem;
    height: 2.4rem;
    margin: 0;
}

body.app-portal .module-card h3 {
    margin: 0;
    font-size: var(--ui-text) !important;
}

body.app-portal :is(.admin-catalog-hero, .stats-hero, .authorization-hero, .credit-simulator-hero) {
    padding-block: 0.85rem;
}

body.app-portal .dossier-welcome {
    min-height: 0;
    padding-block: 1.5rem;
}

body.app-portal .dossier-welcome li {
    font-weight: var(--ui-weight-regular);
}

:is(.app-portal, .module-portal) :is(label small, .form-text) {
    font-size: var(--ui-caption);
    font-weight: var(--ui-weight-regular);
}

/* Controles que tenían tamaños locales menores que la escala compartida. */
:is(.app-portal, .module-portal) :is(h3, h4, h5, h6) {
    font-size: 1rem !important;
}
body.app-portal :is(.product-tabs a, .product-tabs > span,
    .product-list-copy strong, .product-filter-grid label > span,
    .product-code, .ui-switch > span) {
    font-size: var(--ui-label);
}
body.app-portal :is(.product-section-title p, .product-list-meta,
    .product-state, .product-form-state, .product-tabs em,
    .product-role-fieldset > p, .product-save-bar > span) {
    font-size: var(--ui-caption);
    line-height: 1.5;
}

/* Importes y contadores mantienen jerarquía sin dominar el formulario. */
:is(.app-portal, .module-portal) :is(
    .baja-summary-item, .arqueo-total-card, .report-kpi, .caja-summary-item,
    .minor-socio-main, .minor-preview-box, .reestructura-total-box,
    .credit-enrollment-dialog section, .credit-enrollment-summary-focus,
    .cartera-index-card, .cartera-status-counter, .active-portfolio-indexes,
    .stats-kpi, .stats-quality-card, .dossier-division-count, .expense-kpi-grid,
    .investment-confirm-dialog section, .locality-summary-card, .sf-metric,
    .sf-confirm-amount
) > strong {
    font-size: 1.125rem;
    font-weight: var(--ui-weight-medium);
    letter-spacing: normal;
    font-variant-numeric: tabular-nums;
}

body.app-portal .authorization-code-display {
    font-size: 2rem;
    font-weight: var(--ui-weight-medium);
}

body.module-portal .monto-destacado {
    font-size: 1.125rem;
    font-weight: var(--ui-weight-medium);
}

body.module-portal .operation-priority {
    margin: 0 0 0.65rem;
    color: var(--ink-700);
    font-size: var(--ui-caption);
}

body.login-page .login-hero h1 {
    font-size: 1.75rem !important;
}

body.login-page .login-hero p {
    font-size: var(--ui-text);
    font-weight: var(--ui-weight-regular);
}

body.login-page .login-form-panel h2 {
    font-size: 1.25rem !important;
}

@media (max-width: 767.98px) {
    /* Mantener legibilidad y evitar el zoom automático al capturar en móviles. */
    :is(.app-portal, .module-portal, .login-page) :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea) {
        font-size: 1rem;
    }

    body.app-portal .portal-nav a {
        min-height: 2.75rem;
    }

    body.app-portal .portal-topbar h1 {
        font-size: 1rem !important;
    }
}

}

@media screen {
    /* Jerarquia de acceso y navegacion equivalente a POS. */
    body.app-portal .portal-nav a.is-active { font-weight: 720; }
    body.app-portal .portal-nav i { font-size: 20px; }
    body.app-portal .portal-nav-group > h2 { line-height: 1.4; }
    body.app-portal .portal-brand strong { font-size: 1.08rem; font-weight: 800; }
    body.app-portal .portal-nav-section-label,
    body.app-portal .portal-nav-parent { font-weight: 600; }
    body.login-page .login-form-heading h2 { font-size: clamp(1.5rem, 2.2vw, 2rem) !important; font-weight: 800 !important; }
    body.login-page .login-hero h1 { font-size: clamp(1.75rem, 2.5vw, 2.25rem) !important; font-weight: 800 !important; line-height: 1.2; }
    body.login-page .login-access-form > .btn { font-size: 0.9rem; font-weight: 750 !important; }
    body.login-page .login-form-heading > p:last-child { font-size: 0.9rem; }
    body.login-page .login-field .form-label { font-weight: 700 !important; }
}

/* Expediente: lectura mas comoda de cuentas y movimientos en pantalla. */
@media screen {
    body.app-portal :is(.dossier-summary, .dossier-account-facts,
        .dossier-account-extra > summary, .dossier-movement-summary,
        .dossier-movement-pagination, .dossier-table-empty,
        .dossier-table-empty > span) {
        font-size: 0.875rem;
        line-height: 1.5;
    }
    body.app-portal :is(.dossier-tabs button, .dossier-account-number > button,
        .dossier-status-filters select, .dossier-account-toolbar input,
        .dossier-movement-filter label, .dossier-movement-filter button,
        .dossier-movement-pagination button, .dossier-movement-actions > a,
        .dossier-account-facts .is-balance dd) {
        font-size: 0.9375rem;
    }
    body.app-portal .dossier-tabs em { font-size: 0.8125rem; }
    body.app-portal :is(.dossier-account-table, .dossier-movement-table) :is(th, td) {
        font-size: 0.9375rem !important;
        line-height: 1.5;
    }
    body.app-portal :is(.dossier-account-detail h4, .dossier-movement-heading h3) {
        font-size: 1.0625rem !important;
    }
    body.app-portal .dossier-movement-table :is(td > small, td p, td a,
        .dossier-movement-details > summary, .dossier-movement-details p,
        .dossier-movement-details small, .dossier-breakdown span) {
        font-size: 0.875rem;
    }
    body.app-portal .dossier-movement-filter input {
        width: 160px;
        min-height: 36px;
        font-size: 1rem;
    }
    body.app-portal :is(.dossier-status-filters select, .dossier-account-toolbar > label,
        .dossier-movement-filter button) { min-height: 36px; }
    body.app-portal .dossier-account-table th:first-child { width: 108px; }
    @media (max-width: 767.98px) {
        body.app-portal .dossier-movement-filter input { width: 100%; }
        body.app-portal :is(.dossier-status-filters select, .dossier-account-toolbar input) { font-size: 1rem; }
    }
}

/* Encabezados de pantalla: menor altura y peso visual en todos los módulos. */
@media screen {
    :is(body.app-portal, body.module-portal) :is(h1, h2, h3, h4, h5, h6) {
        font-weight: 600 !important;
        line-height: 1.25;
    }

    :is(body.app-portal, body.module-portal) :is(
        .dashboard-hero, .report-hero, .hero-banner, .caja-open-hero,
        .transfer-hero, .investment-hero, .admin-catalog-hero, .stats-hero,
        .authorization-hero, .credit-simulator-hero, .credit-enrollment-hero,
        .manual-disbursement-hero, .directory-settings-hero, .sf-hero
    ) {
        min-height: 0;
        padding-block: .65rem;
        gap: .75rem;
        border-top-width: 2px;
    }

    :is(body.app-portal, body.module-portal) :is(
        .dashboard-hero > .module-icon, .report-hero-icon, .hero-icon,
        .investment-hero-icon, .admin-catalog-icon, .stats-hero-icon,
        .authorization-hero-icon, .credit-simulator-hero-icon,
        .credit-enrollment-hero-icon, .manual-disbursement-hero-icon,
        .sf-hero-icon
    ) {
        width: 38px;
        height: 38px;
        min-width: 38px;
        min-height: 38px;
        flex: 0 0 38px;
        border-radius: 9px;
        font-size: 1rem;
        box-shadow: none;
    }

    :is(body.app-portal, body.module-portal) :is(
        .investment-section-heading, .credit-enrollment-heading,
        .credit-simulator-section-heading, .manual-disbursement-section-heading,
        .credit-condonation-section-heading, .expense-section-heading,
        .authorization-section-heading, .admin-section-header,
        .report-section-header, .sf-section-header, .member-edit-section-heading,
        .person-card-heading, .reestructura-section-heading
    ) {
        min-height: 0;
        gap: .65rem;
        margin-bottom: .75rem;
        padding-block: .4rem .6rem;
    }

    :is(body.app-portal, body.module-portal) .investment-section-heading > span {
        width: 30px;
        height: 30px;
        flex-basis: 30px;
        border-radius: 7px;
    }

    :is(body.app-portal, body.module-portal) .investment-hero-meta span {
        padding-block: .35rem;
    }

    :is(body.app-portal, body.module-portal) .investment-calculation header {
        gap: .65rem;
        padding-block: .65rem;
    }

    :is(body.app-portal, body.module-portal) .investment-calculation header > span {
        width: 30px;
        height: 30px;
        flex-shrink: 0;
        border-radius: 7px;
    }
}

@media screen {
    /* Misma familia y ritmo en enlaces, botones y pestañas de navegación. */
    :is(body.app-portal, body.module-portal) :is(.btn, .portal-nav a, .portal-workspace-tab-select, .nav-link, [role="menuitem"]) {
        font-family: var(--ui-font-family);
        font-weight: 600 !important;
        letter-spacing: .015em;
        line-height: 1.4;
        text-rendering: optimizeLegibility;
    }

    :is(body.app-portal, body.module-portal) :is(.btn, .nav-link) {
        font-size: .875rem;
    }

    :is(body.app-portal, body.module-portal) :is(.portal-nav a.is-active, .nav-link.active, .nav-link[aria-selected="true"]) {
        font-weight: 700 !important;
    }
}
