:root {
    --company-contrast: #18212b;
}

/* El color corporativo reemplaza el accent del template, pero siempre con contraste legible. */
.btn-primary {
    --bs-btn-color: var(--company-contrast) !important;
    --bs-btn-hover-color: var(--company-contrast) !important;
    --bs-btn-active-color: var(--company-contrast) !important;
}

.btn-outline-primary:hover,
.btn-outline-primary:active,
.btn-outline-primary.active,
.show > .btn-outline-primary.dropdown-toggle {
    color: var(--company-contrast) !important;
}

/* Un item seleccionado debe leerse incluso con el amarillo de Logística o el verde de SIAC. */
.sidebar .nav-item > .nav-link.active,
.sidebar .nav-item > .nav-link.active .nav-icon,
.sidebar .nav-item > .nav-link.active .nav-arrow,
.sidebar .nav-item > .nav-link.active .nav-badge,
.sidebar .nav-item > .nav-link.active .nav-badge-soft {
    color: #18212b !important;
}

.sidebar .nav-item > .nav-link.active .nav-icon,
.sidebar .nav-item > .nav-link.active .nav-badge,
.sidebar .nav-item > .nav-link.active .nav-badge-soft {
    background: rgba(24, 33, 43, .10) !important;
}

.app-company-logo-link {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    text-decoration: none;
}

.app-company-logo {
    display: block;
    max-width: 112px;
    width: auto;
    height: 38px;
    object-fit: contain;
}

.app-company-title {
    max-width: 220px;
    color: var(--heading-color);
    font-size: .78rem;
    font-weight: 700;
    line-height: 1.1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.app-user-trigger {
    width: auto !important;
    min-width: 0;
    gap: 8px;
}

.app-user-avatar {
    display: inline-grid;
    place-items: center;
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--accent-color), transparent 78%);
    color: color-mix(in srgb, var(--accent-color), black 35%);
    font-weight: 800;
}

.app-user-copy {
    display: grid;
    line-height: 1.05;
    text-align: left;
}

.app-user-copy strong {
    max-width: 130px;
    color: var(--heading-color);
    font-size: .72rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.app-user-copy small {
    margin-top: 3px;
    color: var(--muted-color);
    font-size: .62rem;
}

.user-menu-header {
    display: grid;
    gap: 3px;
    padding: 12px 16px;
}

.user-menu-header span {
    color: var(--muted-color);
    font-size: .75rem;
}

.user-menu-footer form {
    margin: 0;
}

.app-foundation-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.app-foundation-grid > div {
    display: grid;
    grid-template-columns: 38px 1fr;
    column-gap: 10px;
    align-items: center;
    padding: 14px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-lg);
    background: color-mix(in srgb, var(--surface-color), var(--background-color) 22%);
}

.app-foundation-grid i {
    grid-row: 1 / 3;
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 10px;
    background: color-mix(in srgb, var(--accent-color), transparent 88%);
    color: var(--accent-color);
}

.app-foundation-grid strong {
    color: var(--heading-color);
    font-size: .84rem;
}

.app-foundation-grid span {
    color: var(--muted-color);
    font-size: .72rem;
}

.app-session-info dt {
    color: var(--muted-color);
    font-weight: 600;
}

.app-session-info dd {
    color: var(--heading-color);
    font-weight: 600;
}

.app-company-sections {
    display: grid;
    gap: 20px;
}

.app-company-sections section {
    --section-accent: var(--accent-color);
    position: relative;
    padding: 18px;
    border: 1px solid color-mix(in srgb, var(--section-accent), var(--border-color) 70%);
    border-left: 4px solid var(--section-accent);
    border-radius: var(--radius-lg);
    background: linear-gradient(135deg, color-mix(in srgb, var(--section-accent), transparent 94%), var(--surface-color) 52%);
}

.app-company-sections h5 {
    display: flex;
    align-items: center;
    margin: 0 0 15px;
    color: color-mix(in srgb, var(--section-accent), var(--heading-color) 42%);
    font-size: .9rem;
    font-weight: 800;
}

.company-section-general { --section-accent: var(--accent-color); }
.company-section-contact { --section-accent: #3b82f6; }
.company-section-billing { --section-accent: #8b5cf6; }
.company-section-retention { --section-accent: #f59e0b; }
.company-section-night { --section-accent: #64748b; }

.app-company-sections label {
    display: block;
    margin-bottom: 5px;
    color: var(--muted-color);
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
}

.app-readonly {
    min-height: 40px;
    padding: 9px 11px;
    border: 1px solid var(--input-border);
    border-radius: var(--radius-md);
    background: var(--input-bg);
    color: var(--default-color);
}


.brand-color-dot {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    border: 1px solid var(--border-color-dark);
}

.app-login-visual {
    background: linear-gradient(165deg, color-mix(in srgb, #0ea5a4, #0f172a 25%), color-mix(in srgb, #0ea5a4, #020617 55%));
}

@media (max-width: 920px) {
    .app-company-title,
    .app-user-copy {
        display: none;
    }

    .app-company-logo {
        max-width: 92px;
    }

    .app-foundation-grid {
        grid-template-columns: 1fr;
    }
}


/* Selector de tema: Claro / Oscuro / Sistema */
.app-theme-menu {
    min-width: 180px;
    padding: 6px;
}

.app-theme-menu .dropdown-item {
    display: flex;
    align-items: center;
    border-radius: 8px;
    font-size: .78rem;
}

.app-theme-menu .dropdown-item.active,
.app-theme-menu .dropdown-item:active {
    background: color-mix(in srgb, var(--accent-color), transparent 82%);
    color: var(--heading-color);
}

.fauth-brand-row {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
}

.fauth-brand-row .fauth-kicker {
    margin: 0;
    line-height: 1;
}

.fauth-brand-row + .fauth-visual-title {
    margin-top: 22px;
}

/* En dark mode las secciones siguen diferenciadas sin volverse estridentes. */
html[data-theme="dark"] .app-company-sections section {
    background: linear-gradient(135deg, color-mix(in srgb, var(--section-accent), transparent 91%), var(--surface-color) 62%);
}

/* ==============================================================
   Actualizaciones / Shadow Copy / FTP
   El estado de publicación es informativo y no bloquea el trabajo
   mientras los archivos se están copiando.
   ============================================================== */
.st-version-toast {
    position: fixed;
    right: 20px;
    bottom: 22px;
    z-index: 5000;
    width: min(410px, calc(100vw - 32px));
    padding: 14px 15px;
    border: 1px solid color-mix(in srgb, var(--accent-color), var(--border-color) 68%);
    border-radius: 14px;
    background: var(--surface-color);
    box-shadow: 0 18px 45px rgba(15, 23, 42, .18);
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--default-color);
}

.st-version-toast-icon {
    width: 38px;
    height: 38px;
    flex: 0 0 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 11px;
    background: color-mix(in srgb, var(--accent-color), transparent 84%);
    color: color-mix(in srgb, var(--accent-color), #111827 28%);
}

.st-version-toast-copy {
    min-width: 0;
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 2px;
}

.st-version-toast-copy strong {
    color: var(--heading-color);
    font-size: .76rem;
}

.st-version-toast-copy span {
    color: var(--muted-color);
    font-size: .67rem;
    line-height: 1.45;
}

.st-version-toast button {
    min-height: 34px;
    padding: 0 12px;
    border: 0;
    border-radius: 9px;
    background: var(--accent-color);
    color: var(--company-contrast, #18212b);
    font-size: .68rem;
    font-weight: 800;
    cursor: pointer;
    white-space: nowrap;
}

.st-version-toast button:hover {
    filter: brightness(.94);
}

.st-version-spinner {
    border: 3px solid color-mix(in srgb, var(--accent-color), transparent 72%);
    border-top-color: var(--accent-color);
    border-radius: 50%;
    background: transparent;
    animation: st-version-spin .85s linear infinite;
}

@keyframes st-version-spin {
    to { transform: rotate(360deg); }
}

html[data-theme="dark"] .st-version-toast {
    box-shadow: 0 18px 45px rgba(0, 0, 0, .34);
}

@media (max-width: 640px) {
    .st-version-toast {
        right: 12px;
        bottom: 12px;
        left: 12px;
        width: auto;
        align-items: flex-start;
        flex-wrap: wrap;
    }

    .st-version-toast button {
        margin-left: 50px;
    }
}

/* Existe para compatibilidad con el motor de actualización de EasyCRM.
   La versión actual del SaaS usa UpdateMode=notice y no lo activa. */
.st-update-lock {
    position: fixed;
    z-index: 2147483000;
    inset: 0;
    display: grid;
    place-items: center;
    padding: 20px;
    background: rgba(15, 23, 42, .48);
    backdrop-filter: blur(2px);
}

.st-update-lock-card {
    width: min(440px, calc(100vw - 32px));
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    padding: 28px 26px;
    border-radius: 18px;
    background: var(--surface-color);
    box-shadow: 0 28px 90px rgba(15, 23, 42, .32);
    text-align: center;
}

.st-update-lock-icon {
    width: 50px;
    height: 50px;
    display: grid;
    place-items: center;
    border-radius: 14px;
    background: color-mix(in srgb, var(--accent-color), transparent 84%);
    color: var(--accent-color);
}

.st-update-lock-card strong { color: var(--heading-color); }
.st-update-lock-card span { color: var(--muted-color); }
.st-update-lock-card button {
    min-height: 40px;
    margin-top: 6px;
    padding: 0 18px;
    border: 0;
    border-radius: 10px;
    background: var(--accent-color);
    color: var(--company-contrast, #18212b);
    font-weight: 800;
}
.st-update-critical-lock { overflow: hidden !important; }


/* ==============================================================
   0.1.4 - Identidad visual, menú real, soporte y autenticación
   ============================================================== */

/* Los logos corporativos y de autenticación conservan SIEMPRE su archivo original. */
html[data-theme="dark"] .app-company-logo,
html[data-theme="dark"] .operativa-company-logo,
html[data-theme="dark"] .header-logo img,
html[data-theme="dark"] .fauth-logo img,
html[data-theme="dark"] .auth-brand-logo img,
html[data-theme="dark"] .auth-logo img,
html[data-theme="dark"] .sidebar-logo-icon img,
.app-company-logo,
.operativa-company-logo {
    filter: none !important;
    opacity: 1 !important;
}

/* Mantener texto oscuro en selecciones de navegación con colores pastel de empresa. */
.sidebar .nav-item > .nav-link.active,
.sidebar .nav-submenu > li > .nav-link.active,
.sidebar .nav-item.has-submenu.open > .nav-link,
.sidebar .nav-item.has-submenu.open > .nav-link .nav-icon,
.sidebar .nav-item.has-submenu.open > .nav-link .nav-arrow {
    color: #18212b !important;
}

.sidebar .nav-heading {
    padding-top: 14px;
    padding-bottom: 5px;
}

.sidebar .nav-heading:first-child {
    padding-top: 5px;
}

.sidebar .nav-heading::after {
    opacity: .9;
}

/* Botón Soporte global de topbar. */
.app-support-button {
    width: auto !important;
    min-width: 88px;
    padding: 0 10px !important;
    gap: 6px;
    font-size: .72rem;
    font-weight: 700;
}

.app-support-button span {
    white-space: nowrap;
}

.app-support-modal .modal-dialog {
    width: min(560px, calc(100vw - 24px));
}

.app-support-modal .modal-content {
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 16px;
    background: var(--surface-color);
    box-shadow: 0 24px 70px rgba(15, 23, 42, .22);
}

.app-support-head {
    padding: 14px 16px;
    border-bottom: 1px solid var(--border-color);
    background: color-mix(in srgb, var(--accent-color), var(--surface-color) 91%);
}

.app-support-title-row {
    display: flex;
    align-items: center;
    gap: 10px;
}

.app-support-avatar {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 11px;
    background: var(--accent-color);
    color: var(--company-contrast, #18212b);
}

.app-support-head .modal-title {
    margin: 0;
    color: var(--heading-color);
    font-size: .88rem;
    font-weight: 800;
}

.app-support-status {
    display: flex;
    align-items: center;
    gap: 5px;
    margin-top: 2px;
    color: var(--muted-color);
    font-size: .65rem;
}

.app-support-status i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #22c55e;
}

.app-support-body {
    height: min(420px, 55vh);
    padding: 16px;
    overflow-y: auto;
    background: color-mix(in srgb, var(--background-color), var(--surface-color) 35%);
}

.app-support-message {
    width: fit-content;
    max-width: 82%;
    margin-bottom: 10px;
    padding: 9px 11px 7px;
    border: 1px solid var(--border-color);
    border-radius: 13px 13px 13px 4px;
    background: var(--surface-color);
}

.app-support-message.user {
    margin-left: auto;
    border-color: color-mix(in srgb, var(--accent-color), var(--border-color) 55%);
    border-radius: 13px 13px 4px 13px;
    background: color-mix(in srgb, var(--accent-color), var(--surface-color) 84%);
}

.app-support-message span {
    display: block;
    margin-bottom: 2px;
    color: var(--heading-color);
    font-size: .62rem;
    font-weight: 800;
}

.app-support-message p {
    margin: 0;
    color: var(--default-color);
    font-size: .76rem;
    line-height: 1.45;
    white-space: pre-wrap;
}

.app-support-message small {
    display: block;
    margin-top: 4px;
    color: var(--muted-color);
    font-size: .58rem;
    text-align: right;
}

.app-support-composer {
    display: grid;
    grid-template-columns: 1fr 42px;
    gap: 8px;
    padding: 11px 12px;
    border-top: 1px solid var(--border-color);
    background: var(--surface-color);
}

.app-support-composer textarea {
    min-height: 40px;
    max-height: 110px;
    resize: none;
}

.app-support-send {
    width: 42px;
    height: 40px;
    padding: 0 !important;
    align-self: end;
}

/* Autenticación completa: gris neutro + blanco, independiente del branding de las empresas. */
body.app-auth-body {
    --auth-primary: #646A73;
    --auth-primary-dark: #484E56;
    --auth-primary-soft: #E9EBEE;
    --auth-primary-softer: #F7F8F9;
    --accent-color: var(--auth-primary) !important;
    --input-focus-ring: rgba(100, 106, 115, .22) !important;
}

body.app-auth-body .app-login-visual {
    background:
        radial-gradient(circle at 12% 8%, rgba(255, 255, 255, .24), transparent 34%),
        linear-gradient(145deg, #8B9198 0%, #71777F 40%, #575D65 72%, #3F444B 100%) !important;
}

body.app-auth-body .fauth-logo {
    width: fit-content;
    padding: 7px 10px;
    border-radius: 10px;
    background: rgba(255, 255, 255, .96);
    color: #32363B !important;
    box-shadow: 0 8px 22px rgba(18, 22, 27, .18);
}

body.app-auth-body .fauth-logo img,
html[data-theme="dark"] body.app-auth-body .fauth-logo img {
    filter: none !important;
    opacity: 1 !important;
}

body.app-auth-body .fauth-kicker {
    border-color: rgba(255, 255, 255, .44);
    background: rgba(255, 255, 255, .14);
    color: #fff;
}

body.app-auth-body .fauth-point i {
    color: #F4F5F6;
}

body.app-auth-body .btn-primary {
    --bs-btn-bg: var(--auth-primary);
    --bs-btn-border-color: var(--auth-primary);
    --bs-btn-hover-bg: var(--auth-primary-dark);
    --bs-btn-hover-border-color: var(--auth-primary-dark);
    --bs-btn-active-bg: #383D43;
    --bs-btn-active-border-color: #383D43;
    --bs-btn-color: #fff !important;
    --bs-btn-hover-color: #fff !important;
    --bs-btn-active-color: #fff !important;
    color: #fff !important;
}

body.app-auth-body .form-control:focus,
body.app-auth-body .form-select:focus {
    border-color: var(--auth-primary) !important;
    box-shadow: 0 0 0 .18rem var(--input-focus-ring) !important;
}

body.app-auth-body .form-check-input:checked {
    border-color: var(--auth-primary) !important;
    background-color: var(--auth-primary) !important;
}

body.app-auth-body a:not(.btn) {
    color: var(--auth-primary-dark);
}

body.app-auth-body .fauth-card {
    border-top: 3px solid var(--auth-primary);
}

html[data-theme="dark"] body.app-auth-body .fauth-card {
    border-top-color: #AEB4BB;
}

@media (max-width: 780px) {
    .app-support-button {
        min-width: 40px;
        padding: 0 !important;
    }

    .app-support-button span {
        display: none;
    }
}


/* Version visible en todas las superficies principales. La fuente real es Directory.Build.props. */
.app-version-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 30px;
    padding: 0 9px;
    border: 1px solid var(--border-color);
    border-radius: 999px;
    background: color-mix(in srgb, var(--surface-color), var(--background-color) 32%);
    color: var(--muted-color);
    font-family: "JetBrains Mono", monospace;
    font-size: .64rem;
    font-weight: 700;
    letter-spacing: .02em;
    white-space: nowrap;
    user-select: none;
}

html[data-theme="dark"] .app-version-chip {
    background: color-mix(in srgb, var(--surface-color), #000 12%);
    color: #c7cbd1;
}

.app-version-chip-operativa {
    min-height: 28px;
    padding-inline: 8px;
}

.app-auth-version {
    position: fixed;
    right: 18px;
    bottom: 14px;
    z-index: 20;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 6px 9px;
    border: 1px solid rgba(255, 255, 255, .58);
    border-radius: 999px;
    background: rgba(255, 255, 255, .86);
    color: #565c63;
    box-shadow: 0 8px 24px rgba(27, 31, 36, .08);
    backdrop-filter: blur(8px);
    font-size: .65rem;
    line-height: 1;
    user-select: none;
}

.app-auth-version strong {
    color: #30343a;
    font-family: "JetBrains Mono", monospace;
    font-weight: 700;
}

html[data-theme="dark"] .app-auth-version {
    border-color: rgba(255, 255, 255, .12);
    background: rgba(39, 43, 48, .88);
    color: #c6c9ce;
}

html[data-theme="dark"] .app-auth-version strong {
    color: #f2f3f5;
}

@media (max-width: 780px) {
    .app-version-chip {
        min-height: 27px;
        padding-inline: 7px;
        font-size: .59rem;
    }

    .app-auth-version {
        right: 10px;
        bottom: 10px;
    }

    .app-auth-version span {
        display: none;
    }
}

/* ==============================================================
   0.1.10 - Footer de versión, perfil rojo, auth violeta y modales
   ============================================================== */

body.modal-open {
    overflow: hidden !important;
    padding-right: 0 !important;
}

.modal {
    overscroll-behavior: contain;
}

.user-menu {
    min-width: 220px;
    padding-block: 8px;
}

.user-menu-item {
    display: flex;
    align-items: center;
    padding-top: 9px;
    padding-bottom: 9px;
    color: var(--default-color);
    font-weight: 700;
}

.user-menu-item i {
    color: inherit;
}

.user-menu-item-danger {
    color: #dc3545 !important;
}

.user-menu-item-danger i {
    color: #dc3545 !important;
}

.user-menu-item-danger:hover,
.user-menu-item-danger:focus,
.user-menu-item-danger:active {
    background: rgba(220, 53, 69, .14) !important;
    color: #b4232f !important;
}

.user-menu-item-danger:hover i,
.user-menu-item-danger:focus i,
.user-menu-item-danger:active i {
    color: #b4232f !important;
}

.sidebar {
    display: flex;
    flex-direction: column;
}

.sidebar-nav {
    flex: 1 1 auto;
    min-height: 0;
}

.sidebar-footer-version {
    margin-top: auto;
    padding: 12px;
    border-top: 1px solid var(--border-color);
    background: color-mix(in srgb, var(--surface-color), var(--background-color) 16%);
}

.sidebar-version-card {
    display: grid;
    gap: 4px;
    padding: 12px 14px;
    border: 1px solid color-mix(in srgb, var(--accent-color), var(--border-color) 55%);
    border-radius: 16px;
    background: color-mix(in srgb, var(--accent-color), var(--surface-color) 90%);
}

.sidebar-version-label {
    color: var(--muted-color);
    font-size: .65rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .06em;
}

.sidebar-version-value {
    color: var(--heading-color);
    font-family: "JetBrains Mono", monospace;
    font-size: .96rem;
    font-weight: 800;
}

.sidebar-version-link {
    color: var(--default-color);
    font-size: .72rem;
    font-weight: 700;
    text-decoration: none;
}

.sidebar-version-link:hover {
    color: var(--heading-color);
    text-decoration: underline;
}

body.app-auth-body {
    --auth-primary: #8164F6;
    --auth-primary-dark: #5D40D6;
    --auth-primary-soft: #EEE9FF;
    --auth-primary-softer: #F7F4FF;
    --accent-color: var(--auth-primary) !important;
    --input-focus-ring: rgba(129, 100, 246, .24) !important;
}

body.app-auth-body .app-login-visual {
    background:
        radial-gradient(circle at 15% 10%, rgba(255, 255, 255, .20), transparent 34%),
        radial-gradient(circle at 95% 20%, rgba(255, 255, 255, .10), transparent 18%),
        linear-gradient(145deg, #D8CCFF 0%, #BDA7FF 28%, #9370F8 60%, #6544CF 100%) !important;
}

html[data-theme="dark"] body.app-auth-body .app-login-visual {
    background:
        radial-gradient(circle at 15% 10%, rgba(255, 255, 255, .10), transparent 34%),
        radial-gradient(circle at 92% 18%, rgba(181, 164, 255, .18), transparent 24%),
        linear-gradient(145deg, #2D215A 0%, #3B2A78 26%, #4F33A0 60%, #2A1D58 100%) !important;
}

body.app-auth-body .fauth-logo {
    color: #352a63 !important;
}

body.app-auth-body .fauth-point i {
    color: #F6F3FF;
}

body.app-auth-body .btn-primary {
    --bs-btn-bg: var(--auth-primary);
    --bs-btn-border-color: var(--auth-primary);
    --bs-btn-hover-bg: var(--auth-primary-dark);
    --bs-btn-hover-border-color: var(--auth-primary-dark);
    --bs-btn-active-bg: #4B2FC2;
    --bs-btn-active-border-color: #4B2FC2;
}

body.app-auth-body .form-control:focus,
body.app-auth-body .form-select:focus {
    border-color: var(--auth-primary) !important;
    box-shadow: 0 0 0 .18rem var(--input-focus-ring) !important;
}

body.app-auth-body .form-check-input:checked {
    border-color: var(--auth-primary) !important;
    background-color: var(--auth-primary) !important;
}

body.app-auth-body a:not(.btn) {
    color: var(--auth-primary-dark);
}

body.app-auth-body .fauth-card {
    border-top: 3px solid var(--auth-primary);
}

html[data-theme="dark"] body.app-auth-body .fauth-card {
    border-top-color: #9D87FF;
}

.app-auth-left-version {
    position: fixed;
    left: 24px;
    bottom: 20px;
    z-index: 25;
    display: inline-flex;
    flex-direction: column;
    gap: 4px;
    min-width: 220px;
    padding: 12px 14px;
    border: 1px solid rgba(255, 255, 255, .30);
    border-radius: 16px;
    background: rgba(255, 255, 255, .12);
    color: #F7F5FF;
    backdrop-filter: blur(10px);
    box-shadow: 0 12px 34px rgba(38, 22, 88, .18);
    user-select: none;
}

.app-auth-left-version-label {
    font-size: .68rem;
    font-weight: 700;
    opacity: .9;
}

.app-auth-left-version strong {
    font-family: "JetBrains Mono", monospace;
    font-size: 1rem;
    font-weight: 800;
    color: #fff;
}

.app-auth-credit {
    position: fixed;
    right: 18px;
    bottom: 14px;
    z-index: 24;
    display: inline-flex;
    align-items: center;
    padding: 7px 11px;
    border: 1px solid color-mix(in srgb, var(--border-color), transparent 15%);
    border-radius: 999px;
    background: color-mix(in srgb, var(--surface-color), var(--background-color) 22%);
    color: var(--muted-color);
    font-size: .68rem;
    font-weight: 700;
    text-decoration: none;
    box-shadow: 0 8px 24px rgba(15, 23, 42, .08);
}

.app-auth-credit:hover {
    color: var(--heading-color);
    text-decoration: underline;
}

html[data-theme="dark"] .app-auth-credit {
    background: rgba(17, 24, 39, .82);
    color: #cfd5de;
    border-color: rgba(255, 255, 255, .10);
}

@media (max-width: 1100px) {
    .app-auth-left-version {
        left: 16px;
        bottom: 16px;
    }
}

@media (max-width: 780px) {
    .app-auth-left-version {
        position: static;
        width: calc(100% - 24px);
        margin: 0 12px 12px;
    }

    .app-auth-credit {
        right: 10px;
        bottom: 10px;
        font-size: .63rem;
    }
}

/* ==============================================================
   Ajustes puntuales posteriores a 0.1.10
   ============================================================== */

/* El contraste del item activo depende de la empresa:
   Logística (amarillo) usa texto oscuro; SIAC (teal) usa blanco. */
html[data-company-id="1"] .sidebar .nav-item > .nav-link.active,
html[data-company-id="1"] .sidebar .nav-item > .nav-link.active .nav-icon,
html[data-company-id="1"] .sidebar .nav-item > .nav-link.active .nav-arrow,
html[data-company-id="1"] .sidebar .nav-item > .nav-link.active .nav-badge,
html[data-company-id="1"] .sidebar .nav-item > .nav-link.active .nav-badge-soft {
    color: #18212b !important;
}

html[data-company-id="2"] .sidebar .nav-item > .nav-link.active,
html[data-company-id="2"] .sidebar .nav-item > .nav-link.active .nav-icon,
html[data-company-id="2"] .sidebar .nav-item > .nav-link.active .nav-arrow,
html[data-company-id="2"] .sidebar .nav-item > .nav-link.active .nav-badge,
html[data-company-id="2"] .sidebar .nav-item > .nav-link.active .nav-badge-soft {
    color: #ffffff !important;
}

html[data-company-id="2"] .sidebar .nav-item > .nav-link.active .nav-icon,
html[data-company-id="2"] .sidebar .nav-item > .nav-link.active .nav-badge,
html[data-company-id="2"] .sidebar .nav-item > .nav-link.active .nav-badge-soft {
    background: rgba(255, 255, 255, .18) !important;
}

html[data-company-id="2"] .sidebar .nav-submenu > li > .nav-link.active {
    background: var(--accent-color) !important;
    color: #ffffff !important;
}

html[data-company-id="1"] .sidebar .nav-submenu > li > .nav-link.active {
    background: var(--accent-color) !important;
    color: #18212b !important;
}

/* Dark propio de Logística: reemplaza la base verdosa/teal del template
   por superficies carbón cálidas y acentos amarillos. Los colores semánticos
   (éxito, error, warning, info) se mantienen independientes. */
html[data-theme="dark"][data-company-id="1"] {
    --accent-color: #FFD725 !important;
    --company-contrast: #18212b !important;
    --background-color: #15140f;
    --surface-color: #211f17;
    --default-color: #eee9d8;
    --heading-color: #fffdf3;
    --muted-color: #bdb59b;
    --light-color: #8f876d;
    --border-color: #4a4324;
    --border-color-light: #302c1b;
    --border-color-dark: #675d2a;
    --header-bg: rgba(31, 29, 20, .94);
    --header-border: #4a4324;
    --header-shadow: 0 1px 0 rgba(255, 215, 37, .12);
    --sidebar-bg: #11100c;
    --sidebar-border: #403a21;
    --sidebar-color: #eee8cf;
    --sidebar-muted-color: #a9a084;
    --sidebar-hover-bg: rgba(255, 215, 37, .10);
    --sidebar-active-bg: rgba(255, 215, 37, .18);
    --sidebar-active-color: #18212b;
    --card-bg: #211f17;
    --card-border: #4a4324;
    --table-header-bg: #262318;
    --table-hover-bg: #2e2a1b;
    --table-stripe-bg: #242116;
    --input-bg: #191811;
    --input-border: #4a4324;
    --input-focus-border: #FFD725;
    --input-focus-ring: rgba(255, 215, 37, .22);
}

html[data-theme="dark"][data-company-id="1"] .header,
html[data-theme="dark"][data-company-id="1"] .sidebar,
html[data-theme="dark"][data-company-id="1"] .card,
html[data-theme="dark"][data-company-id="1"] .dropdown-menu,
html[data-theme="dark"][data-company-id="1"] .modal-content {
    border-color: var(--border-color);
}

html[data-theme="dark"][data-company-id="1"] .sidebar .nav-icon,
html[data-theme="dark"][data-company-id="1"] .app-user-avatar,
html[data-theme="dark"][data-company-id="1"] .app-foundation-grid i {
    background: rgba(255, 215, 37, .10) !important;
    color: #FFD725 !important;
}

html[data-theme="dark"][data-company-id="1"] .sidebar .nav-item > .nav-link.active .nav-icon {
    background: rgba(24, 33, 43, .12) !important;
    color: #18212b !important;
}

html[data-theme="dark"][data-company-id="1"] .sidebar .nav-item > .nav-link.active {
    background: linear-gradient(135deg, #FFD725, #E7BE00) !important;
    color: #18212b !important;
    box-shadow: 0 12px 20px -14px rgba(255, 215, 37, .5) !important;
}

html[data-theme="dark"][data-company-id="1"] .sidebar .nav-heading,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-arrow,
html[data-theme="dark"][data-company-id="1"] .sidebar-version-link {
    color: #bdb59b;
}

/* Versión: texto simple, sin etiqueta "Versión actual" y sin badge corporativo. */
.sidebar-footer-version {
    padding: 12px 16px 14px !important;
    background: transparent !important;
}

.sidebar-version-plain {
    display: grid;
    gap: 2px;
    padding: 0;
    border: 0;
    background: transparent;
}

.sidebar-version-value {
    color: #111827;
    font-family: "JetBrains Mono", monospace;
    font-size: .82rem;
    font-weight: 800;
    line-height: 1.25;
}

.sidebar-version-link {
    color: #374151;
    font-size: .68rem;
    font-weight: 650;
    line-height: 1.25;
    text-decoration: none;
    white-space: nowrap;
}

.sidebar-version-link:hover {
    color: #111827;
    text-decoration: underline;
}

html[data-theme="dark"] .sidebar-version-value {
    color: #f8fafc;
}

html[data-theme="dark"] .sidebar-version-link {
    color: #cbd5e1;
}

/* Login/autenticación: icono genérico de ambulancia y metadatos simples. */
.fauth-ambulance-mark {
    display: inline-grid;
    place-items: center;
    width: 30px;
    height: 30px;
    border-radius: 8px;
    background: #f4f1ff;
    color: #6048ca;
    font-size: 1rem;
}

.app-auth-left-meta {
    position: fixed;
    left: 24px;
    bottom: 20px;
    z-index: 25;
    display: grid;
    gap: 2px;
    padding: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
}

.app-auth-left-meta .app-auth-left-version {
    position: static;
    display: block;
    min-width: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    color: #111111;
    font-family: "JetBrains Mono", monospace;
    font-size: .82rem;
    font-weight: 800;
    line-height: 1.25;
}

.app-auth-left-credit {
    color: #111111 !important;
    font-size: .68rem;
    font-weight: 700;
    line-height: 1.25;
    text-decoration: none;
}

.app-auth-left-credit:hover {
    color: #000000 !important;
    text-decoration: underline;
}

html[data-theme="dark"] .app-auth-left-meta .app-auth-left-version,
html[data-theme="dark"] .app-auth-left-credit {
    color: #f4f0ff !important;
}

@media (max-width: 780px) {
    .app-auth-left-meta {
        position: static;
        margin: 0 16px 14px;
    }
}

/* v0.1.11 - el icono genérico de autenticación usa SVG local y ya no depende de Font Awesome. */
.fauth-ambulance-mark img {
    width: 20px;
    height: 20px;
    display: block;
    object-fit: contain;
}

/* ==============================================================
   0.1.12 - legibilidad dark, SIAC light, auth y metadatos
   ============================================================== */

/* SIAC: verde institucional más sobrio en modo claro. En dark se conserva
   el teal luminoso para mantener contraste sobre superficies oscuras. */
html:not([data-theme="dark"])[data-company-id="2"] {
    --accent-color: #144d37 !important;
    --company-contrast: #ffffff !important;
    --sidebar-hover-bg: rgba(20, 77, 55, .10) !important;
    --sidebar-active-bg: rgba(20, 77, 55, .16) !important;
    --input-focus-ring: rgba(20, 77, 55, .22) !important;
}

html[data-theme="dark"][data-company-id="2"] {
    --accent-color: #0C9594 !important;
    --company-contrast: #ffffff !important;
    --sidebar-hover-bg: rgba(12, 149, 148, .14) !important;
    --sidebar-active-bg: rgba(12, 149, 148, .20) !important;
    --input-focus-ring: rgba(12, 149, 148, .24) !important;
}

/* Los padres desplegados y sus hijos nunca deben heredar texto oscuro en dark. */
html[data-theme="dark"] .sidebar .nav-item.has-submenu.open > .nav-link,
html[data-theme="dark"] .sidebar .nav-item.has-submenu.open > .nav-link .nav-text,
html[data-theme="dark"] .sidebar .nav-item.has-submenu.open > .nav-link .nav-icon,
html[data-theme="dark"] .sidebar .nav-item.has-submenu.open > .nav-link .nav-arrow {
    color: #f1f5f9 !important;
}

html[data-theme="dark"] .sidebar .nav-submenu > li > .nav-link {
    color: #c9d4df !important;
}

html[data-theme="dark"] .sidebar .nav-submenu > li > .nav-link:hover,
html[data-theme="dark"] .sidebar .nav-submenu > li > .nav-link:focus {
    color: #ffffff !important;
}

html[data-theme="dark"] .sidebar .nav-submenu .nav-dot {
    border-color: #7f95a8 !important;
}

/* Se preserva el contraste específico cuando una subopción esté activa. */
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-submenu > li > .nav-link.active {
    background: #FFD725 !important;
    color: #18212b !important;
}

html[data-theme="dark"][data-company-id="2"] .sidebar .nav-submenu > li > .nav-link.active {
    background: #0C9594 !important;
    color: #ffffff !important;
}

/* Footer compacto: sólo la versión y la autoría, sin badge. */
.sidebar-footer-version {
    padding: 8px 16px 10px !important;
}

.sidebar-version-plain {
    gap: 1px !important;
}

.sidebar-version-value {
    font-size: .68rem !important;
    line-height: 1.15 !important;
}

.sidebar-version-credit {
    color: var(--muted-color);
    font-size: .58rem;
    font-weight: 500;
    line-height: 1.15;
    white-space: nowrap;
}

.sidebar-version-link {
    color: inherit !important;
    font-size: inherit !important;
    font-weight: 800 !important;
    text-decoration: none !important;
}

.sidebar-version-link:hover {
    color: var(--heading-color) !important;
    text-decoration: underline !important;
}

html[data-theme="dark"] .sidebar-version-credit {
    color: #b8c4d0;
}

html[data-theme="dark"][data-company-id="1"] .sidebar-version-credit {
    color: #bdb59b;
}

/* Login claro: violeta con presencia, sin la zona superior lavada/blanca. */
body.app-auth-body .app-login-visual {
    background:
        radial-gradient(circle at 90% 8%, rgba(255, 255, 255, .10), transparent 25%),
        radial-gradient(circle at 4% 94%, rgba(77, 46, 169, .22), transparent 28%),
        linear-gradient(145deg, #8E70F7 0%, #7957EA 32%, #6842D7 67%, #4C2EA8 100%) !important;
}

/* Dark conserva su variante violeta propia. */
html[data-theme="dark"] body.app-auth-body .app-login-visual {
    background:
        radial-gradient(circle at 15% 10%, rgba(255, 255, 255, .10), transparent 34%),
        radial-gradient(circle at 92% 18%, rgba(181, 164, 255, .18), transparent 24%),
        linear-gradient(145deg, #2D215A 0%, #3B2A78 26%, #4F33A0 60%, #2A1D58 100%) !important;
}

.app-auth-left-meta {
    gap: 1px !important;
}

.app-auth-left-meta .app-auth-left-version {
    font-size: .68rem !important;
    line-height: 1.15 !important;
}

.app-auth-left-credit {
    color: #151225 !important;
    font-size: .58rem !important;
    font-weight: 500 !important;
    line-height: 1.15 !important;
    white-space: nowrap;
}

.app-auth-left-credit a {
    color: inherit !important;
    font-weight: 800 !important;
    text-decoration: none !important;
}

.app-auth-left-credit a:hover {
    color: #000000 !important;
    text-decoration: underline !important;
}

html[data-theme="dark"] .app-auth-left-credit,
html[data-theme="dark"] .app-auth-left-credit a {
    color: #f4f0ff !important;
}

/* Un solo scroll de viewport cuando hay modal. Bootstrap bloquea body; también
   bloqueamos html porque en Operativa el documento completo es el scroller. */
html.app-modal-open-root {
    overflow: hidden !important;
}

html.app-modal-open-root body,
html.app-modal-open-root body.modal-open {
    overflow: hidden !important;
    padding-right: 0 !important;
}

/* El modal de soporte entra completo en desktop: evitamos que el propio overlay
   dibuje otra barra vertical. En alturas pequeñas recupera scroll interno. */
.app-support-modal {
    overflow-y: hidden !important;
}

@media (max-height: 620px) {
    .app-support-modal {
        overflow-y: auto !important;
    }
}

/* ==============================================================
   0.1.14 - dark neutro y apertura de modal sin salto de layout
   ============================================================== */

/* Reserva permanente del gutter del viewport: abrir un modal no desplaza el contenido. */
html {
    scrollbar-gutter: stable;
}

html.app-modal-open-root {
    overflow: hidden !important;
    scrollbar-gutter: stable !important;
}

html.app-modal-open-root body,
html.app-modal-open-root body.modal-open {
    overflow: hidden !important;
    padding-right: 0 !important;
}

/* Base dark neutra común a ambas empresas. */
html[data-theme="dark"] {
    --background-color: #171b1f !important;
    --surface-color: #1d2228 !important;
    --border-color: #353c44 !important;
    --border-color-light: #2a3037 !important;
    --border-color-dark: #46505a !important;
}

/* Logística mantiene amarillo corporativo en dark; SIAC conserva teal. */
html[data-theme="dark"][data-company-id="1"] {
    --accent-color: #FFD725 !important;
    --company-contrast: #18212b !important;
    --sidebar-hover-bg: rgba(255, 215, 37, .11) !important;
    --sidebar-active-bg: rgba(255, 215, 37, .18) !important;
    --input-focus-ring: rgba(255, 215, 37, .24) !important;
}

html[data-theme="dark"][data-company-id="2"] {
    --accent-color: #0C9594 !important;
    --company-contrast: #ffffff !important;
    --sidebar-hover-bg: rgba(12, 149, 148, .14) !important;
    --sidebar-active-bg: rgba(12, 149, 148, .20) !important;
    --input-focus-ring: rgba(12, 149, 148, .24) !important;
}

/* ==============================================================
   0.1.17 - bloqueo de pantalla + páginas en construcción
   ============================================================== */

.user-menu-lock-form {
    margin: 0;
}

.user-menu-item-lock {
    color: color-mix(in srgb, var(--accent-color), #18212b 24%) !important;
}

.user-menu-item-lock i {
    color: var(--accent-color) !important;
}

.user-menu-item-lock:hover,
.user-menu-item-lock:focus,
.user-menu-item-lock:active {
    background: color-mix(in srgb, var(--accent-color), transparent 86%) !important;
    color: var(--heading-color) !important;
}

html[data-theme="dark"] .user-menu-item-lock {
    color: color-mix(in srgb, var(--accent-color), white 28%) !important;
}

/* Página de módulo en construcción basada en la composición Maintenance del template,
   pero integrada al layout, assets y branding actuales del sistema. */
.app-construction-page {
    position: relative;
    min-height: calc(100vh - var(--header-height) - 48px);
    display: grid;
    place-items: center;
    overflow: hidden;
    padding: 32px 18px;
    border: 1px solid var(--border-color-light);
    border-radius: 18px;
    background:
        radial-gradient(circle at 8% 12%, color-mix(in srgb, var(--accent-color), transparent 84%), transparent 28%),
        radial-gradient(circle at 92% 88%, color-mix(in srgb, var(--accent-color), transparent 90%), transparent 30%),
        color-mix(in srgb, var(--background-color), var(--surface-color) 28%);
}

.app-construction-shape {
    position: absolute;
    width: 250px;
    height: 250px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--accent-color), transparent 91%);
    filter: blur(1px);
    pointer-events: none;
}

.app-construction-shape-a {
    top: -120px;
    left: -70px;
}

.app-construction-shape-b {
    right: -90px;
    bottom: -130px;
}

.app-construction-card {
    position: relative;
    z-index: 1;
    width: min(610px, 100%);
    padding: 34px;
    border: 1px solid var(--border-color);
    border-top: 4px solid var(--accent-color);
    border-radius: 18px;
    background: var(--surface-color);
    box-shadow: 0 24px 60px rgba(15, 23, 42, .12);
    text-align: center;
}

.app-construction-kicker {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    margin-bottom: 14px;
    padding: 0 11px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--accent-color), transparent 86%);
    color: color-mix(in srgb, var(--accent-color), #18212b 26%);
    font-size: .7rem;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
}

.app-construction-icon {
    width: 70px;
    height: 70px;
    display: grid;
    place-items: center;
    margin: 0 auto 18px;
    border-radius: 20px;
    background: var(--accent-color);
    color: var(--company-contrast);
    box-shadow: 0 14px 30px color-mix(in srgb, var(--accent-color), transparent 70%);
}

.app-construction-icon i {
    font-size: 1.8rem;
}

.app-construction-card h1 {
    margin: 0 0 9px;
    color: var(--heading-color);
    font-size: clamp(1.55rem, 3vw, 2rem);
    font-weight: 800;
}

.app-construction-card > p {
    max-width: 490px;
    margin: 0 auto 22px;
    color: var(--muted-color);
    font-size: .86rem;
    line-height: 1.65;
}

.app-construction-steps {
    display: grid;
    gap: 8px;
    margin: 0 0 24px;
    text-align: left;
}

.app-construction-steps > div {
    min-height: 42px;
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr);
    align-items: center;
    gap: 9px;
    padding: 8px 12px;
    border: 1px solid var(--border-color-light);
    border-radius: 11px;
    background: color-mix(in srgb, var(--surface-color), var(--background-color) 24%);
    color: var(--default-color);
    font-size: .78rem;
    font-weight: 650;
}

.app-construction-steps i {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border-radius: 8px;
}

.app-construction-steps .done i {
    background: rgba(25, 135, 84, .11);
    color: #198754;
}

.app-construction-steps .active {
    border-color: color-mix(in srgb, var(--accent-color), transparent 60%);
    background: color-mix(in srgb, var(--accent-color), transparent 93%);
}

.app-construction-steps .active i {
    background: var(--accent-color);
    color: var(--company-contrast);
}

.app-construction-back {
    min-width: 160px;
    font-weight: 750;
}

html[data-theme="dark"] .app-construction-card {
    box-shadow: 0 28px 72px rgba(0, 0, 0, .30);
}

html[data-theme="dark"] .app-construction-kicker {
    color: color-mix(in srgb, var(--accent-color), white 24%);
}

/* Pantalla de bloqueo: sin menú ni navegación lateral, conservando empresa y tema. */
.app-lock-body {
    min-height: 100vh;
    margin: 0;
    background:
        radial-gradient(circle at 12% 12%, color-mix(in srgb, var(--accent-color), transparent 78%), transparent 30%),
        radial-gradient(circle at 88% 88%, color-mix(in srgb, var(--accent-color), transparent 88%), transparent 32%),
        var(--background-color);
    color: var(--default-color);
}

.app-lock-shell {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: 22px;
}

.app-lock-panel {
    width: min(430px, 100%);
    padding: 28px;
    border: 1px solid var(--border-color);
    border-top: 4px solid var(--accent-color);
    border-radius: 18px;
    background: color-mix(in srgb, var(--surface-color), transparent 1%);
    box-shadow: 0 24px 60px rgba(15, 23, 42, .15);
    text-align: center;
}

.app-lock-brand {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-bottom: 22px;
}

.app-lock-brand img {
    max-width: 105px;
    height: 38px;
    object-fit: contain;
}

.app-lock-brand div {
    display: grid;
    gap: 2px;
    text-align: left;
}

.app-lock-brand strong {
    color: var(--heading-color);
    font-size: .76rem;
}

.app-lock-brand span {
    color: var(--muted-color);
    font-size: .64rem;
}

.app-lock-icon {
    width: 58px;
    height: 58px;
    display: grid;
    place-items: center;
    margin: 0 auto -20px;
    border-radius: 17px;
    background: var(--accent-color);
    color: var(--company-contrast);
    font-size: 1.45rem;
    box-shadow: 0 12px 28px color-mix(in srgb, var(--accent-color), transparent 68%);
}

.app-lock-user-avatar {
    width: 76px;
    height: 76px;
    display: grid;
    place-items: center;
    margin: 34px auto 12px;
    border: 4px solid var(--surface-color);
    border-radius: 50%;
    background: color-mix(in srgb, var(--accent-color), transparent 80%);
    color: color-mix(in srgb, var(--accent-color), #18212b 24%);
    box-shadow: 0 0 0 1px var(--border-color);
    font-size: 1.55rem;
    font-weight: 850;
}

.app-lock-panel h1 {
    margin: 0 0 4px;
    color: var(--heading-color);
    font-size: 1.45rem;
    font-weight: 800;
}

.app-lock-user {
    margin: 0;
    color: var(--heading-color);
    font-size: .83rem;
    font-weight: 750;
}

.app-lock-copy {
    margin: 7px 0 20px;
    color: var(--muted-color);
    font-size: .76rem;
}

.app-lock-form {
    text-align: left;
}

.app-lock-form .form-label {
    color: var(--heading-color);
    font-size: .72rem;
    font-weight: 750;
}

.app-lock-password {
    position: relative;
    margin-bottom: 12px;
}

.app-lock-password > i {
    position: absolute;
    top: 50%;
    left: 13px;
    z-index: 2;
    transform: translateY(-50%);
    color: var(--muted-color);
}

.app-lock-password .form-control {
    height: 46px;
    padding-left: 39px;
}

.app-lock-form .btn-primary {
    min-height: 44px;
    font-weight: 800;
}

.app-lock-validation {
    margin-bottom: 8px;
    font-size: .72rem;
}

.app-lock-logout {
    margin-top: 8px;
}

.app-lock-logout .btn-link {
    color: var(--muted-color);
    font-size: .72rem;
    font-weight: 700;
    text-decoration: none;
}

.app-lock-logout .btn-link:hover {
    color: var(--danger-color);
}

.app-lock-meta {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin-top: 20px;
    padding-top: 14px;
    border-top: 1px solid var(--border-color-light);
    color: var(--muted-color);
    font-size: .59rem;
}

.app-lock-meta a {
    color: inherit;
    font-weight: 800;
    text-decoration: none;
}

html[data-theme="dark"] .app-lock-panel {
    box-shadow: 0 28px 72px rgba(0, 0, 0, .34);
}

html[data-theme="dark"] .app-lock-user-avatar {
    color: color-mix(in srgb, var(--accent-color), white 24%);
}

@media (max-width: 560px) {
    .app-construction-page {
        min-height: calc(100vh - var(--header-height) - 28px);
        padding: 20px 10px;
        border-radius: 14px;
    }

    .app-construction-card,
    .app-lock-panel {
        padding: 24px 18px;
    }

    .app-lock-meta {
        display: grid;
        justify-content: center;
        text-align: center;
    }
}


/* ==============================================================
   0.1.18 - dark neutro definitivo + branding Logística + sesión
   ============================================================== */

/* En dark la estructura base deja de heredar el azul/verde agua del template.
   La topbar es gris neutra en todas las empresas, incluida Operativa. */
html[data-theme="dark"] {
    --background-color: #171b1f !important;
    --surface-color: #1d2228 !important;
    --card-bg: #1d2228 !important;
    --card-border: #353c44 !important;
    --default-color: #d7dee5 !important;
    --heading-color: #f4f7fa !important;
    --muted-color: #a8b0b8 !important;
    --light-color: #7f8993 !important;
    --border-color: #353c44 !important;
    --border-color-light: #2a3037 !important;
    --border-color-dark: #46505a !important;
    --header-bg: #1d2228 !important;
    --header-border: #353c44 !important;
    --header-shadow: 0 1px 0 rgba(255, 255, 255, .055) !important;
    --sidebar-bg: #11161b !important;
    --sidebar-border: #353c44 !important;
    --sidebar-color: #d7dee5 !important;
    --sidebar-muted-color: #8d99a4 !important;
    --table-header-bg: #20262c !important;
    --table-hover-bg: #252b31 !important;
    --table-stripe-bg: #1a1f24 !important;
    --input-bg: #151a1f !important;
    --input-border: #3a424b !important;
}

html[data-theme="dark"] .header,
html[data-theme="dark"] .operativa-unified-header {
    background: #1d2228 !important;
    border-color: #353c44 !important;
    box-shadow: 0 1px 0 rgba(255, 255, 255, .055) !important;
}

/* Logística: amarillo corporativo como único acento de marca en dark.
   Los estados semánticos (éxito/error/warning/info) siguen siendo semánticos. */
html[data-theme="dark"][data-company-id="1"] {
    --accent-color: #FFD725 !important;
    --company-contrast: #18212b !important;
    --nav-hover-color: #FFD725 !important;
    --sidebar-hover-bg: rgba(255, 215, 37, .11) !important;
    --sidebar-active-bg: rgba(255, 215, 37, .18) !important;
    --input-focus-border: #FFD725 !important;
    --input-focus-ring: rgba(255, 215, 37, .24) !important;
}

html[data-theme="dark"][data-company-id="1"] .sidebar .nav-link:hover,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-link:focus,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-item.has-submenu.open > .nav-link {
    background: rgba(255, 215, 37, .10) !important;
    color: #fff7c2 !important;
}

html[data-theme="dark"][data-company-id="1"] .sidebar .nav-link:hover .nav-icon,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-link:focus .nav-icon,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-item.has-submenu.open > .nav-link .nav-icon {
    color: #FFD725 !important;
    background: rgba(255, 215, 37, .12) !important;
}

/* Datos de Empresa: en Logística dark se elimina el cyan/azul/violeta heredado
   de las secciones del template y se usa una gradación amarilla sobria. */
html[data-theme="dark"][data-company-id="1"] .app-company-sections section,
html[data-theme="dark"][data-company-id="1"] .company-section-general,
html[data-theme="dark"][data-company-id="1"] .company-section-contact,
html[data-theme="dark"][data-company-id="1"] .company-section-billing,
html[data-theme="dark"][data-company-id="1"] .company-section-retention,
html[data-theme="dark"][data-company-id="1"] .company-section-night {
    --section-accent: #FFD725 !important;
    border-color: rgba(255, 215, 37, .32) !important;
    border-left-color: #FFD725 !important;
    background: linear-gradient(135deg, rgba(255, 215, 37, .08), #1d2228 58%) !important;
}

html[data-theme="dark"][data-company-id="1"] .app-company-sections h5 {
    color: #ffe568 !important;
}

/* Dropdown de usuario Logística dark: superficies neutras con lectura amarilla. */
html[data-theme="dark"][data-company-id="1"] .user-menu {
    border-color: rgba(255, 215, 37, .25) !important;
}

html[data-theme="dark"][data-company-id="1"] .user-menu-header {
    background: rgba(255, 215, 37, .065) !important;
    border-bottom-color: rgba(255, 215, 37, .16) !important;
}

html[data-theme="dark"][data-company-id="1"] .user-menu-item:not(.user-menu-item-danger) i {
    color: #FFD725 !important;
}

html[data-theme="dark"][data-company-id="1"] .user-menu-item:not(.user-menu-item-danger):hover,
html[data-theme="dark"][data-company-id="1"] .user-menu-item:not(.user-menu-item-danger):focus,
html[data-theme="dark"][data-company-id="1"] .user-menu-item:not(.user-menu-item-danger):active {
    background: rgba(255, 215, 37, .10) !important;
    color: #fff8cf !important;
}

html[data-theme="dark"][data-company-id="1"] .user-menu-item-lock,
html[data-theme="dark"][data-company-id="1"] .user-menu-item-lock i {
    color: #FFD725 !important;
}

/* Bloqueo y actualización respetan el amarillo de Logística. */
html[data-theme="dark"][data-company-id="1"] .app-lock-panel {
    border-color: rgba(255, 215, 37, .22) !important;
    border-top-color: #FFD725 !important;
}

html[data-theme="dark"][data-company-id="1"] .app-lock-icon {
    background: #FFD725 !important;
    color: #18212b !important;
    box-shadow: 0 12px 30px rgba(255, 215, 37, .18) !important;
}

html[data-theme="dark"][data-company-id="1"] .app-lock-user-avatar {
    background: rgba(255, 215, 37, .13) !important;
    color: #ffe568 !important;
    box-shadow: 0 0 0 1px rgba(255, 215, 37, .22) !important;
}

html[data-theme="dark"][data-company-id="1"] .st-version-toast,
html[data-theme="dark"][data-company-id="1"] .st-update-lock-card {
    border-color: rgba(255, 215, 37, .30) !important;
}

html[data-theme="dark"][data-company-id="1"] .st-version-toast-icon,
html[data-theme="dark"][data-company-id="1"] .st-update-lock-icon {
    background: rgba(255, 215, 37, .13) !important;
    color: #FFD725 !important;
}

/* Login: versión y autoría siempre blancas sobre el panel violeta. */
.app-auth-left-meta .app-auth-left-version,
.app-auth-left-credit,
.app-auth-left-credit a,
html[data-theme="dark"] .app-auth-left-meta .app-auth-left-version,
html[data-theme="dark"] .app-auth-left-credit,
html[data-theme="dark"] .app-auth-left-credit a {
    color: #ffffff !important;
}

.app-auth-left-credit a:hover {
    color: #ffffff !important;
    text-decoration: underline !important;
}

/* El logo deja de ser navegable cuando el usuario no posee Dashboard.Ver. */
.app-company-logo-disabled {
    cursor: default !important;
    user-select: none;
}

/* Vista de permisos insuficientes dentro del layout autenticado. */
.app-access-denied-card {
    min-height: 420px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 32px;
    border: 1px solid var(--border-color);
    border-top: 4px solid var(--accent-color);
    border-radius: 16px;
    background: var(--card-bg, var(--surface-color));
    text-align: center;
}

.app-access-denied-icon {
    width: 58px;
    height: 58px;
    display: grid;
    place-items: center;
    border-radius: 16px;
    background: color-mix(in srgb, var(--accent-color), transparent 84%);
    color: var(--accent-color);
    font-size: 1.45rem;
}

.app-access-denied-kicker {
    color: var(--accent-color);
    font-size: .72rem;
    font-weight: 850;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.app-access-denied-card h2 {
    margin: 0;
    color: var(--heading-color);
    font-size: 1.3rem;
    font-weight: 850;
}

.app-access-denied-card p {
    max-width: 620px;
    margin: 0 0 8px;
    color: var(--muted-color);
    font-size: .82rem;
}


/* ==============================================================
   0.1.19 - ajustes visuales finos Logística / bloqueo / login
   ============================================================== */

/* Login: si el navegador/autofill deja un fondo claro en inputs,
   el texto debe oscurecerse para conservar lectura. */
body.app-auth-body .fauth-form .form-control,
body.app-auth-body .fauth-form .input-group .btn {
    color: var(--heading-color);
}

body.app-auth-body .fauth-form .form-control::placeholder {
    color: var(--muted-color);
}

body.app-auth-body .fauth-form .form-control:-webkit-autofill,
body.app-auth-body .fauth-form .form-control:-webkit-autofill:hover,
body.app-auth-body .fauth-form .form-control:-webkit-autofill:focus,
body.app-auth-body .fauth-form .form-control:-webkit-autofill:active {
    -webkit-text-fill-color: #18212b !important;
    caret-color: #18212b !important;
    box-shadow: 0 0 0 1000px #eef2f7 inset !important;
    transition: background-color 9999s ease-out 0s;
}

/* La tarjeta de bloqueo necesita el icono centrado arriba, montado sobre
   la línea superior, con la línea pasando visualmente por detrás. */
.app-lock-panel {
    position: relative;
    overflow: visible;
    padding-top: 54px;
}

.app-lock-brand {
    margin-bottom: 22px;
}

.app-lock-icon {
    position: absolute;
    top: -28px;
    left: 50%;
    margin: 0;
    transform: translateX(-50%);
    z-index: 3;
}

.app-lock-form .btn-primary,
.app-lock-form .btn-primary:hover,
.app-lock-form .btn-primary:focus,
.app-lock-form .btn-primary:active {
    color: var(--company-contrast, #18212b) !important;
}

/* Logística: tanto en claro como en oscuro, los elementos de marca deben
   ser amarillentos; no deben reaparecer tintes teal/verdosos. */
html[data-company-id="1"] .app-user-trigger,
html[data-company-id="1"] .app-user-trigger:hover,
html[data-company-id="1"] .app-user-trigger:focus,
html[data-company-id="1"] .app-user-trigger:active,
html[data-company-id="1"] .app-user-trigger.show {
    border-color: rgba(255, 215, 37, .32) !important;
}

html[data-company-id="1"] .app-user-trigger:hover,
html[data-company-id="1"] .app-user-trigger:focus,
html[data-company-id="1"] .app-user-trigger:active,
html[data-company-id="1"] .app-user-trigger.show {
    background: rgba(255, 215, 37, .08) !important;
}

html[data-company-id="1"] .sidebar .nav-link:hover,
html[data-company-id="1"] .sidebar .nav-link:focus,
html[data-company-id="1"] .sidebar .nav-item.has-submenu.open > .nav-link {
    background: rgba(255, 215, 37, .10) !important;
}

html[data-company-id="1"] .sidebar .nav-link:hover .nav-icon,
html[data-company-id="1"] .sidebar .nav-link:focus .nav-icon,
html[data-company-id="1"] .sidebar .nav-item.has-submenu.open > .nav-link .nav-icon {
    background: rgba(255, 215, 37, .14) !important;
    color: #c6a100 !important;
}

/* Logística light: dropdown de usuario coherente con el amarillo corporativo,
   incluyendo el icono de bloqueo igual al texto. */
html:not([data-theme="dark"])[data-company-id="1"] .user-menu-item-lock,
html:not([data-theme="dark"])[data-company-id="1"] .user-menu-item-lock i {
    color: #c2a000 !important;
}

html:not([data-theme="dark"])[data-company-id="1"] .user-menu-item-lock:hover,
html:not([data-theme="dark"])[data-company-id="1"] .user-menu-item-lock:focus,
html:not([data-theme="dark"])[data-company-id="1"] .user-menu-item-lock:active {
    background: rgba(255, 215, 37, .16) !important;
    color: #18212b !important;
}

html:not([data-theme="dark"])[data-company-id="1"] .user-menu-item-lock:hover i,
html:not([data-theme="dark"])[data-company-id="1"] .user-menu-item-lock:focus i,
html:not([data-theme="dark"])[data-company-id="1"] .user-menu-item-lock:active i {
    color: #18212b !important;
}

/* Logística dark: neutral gris + acentos amarillos; el antiguo #11222c y los
   fondos teal del template quedan reemplazados por superficies amarillo-carbón. */
html[data-theme="dark"][data-company-id="1"] {
    --sidebar-hover-bg: rgba(255, 215, 37, .10) !important;
    --sidebar-active-bg: rgba(255, 215, 37, .18) !important;
}

html[data-theme="dark"][data-company-id="1"] .card,
html[data-theme="dark"][data-company-id="1"] .widget-stat,
html[data-theme="dark"][data-company-id="1"] .app-foundation-grid > div,
html[data-theme="dark"][data-company-id="1"] .user-menu,
html[data-theme="dark"][data-company-id="1"] .modal-content {
    background: linear-gradient(135deg, rgba(255, 215, 37, .07), #1c1a13 64%) !important;
    border-color: rgba(255, 215, 37, .18) !important;
}

html[data-theme="dark"][data-company-id="1"] .card-header,
html[data-theme="dark"][data-company-id="1"] .user-menu-header,
html[data-theme="dark"][data-company-id="1"] .widget-stat .widget-stat-header {
    background: linear-gradient(135deg, rgba(255, 215, 37, .09), rgba(28, 26, 19, .94) 72%) !important;
    border-bottom-color: rgba(255, 215, 37, .14) !important;
}

html[data-theme="dark"][data-company-id="1"] .app-company-sections section,
html[data-theme="dark"][data-company-id="1"] .company-section-general,
html[data-theme="dark"][data-company-id="1"] .company-section-contact,
html[data-theme="dark"][data-company-id="1"] .company-section-billing,
html[data-theme="dark"][data-company-id="1"] .company-section-retention,
html[data-theme="dark"][data-company-id="1"] .company-section-night {
    background: linear-gradient(135deg, rgba(255, 215, 37, .10), #1c1a13 62%) !important;
    border-color: rgba(255, 215, 37, .30) !important;
    border-left-color: #FFD725 !important;
}

html[data-theme="dark"][data-company-id="1"] .app-user-trigger,
html[data-theme="dark"][data-company-id="1"] .app-user-trigger:hover,
html[data-theme="dark"][data-company-id="1"] .app-user-trigger:focus,
html[data-theme="dark"][data-company-id="1"] .app-user-trigger:active,
html[data-theme="dark"][data-company-id="1"] .app-user-trigger.show {
    background: rgba(255, 215, 37, .06) !important;
    border-color: rgba(255, 215, 37, .32) !important;
}

html[data-theme="dark"][data-company-id="1"] .user-menu-item:not(.user-menu-item-danger) i,
html[data-theme="dark"][data-company-id="1"] .user-menu-item-lock,
html[data-theme="dark"][data-company-id="1"] .user-menu-item-lock i {
    color: #FFD725 !important;
}

html[data-theme="dark"][data-company-id="1"] .app-lock-panel {
    background: linear-gradient(180deg, rgba(255, 215, 37, .07), rgba(33, 31, 23, .98) 22%), #211f17 !important;
    border-color: rgba(255, 215, 37, .26) !important;
    border-top-color: #FFD725 !important;
}

html[data-theme="dark"][data-company-id="1"] .app-lock-icon,
html[data-company-id="1"] .app-lock-icon {
    background: #FFD725 !important;
    color: #18212b !important;
}

html[data-theme="dark"][data-company-id="1"] .app-lock-user-avatar,
html[data-company-id="1"] .app-lock-user-avatar {
    background: rgba(255, 215, 37, .14) !important;
    color: #18212b !important;
    box-shadow: 0 0 0 1px rgba(255, 215, 37, .28) !important;
}

html[data-company-id="1"] .app-lock-form .btn-primary,
html[data-company-id="1"] .app-lock-form .btn-primary:hover,
html[data-company-id="1"] .app-lock-form .btn-primary:focus,
html[data-company-id="1"] .app-lock-form .btn-primary:active,
html[data-company-id="1"] .st-version-toast button,
html[data-company-id="1"] .st-update-lock-card button {
    background: #FFD725 !important;
    border-color: #FFD725 !important;
    color: #18212b !important;
}

html[data-company-id="1"] .st-version-toast,
html[data-company-id="1"] .st-update-lock-card {
    border-color: rgba(255, 215, 37, .30) !important;
}

html[data-company-id="1"] .st-version-toast-icon,
html[data-company-id="1"] .st-update-lock-icon {
    background: rgba(255, 215, 37, .16) !important;
    color: #c8a100 !important;
}

/* ==============================================================
   0.1.20 - superficies dark por capas + contraste del actualizador
   ============================================================== */

/* Dashboard dark: la superficie exterior toma un tinte muy suave de empresa,
   pero los bloques internos vuelven siempre al gris neutro del sistema. */
html[data-theme="dark"][data-company-id="1"] .dashboard-grid > .card,
html[data-theme="dark"][data-company-id="1"] .dashboard-grid + .row > [class*="col-"] > .card {
    background: linear-gradient(135deg, rgba(255, 215, 37, .075), #1d1c17 68%) !important;
    border-color: rgba(255, 215, 37, .24) !important;
}

html[data-theme="dark"][data-company-id="2"] .dashboard-grid > .card,
html[data-theme="dark"][data-company-id="2"] .dashboard-grid + .row > [class*="col-"] > .card {
    background: linear-gradient(135deg, rgba(12, 149, 148, .075), #182226 68%) !important;
    border-color: rgba(12, 149, 148, .23) !important;
}

html[data-theme="dark"] .dashboard-grid .widget-stat-header,
html[data-theme="dark"] .dashboard-grid + .row .card-header {
    background: transparent !important;
}

html[data-theme="dark"][data-company-id="1"] .dashboard-grid + .row .app-foundation-grid > div,
html[data-theme="dark"][data-company-id="2"] .dashboard-grid + .row .app-foundation-grid > div {
    background: #1d2228 !important;
    border-color: #3a424b !important;
}

html[data-theme="dark"][data-company-id="1"] .dashboard-grid + .row .app-foundation-grid i {
    background: rgba(255, 215, 37, .12) !important;
    color: #FFD725 !important;
}

html[data-theme="dark"][data-company-id="2"] .dashboard-grid + .row .app-foundation-grid i {
    background: rgba(12, 149, 148, .15) !important;
    color: #25d1cf !important;
}

/* Datos de Empresa dark: únicamente el contenedor exterior recibe el tinte
   corporativo. Cada sección interna permanece gris, con título/icono y borde
   izquierdo en el color de la empresa. */
html[data-theme="dark"][data-company-id="1"] .page-header + .card:has(.app-company-sections) {
    background: linear-gradient(135deg, rgba(255, 215, 37, .07), #1d1c17 72%) !important;
    border-color: rgba(255, 215, 37, .24) !important;
}

html[data-theme="dark"][data-company-id="2"] .page-header + .card:has(.app-company-sections) {
    background: linear-gradient(135deg, rgba(12, 149, 148, .07), #182226 72%) !important;
    border-color: rgba(12, 149, 148, .22) !important;
}

html[data-theme="dark"][data-company-id="1"] .app-company-sections section {
    --section-accent: #FFD725 !important;
    background: #1d2228 !important;
    border-color: #3a424b !important;
    border-left-color: #FFD725 !important;
}

html[data-theme="dark"][data-company-id="2"] .app-company-sections section {
    --section-accent: #0C9594 !important;
    background: #1d2228 !important;
    border-color: #3a424b !important;
    border-left-color: #0C9594 !important;
}

html[data-theme="dark"][data-company-id="1"] .app-company-sections h5,
html[data-theme="dark"][data-company-id="1"] .app-company-sections h5 i {
    color: #ffe568 !important;
}

html[data-theme="dark"][data-company-id="2"] .app-company-sections h5,
html[data-theme="dark"][data-company-id="2"] .app-company-sections h5 i {
    color: #38cfcd !important;
}

/* Actualizaciones: lila/teal llevan texto blanco. El amarillo de Logística
   es la única excepción y usa texto oscuro. */
.st-version-toast button,
.st-update-lock-card button {
    color: #ffffff !important;
}

html[data-company-id="1"] .st-version-toast button,
html[data-company-id="1"] .st-update-lock-card button {
    color: #18212b !important;
}

html[data-theme="dark"][data-company-id="1"] .dashboard-grid .widget-stat .widget-stat-header,
html[data-theme="dark"][data-company-id="2"] .dashboard-grid .widget-stat .widget-stat-header {
    background: transparent !important;
}

/* SistemaTraslados v0.1.30 - Archivos + Usuarios/Permisos */
.files-page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.files-card,.files-form-card{border:1px solid var(--border-color,#e7eaf0);box-shadow:0 8px 24px rgba(15,23,42,.04)}.files-toolbar{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.files-search{position:relative;flex:1;max-width:520px}.files-search>i{position:absolute;left:.9rem;top:50%;transform:translateY(-50%);color:var(--text-muted,#7c8594);z-index:2}.files-search .form-control{padding-left:2.55rem}.files-state-filter{width:170px}.files-table thead th{white-space:nowrap;font-size:.78rem;text-transform:uppercase;letter-spacing:.045em;color:var(--text-muted,#737d8d);border-bottom-width:1px}.files-table td{vertical-align:middle}.files-active-box{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border:1px solid var(--border-color,#e1e5ec);border-radius:.75rem;background:color-mix(in srgb,var(--bs-body-bg,#fff),var(--accent-color) 2%)}.files-active-box .form-check-input{width:2.7rem;height:1.4rem}.files-section-title{font-size:1rem;font-weight:700}.files-shared-note{border-left:4px solid var(--accent-color)}.files-cell-clamp{max-width:340px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.security-tabs .nav-link{font-weight:700}.security-grid{display:grid;grid-template-columns:minmax(250px,320px) minmax(0,1fr);gap:1rem;align-items:start}.security-list-card{position:sticky;top:84px;overflow:hidden}.security-user-list{max-height:70vh;overflow:auto}.security-user-list .list-group-item{padding:.9rem 1rem}.security-user-list .list-group-item.active{background:color-mix(in srgb,var(--accent-color),transparent 88%);border-color:color-mix(in srgb,var(--accent-color),transparent 72%);color:inherit}.security-user-list .list-group-item.active small{color:var(--text-muted,#6b7280)!important}.security-dot{width:.65rem;height:.65rem;border-radius:50%;flex:0 0 auto;margin-top:.35rem}.security-dot.is-active{background:#22c55e}.security-dot.is-inactive{background:#94a3b8}.security-detail-stack{display:grid;gap:1rem;min-width:0}.security-permissions-card{overflow:hidden}.security-perm-table thead th{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted,#737d8d)}.security-perm-group td{font-weight:800;background:color-mix(in srgb,var(--accent-color),transparent 93%);color:var(--accent-color);border-top:1px solid color-mix(in srgb,var(--accent-color),transparent 80%)}.security-perm-table small{font-family:"JetBrains Mono",monospace;font-size:.7rem}.security-perm-table .form-select{min-width:135px}.files-card .form-check-input:checked,.files-form-card .form-check-input:checked,.security-permissions-card .form-check-input:checked{background-color:var(--accent-color);border-color:var(--accent-color)}
html[data-theme="dark"] .files-card,html[data-theme="dark"] .files-form-card,html[data-theme="dark"] .security-list-card,html[data-theme="dark"] .security-permissions-card{border-color:#303740;background:#1d2228}html[data-theme="dark"] .files-active-box{border-color:#343c45;background:#20262c}html[data-theme="dark"] .security-user-list .list-group-item{background:#1d2228;border-color:#303740;color:#e6e9ed}html[data-theme="dark"] .security-user-list .list-group-item.active{background:color-mix(in srgb,var(--accent-color),transparent 86%)}html[data-theme="dark"] .security-perm-group td{background:color-mix(in srgb,var(--accent-color),transparent 88%)}
@media(max-width:991.98px){.security-grid{grid-template-columns:1fr}.security-list-card{position:static}.security-user-list{max-height:320px}.files-toolbar{align-items:stretch;flex-direction:column}.files-search,.files-state-filter{max-width:none;width:100%}}

/* v0.1.31 - toasts de acciones y contraste light Logistica */
.app-toast-host{position:fixed;top:76px;right:18px;z-index:10950;display:grid;gap:.55rem;width:min(380px,calc(100vw - 32px));pointer-events:none}.app-action-toast{display:flex;align-items:flex-start;gap:.7rem;padding:.85rem 1rem;border-radius:.8rem;background:#1f2937;color:#fff;box-shadow:0 14px 38px rgba(15,23,42,.24);opacity:0;transform:translateY(-8px);transition:opacity .18s ease,transform .18s ease;font-weight:650;pointer-events:auto}.app-action-toast.show{opacity:1;transform:translateY(0)}.app-action-toast.is-success i{color:#6ee7b7}.app-action-toast.is-error i{color:#fca5a5}.app-action-toast span{line-height:1.35}.app-action-toast i{margin-top:.08rem;font-size:1rem}
html:not([data-theme="dark"])[data-company-id="1"] .main-content .page-title,html:not([data-theme="dark"])[data-company-id="1"] .main-content .files-section-title,html:not([data-theme="dark"])[data-company-id="1"] .main-content .security-perm-group td,html:not([data-theme="dark"])[data-company-id="1"] .security-user-list .list-group-item.active,html:not([data-theme="dark"])[data-company-id="1"] .security-user-list .list-group-item.active strong{color:#18212b!important}

/* ==============================================================
   0.1.31 - UX Archivos / Pacientes / Roles y Permisos
   ============================================================== */
.files-row-clickable{cursor:pointer;transition:background-color .14s ease}.files-row-clickable:hover{background:color-mix(in srgb,var(--accent-color),transparent 95%)}.files-row-clickable:focus-within{background:color-mix(in srgb,var(--accent-color),transparent 93%)}
.files-patients-table td{min-width:110px}.files-patients-table td:first-child{min-width:190px}.files-patients-table .files-cell-clamp{max-width:260px}
.patient-detail-body{display:grid;gap:1rem}.patient-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.patient-detail-grid>section,.patient-notes,.patient-history{border:1px solid var(--border-color,#e1e5ec);border-radius:.85rem;background:var(--bs-body-bg,#fff);padding:1rem}.patient-detail-grid h6,.patient-notes h6,.patient-history h6{font-weight:800;margin-bottom:.8rem}.patient-detail-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem 1rem;margin:0}.patient-detail-list>div{min-width:0}.patient-detail-list dt{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted,#737d8d);margin-bottom:.15rem}.patient-detail-list dd{margin:0;font-weight:650;word-break:break-word}.files-child-modal{z-index:1070}.files-child-modal+.modal-backdrop{z-index:1065}
.security-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem}.security-summary-grid>div{padding:.75rem .85rem;border:1px solid var(--border-color,#e1e5ec);border-radius:.7rem;background:color-mix(in srgb,var(--bs-body-bg,#fff),var(--accent-color) 1.5%);min-width:0}.security-summary-grid span{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted,#737d8d);margin-bottom:.2rem}.security-summary-grid strong{display:block;word-break:break-word}.security-permission-form{display:grid;gap:.75rem}.security-permission-save{text-align:right}.security-permission-browser{display:grid;grid-template-columns:240px minmax(0,1fr);gap:1rem;align-items:start}.security-permission-nav{overflow:hidden;position:sticky;top:84px}.security-permission-nav-body{padding:.45rem}.security-permission-module{border-bottom:1px solid var(--border-color,#e6e9ee)}.security-permission-module:last-child{border-bottom:0}.security-permission-module-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.5rem;border:0;background:transparent;color:var(--heading-color,#18212b);font-weight:800;padding:.72rem .65rem;text-align:left}.security-permission-module-toggle i{transition:transform .16s ease}.security-permission-module.is-open .security-permission-module-toggle i{transform:rotate(180deg)}.security-permission-module-items{display:none;padding:0 .3rem .55rem}.security-permission-module.is-open .security-permission-module-items{display:grid;gap:.2rem}.security-permission-item{border:0;background:transparent;text-align:left;padding:.52rem .65rem;border-radius:.55rem;color:var(--body-color,#374151);font-size:.84rem}.security-permission-item:hover{background:color-mix(in srgb,var(--accent-color),transparent 94%)}.security-permission-item.active{background:color-mix(in srgb,var(--accent-color),transparent 84%);color:var(--heading-color,#18212b);font-weight:800}.security-permission-panes{min-height:220px}.security-permission-pane-head{padding:.8rem 1rem;border-bottom:1px solid var(--border-color,#e6e9ee);background:color-mix(in srgb,var(--accent-color),transparent 96%)}
html[data-theme="dark"] .patient-detail-grid>section,html[data-theme="dark"] .patient-notes,html[data-theme="dark"] .patient-history,html[data-theme="dark"] .security-summary-grid>div{background:#20262c;border-color:#343c45}html[data-theme="dark"] .security-permission-module{border-color:#303740}html[data-theme="dark"] .security-permission-module-toggle,html[data-theme="dark"] .security-permission-item{color:#e6e9ed}html[data-theme="dark"] .security-permission-item.active{background:color-mix(in srgb,var(--accent-color),transparent 84%)}html[data-theme="dark"] .security-permission-pane-head{background:#20262c;border-color:#303740}
/* Logística light: cualquier título o selección sobre acento amarillo usa texto oscuro. */
html:not([data-theme="dark"])[data-company-id="1"] .main-content .page-title,
html:not([data-theme="dark"])[data-company-id="1"] .main-content .card-header h1,
html:not([data-theme="dark"])[data-company-id="1"] .main-content .card-header h2,
html:not([data-theme="dark"])[data-company-id="1"] .main-content .card-header h3,
html:not([data-theme="dark"])[data-company-id="1"] .main-content .card-header h4,
html:not([data-theme="dark"])[data-company-id="1"] .main-content .card-header h5,
html:not([data-theme="dark"])[data-company-id="1"] .main-content .card-header h6,
html:not([data-theme="dark"])[data-company-id="1"] .main-content .files-section-title,
html:not([data-theme="dark"])[data-company-id="1"] .main-content .patient-detail-grid h6,
html:not([data-theme="dark"])[data-company-id="1"] .main-content .patient-history h6,
html:not([data-theme="dark"])[data-company-id="1"] .main-content .security-permission-item.active,
html:not([data-theme="dark"])[data-company-id="1"] .main-content .security-permission-module-toggle{color:#18212b!important}
@media(max-width:991.98px){.security-permission-browser{grid-template-columns:1fr}.security-permission-nav{position:static}.patient-detail-grid{grid-template-columns:1fr}.security-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:575.98px){.patient-detail-list,.security-summary-grid{grid-template-columns:1fr}}

/* 0.1.31 - Branding estricto Logística en todas las vistas y temas.
   Los colores semánticos de estados conservan su significado, pero ningún
   acento de marca puede volver a teal/cyan para EmpresaId=1. */
html[data-company-id="1"] {
    --accent-color: #FFD725 !important;
    --company-contrast: #18212b !important;
    --input-focus-border: #FFD725 !important;
    --input-focus-ring: rgba(255, 215, 37, .24) !important;
}
html[data-theme="dark"][data-company-id="1"] .main-content .files-section-title,
html[data-theme="dark"][data-company-id="1"] .main-content .patient-detail-grid h6,
html[data-theme="dark"][data-company-id="1"] .main-content .patient-history h6,
html[data-theme="dark"][data-company-id="1"] .main-content .security-permission-module-toggle,
html[data-theme="dark"][data-company-id="1"] .main-content .security-permission-item.active {
    color: #ffe568 !important;
}

/* v0.1.32 - Logística: amarillo corporativo estricto en todas las vistas/temas. */
html[data-company-id="1"] .btn-primary {
    --bs-btn-bg: #FFD725 !important;
    --bs-btn-border-color: #FFD725 !important;
    --bs-btn-color: #18212b !important;
    --bs-btn-hover-bg: #e8c521 !important;
    --bs-btn-hover-border-color: #e8c521 !important;
    --bs-btn-hover-color: #18212b !important;
    --bs-btn-active-bg: #d9b91f !important;
    --bs-btn-active-border-color: #d9b91f !important;
    --bs-btn-active-color: #18212b !important;
    background-color: #FFD725 !important;
    border-color: #FFD725 !important;
    color: #18212b !important;
}
html[data-company-id="1"] .btn-primary:hover,
html[data-company-id="1"] .btn-primary:focus,
html[data-company-id="1"] .btn-primary:active,
html[data-company-id="1"] .btn-primary.active {
    color: #18212b !important;
}
html[data-company-id="1"] .btn-primary i,
html[data-company-id="1"] .btn-primary svg {
    color: #18212b !important;
    fill: currentColor;
}
html[data-company-id="1"] .form-check-input:checked {
    background-color: #FFD725 !important;
    border-color: #FFD725 !important;
}
html[data-company-id="1"] .btn-outline-primary:hover,
html[data-company-id="1"] .btn-outline-primary:active,
html[data-company-id="1"] .btn-outline-primary.active {
    background-color: #FFD725 !important;
    border-color: #FFD725 !important;
    color: #18212b !important;
}
html[data-company-id="1"] .btn-outline-primary:hover i,
html[data-company-id="1"] .btn-outline-primary:active i,
html[data-company-id="1"] .btn-outline-primary.active i {
    color: #18212b !important;
}
.security-permission-footer {
    display: flex;
    justify-content: flex-end;
    padding: .85rem 1rem;
    border-top: 1px solid var(--border-color,#e1e5ec);
    background: color-mix(in srgb,var(--bs-body-bg,#fff),var(--accent-color) 1.5%);
}
html[data-theme="dark"] .security-permission-footer {
    border-top-color: #303740;
    background: #20262c;
}
.security-permission-empty{padding:2rem 1.25rem;text-align:center;color:var(--text-muted,#737d8d)}

/* v0.1.33 - Pacientes compactos, siniestro inicial y switches Archivos */
.files-active-box{padding:.4rem .6rem;gap:.6rem;border-radius:.55rem;min-height:34px;font-size:.82rem}
.files-active-box .form-check-input,.files-table .form-switch .form-check-input,.files-inline-switch .form-check-input{width:2.05rem!important;height:1.05rem!important;margin-top:0!important}
.files-inline-switch{display:inline-flex;align-items:center;gap:.45rem;font-size:.78rem;font-weight:750;white-space:nowrap;color:var(--body-color,#374151)}
.files-patient-modal-dialog{width:min(1040px,calc(100vw - 2rem));max-width:1040px}
.patient-modal-content{overflow:hidden}
.patient-modal-header{padding:.65rem .85rem}.patient-modal-header .modal-title{font-size:1.05rem}
.patient-modal-body{padding:.7rem .85rem}.patient-modal-footer{padding:.55rem .85rem}
.patient-edit-body .form-label,.siniestro-fields-grid .form-label{font-size:.7rem;font-weight:750;margin-bottom:.2rem;color:var(--text-muted,#737d8d)}
.patient-form-grid .form-control,.patient-form-grid .form-select,.siniestro-fields-grid .form-control{min-height:31px}
.patient-compact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem .75rem}
.patient-compact-grid>div{min-width:0;padding:.42rem .5rem;border:1px solid var(--border-color,#e1e5ec);border-radius:.5rem;background:color-mix(in srgb,var(--bs-body-bg,#fff),var(--accent-color) 1.2%)}
.patient-compact-grid>div.span-2{grid-column:span 2}.patient-compact-grid>div.span-3{grid-column:span 3}
.patient-compact-grid span{display:block;font-size:.65rem;text-transform:uppercase;letter-spacing:.035em;color:var(--text-muted,#737d8d);margin-bottom:.1rem}
.patient-compact-grid strong{display:block;font-size:.82rem;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.patient-history-compact,.patient-initial-claim{padding:.6rem .7rem!important;border:1px solid var(--border-color,#e1e5ec);border-radius:.65rem;background:var(--bs-body-bg,#fff)}
.patient-history-head{display:flex;align-items:center;justify-content:space-between;gap:.65rem;margin-bottom:.5rem}.patient-history-head h6{font-size:.86rem;font-weight:800}
.patient-history-compact .table>:not(caption)>*>*{padding:.35rem .45rem;font-size:.76rem}.patient-history-compact .files-cell-clamp{max-width:250px}
.patient-initial-claim .siniestro-fields-grid{margin-top:.15rem}
.siniestro-fields-grid textarea{resize:none}
html[data-theme="dark"] .patient-compact-grid>div,html[data-theme="dark"] .patient-history-compact,html[data-theme="dark"] .patient-initial-claim{background:#20262c;border-color:#343c45}
@media(max-width:991.98px){.files-patient-modal-dialog{width:min(94vw,820px)}.patient-compact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.patient-compact-grid>div.span-3{grid-column:span 2}}
@media(max-width:575.98px){.patient-compact-grid{grid-template-columns:1fr}.patient-compact-grid>div.span-2,.patient-compact-grid>div.span-3{grid-column:span 1}.files-patient-modal-dialog{width:calc(100vw - 1rem)}}

/* v0.1.34 - Entidades compactas + estado Paciente inferior + autocomplete Cliente preparado */
.files-entity-modal-dialog{width:min(860px,calc(100vw - 2rem));max-width:860px}
.files-entity-modal-content{overflow:hidden}
.files-entity-modal-header{padding:.65rem .85rem}.files-entity-modal-header .modal-title{font-size:1.02rem}
.files-entity-modal-body{padding:.7rem .85rem}.files-entity-modal-footer{padding:.55rem .85rem}
.files-entity-form-grid .form-label{font-size:.7rem;font-weight:750;margin-bottom:.2rem;color:var(--text-muted,#737d8d)}
.files-entity-form-grid .form-control,.files-entity-form-grid .form-select{min-height:31px}
.files-entity-form-grid textarea.form-control{min-height:54px;resize:none}
.files-inline-switch-compact{font-size:.74rem;gap:.35rem}
.patient-form-status-row{display:flex;justify-content:flex-end;align-items:center;margin-top:.45rem;min-height:28px}
.client-autocomplete{position:relative}
.client-autocomplete-menu{position:absolute;z-index:1085;left:calc(var(--bs-gutter-x)*.5);right:calc(var(--bs-gutter-x)*.5);top:100%;margin-top:.15rem;padding:.25rem;background:var(--bs-body-bg,#fff);border:1px solid var(--border-color,#dfe4ea);border-radius:.55rem;box-shadow:0 10px 30px rgba(15,23,42,.14);max-height:220px;overflow:auto}
.client-autocomplete-item{display:block;width:100%;border:0;background:transparent;color:inherit;text-align:left;padding:.48rem .58rem;border-radius:.4rem;font-size:.82rem}
.client-autocomplete-item:hover,.client-autocomplete-item:focus{background:color-mix(in srgb,var(--accent-color,#ffd725) 14%,var(--bs-body-bg,#fff));outline:0}
html[data-theme="dark"] .client-autocomplete-menu{background:#20262c;border-color:#343c45;box-shadow:0 12px 32px rgba(0,0,0,.34)}
@media(max-width:575.98px){.files-entity-modal-dialog{width:calc(100vw - 1rem)}}

/* v0.1.35 - Pacientes: ancho consistente, direcciones históricas, ciudades autocomplete y modales apilados */
.files-patient-modal-dialog{width:min(1160px,calc(100vw - 2rem));max-width:1160px}
.patient-modal-content{overflow:visible}
.patient-compact-grid-wide{grid-template-columns:repeat(4,minmax(0,1fr))}
.patient-edit-body{overflow:visible}
.patient-history-scroll{max-height:118px;overflow-y:auto;overflow-x:auto}
.patient-history-scroll thead th{position:sticky;top:0;z-index:1;background:var(--bs-tertiary-bg,#eef3f9)}
.direccion-fields-grid .form-label{font-size:.7rem;font-weight:750;margin-bottom:.2rem;color:var(--text-muted,#737d8d)}
.direccion-fields-grid .form-control{min-height:31px}
.city-autocomplete{position:relative}
.city-autocomplete-menu{position:absolute;z-index:1095;left:calc(var(--bs-gutter-x)*.5);right:calc(var(--bs-gutter-x)*.5);top:100%;margin-top:.15rem;padding:.25rem;background:var(--bs-body-bg,#fff);border:1px solid var(--border-color,#dfe4ea);border-radius:.55rem;box-shadow:0 10px 30px rgba(15,23,42,.14);max-height:220px;overflow:auto}
.city-autocomplete-item{display:block;width:100%;border:0;background:transparent;color:inherit;text-align:left;padding:.48rem .58rem;border-radius:.4rem;font-size:.82rem}
.city-autocomplete-item:hover,.city-autocomplete-item:focus{background:color-mix(in srgb,var(--accent-color,#ffd725) 14%,var(--bs-body-bg,#fff));outline:0}
html[data-theme="dark"] .city-autocomplete-menu{background:#20262c;border-color:#343c45;box-shadow:0 12px 32px rgba(0,0,0,.34)}
.files-child-modal{z-index:1080!important}
.modal-backdrop.files-child-backdrop{z-index:1070!important}
#patientModal{z-index:1055}
@media(max-width:1199.98px){.files-patient-modal-dialog{width:min(96vw,1100px)}.patient-compact-grid-wide{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:991.98px){.files-patient-modal-dialog{width:min(96vw,900px)}.patient-compact-grid-wide{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:575.98px){.files-patient-modal-dialog{width:calc(100vw - 1rem)}.patient-compact-grid-wide{grid-template-columns:1fr}.patient-history-scroll{max-height:150px}}

/* v0.1.36 - Clientes + detalle Paciente consistente */
.files-patient-modal-dialog,[data-patient-modal-host],.patient-modal-content{width:100%}
.files-patient-modal-dialog{margin-left:auto;margin-right:auto}
.client-modal-dialog{width:min(1080px,calc(100vw - 2rem));max-width:1080px}
.client-modal-content{width:100%;overflow:visible}
.client-edit-body{padding:.8rem .9rem}
.client-section{position:relative;border:1px solid var(--border-color,#dfe5ee);border-radius:.7rem;padding:.85rem .8rem .7rem;margin-bottom:.75rem;background:var(--bs-body-bg,#fff)}
.client-section-title{display:flex;align-items:center;gap:.5rem;margin:-1.35rem 0 .65rem .15rem;font-size:.78rem;font-weight:800}.client-section-title:before,.client-section-title:after{content:"";height:1px;background:var(--border-color,#dfe5ee);flex:1}.client-section-title:before{max-width:.8rem}.client-section-title span{background:var(--bs-body-bg,#fff);padding:0 .35rem;white-space:nowrap}
.client-edit-body .form-label{font-size:.72rem;font-weight:750;margin-bottom:.2rem;color:var(--text-muted,#737d8d)}
.client-detail-body{display:grid;gap:.75rem}.client-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.client-detail-grid>div{border:1px solid var(--border-color,#e1e5ec);border-radius:.55rem;padding:.48rem .55rem;min-width:0}.client-detail-grid span{display:block;font-size:.65rem;text-transform:uppercase;color:var(--text-muted,#737d8d);margin-bottom:.12rem}.client-detail-grid strong{display:block;font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.client-status-summary{display:flex;justify-content:flex-end;gap:.45rem}
.client-email-chips{display:flex;flex-wrap:wrap;gap:.35rem}.client-email-chips span{padding:.2rem .45rem;border:1px solid var(--border-color,#dfe5ee);border-radius:999px;font-size:.75rem;background:var(--bs-tertiary-bg,#f3f6fa)}.client-followup-read{white-space:pre-wrap;font-size:.82rem;line-height:1.45}
.client-status-control{display:inline-flex;align-items:center;gap:.28rem;padding:.25rem .35rem;border:1px solid var(--border-color,#dfe5ee);border-radius:999px;background:var(--bs-body-bg,#fff)}.client-status-dot{width:14px;height:14px;border-radius:50%;border:2px solid transparent;padding:0;opacity:.42;transition:.12s ease}.client-status-dot.active{opacity:1;box-shadow:0 0 0 2px var(--bs-body-bg,#fff),0 0 0 3px #65738a}.client-status-dot.is-green{background:#20a462}.client-status-dot.is-yellow{background:#e3ad10}.client-status-dot.is-red{background:#dc3545}.client-status-dot:disabled{cursor:default}.client-state-badge{font-weight:800;font-size:.75rem;border-radius:999px;padding:.28rem .55rem}.client-state-badge.state-1{background:#dff6e9;color:#147548}.client-state-badge.state-2{background:#fff2bf;color:#765700}.client-state-badge.state-3{background:#fde2e5;color:#a31b2b}
.clients-table td{min-width:105px}.clients-table td:first-child{min-width:210px}
#dispatcherFormModal{z-index:1080}.files-child-backdrop{z-index:1075!important}
html[data-theme="dark"] .client-section,html[data-theme="dark"] .client-section-title span,html[data-theme="dark"] .client-status-control{background:#20262c;border-color:#343c45}.city-autocomplete-menu{z-index:1100}
@media(max-width:991.98px){.client-modal-dialog{width:min(96vw,900px)}.client-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:575.98px){.client-modal-dialog{width:calc(100vw - 1rem)}.client-detail-grid{grid-template-columns:1fr}}

/* v0.1.37 - Formularios modernos, contactos estructurados y modales apilados */
/* Los formularios usan título + línea, sin caja duplicada alrededor de toda la sección. */
.client-section.client-section-line{border:0;border-radius:0;background:transparent;padding:.35rem 0 .45rem;margin:0 0 .65rem}
.client-section.client-section-line .client-section-title{margin:0 0 .55rem;gap:.45rem;color:var(--bs-body-color,#18212b)}
.client-section.client-section-line .client-section-title:before{display:block;max-width:1.6rem}
.client-section.client-section-line .client-section-title:after{background:var(--border-color,#dfe5ee)}
.client-section.client-section-line .client-section-title span{padding:0;background:transparent}
html[data-theme="dark"] .client-section.client-section-line,html[data-theme="dark"] .client-section.client-section-line .client-section-title span{background:transparent}
.client-add-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem;align-items:center}.client-add-row-follow{align-items:stretch}
.client-structured-list{display:grid;gap:.38rem}.client-structured-empty{padding:.55rem .7rem;border:1px dashed var(--border-color,#dfe5ee);border-radius:.55rem;color:var(--text-muted,#737d8d);font-size:.78rem}
.client-structured-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:.55rem;align-items:center;padding:.42rem .55rem;border:1px solid var(--border-color,#dfe5ee);border-radius:.55rem;background:var(--bs-tertiary-bg,#f7f9fc)}
.client-structured-value{font-size:.8rem;line-height:1.35;min-width:0;overflow-wrap:anywhere;white-space:pre-wrap}.client-item-remove{width:2rem;height:2rem;padding:0;display:grid;place-items:center}
html[data-theme="dark"] .client-structured-row{background:#20262c;border-color:#343c45}
.client-bottom-controls{display:flex;justify-content:flex-end;align-items:flex-end;gap:1rem;flex-wrap:wrap;padding:.2rem 0 .1rem}
.client-state-picker{border:0;padding:0;margin:0}.client-state-picker legend{font-size:.7rem;font-weight:800;color:var(--text-muted,#737d8d);margin-bottom:.25rem}
.client-state-choice{display:inline-block;margin-right:.3rem;cursor:pointer}.client-state-choice input{position:absolute;opacity:0;pointer-events:none}.client-state-choice span{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--border-color,#dfe5ee);border-radius:999px;padding:.36rem .62rem;font-size:.77rem;font-weight:750;background:var(--bs-body-bg,#fff);transition:.14s ease}.client-state-choice.is-green i{color:#20a462}.client-state-choice.is-yellow i{color:#d99d00}.client-state-choice.is-red i{color:#dc3545}.client-state-choice input:checked+span{box-shadow:0 0 0 2px color-mix(in srgb,currentColor 16%,transparent);border-color:currentColor}.client-state-choice.is-green input:checked+span{color:#147548;background:#e4f7ec}.client-state-choice.is-yellow input:checked+span{color:#765700;background:#fff3c6}.client-state-choice.is-red input:checked+span{color:#a31b2b;background:#fde4e7}
.client-modal-footer-split{display:flex;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.client-small-modal-dialog{width:min(620px,calc(100vw - 2rem));max-width:620px}.client-listados-table{max-height:310px;overflow:auto}.client-listados-table th:first-child{width:64px}
.client-utility-modal{z-index:1090!important}.client-modal-content,.patient-modal-content,#dispatchersModal .modal-content{position:relative}.client-modal-content:after,.patient-modal-content:after,#dispatchersModal .modal-content:after{content:"";position:absolute;inset:0;border-radius:inherit;background:rgba(15,23,42,.42);opacity:0;pointer-events:none;transition:opacity .12s;z-index:1040}.has-client-child .client-modal-content:after,.has-patient-child .patient-modal-content:after,.has-dispatcher-child .modal-content:after{opacity:1;pointer-events:auto}.client-utility-modal .modal-content,.files-child-modal .modal-content,#dispatcherFormModal .modal-content{position:relative;z-index:1095}.files-child-modal,#dispatcherFormModal{z-index:1095!important}
/* Los tres modos de Paciente comparten exactamente el mismo ancho. */
#patientModal .files-patient-modal-dialog{width:min(1180px,calc(100vw - 2rem))!important;max-width:1180px!important;margin-left:auto!important;margin-right:auto!important}
#patientModal [data-patient-modal-host],#patientModal .patient-modal-content{display:block;width:100%!important;min-width:100%!important;max-width:none!important}
.patient-form-grid .form-control-sm,.patient-form-grid .form-select-sm,.patient-sex-select{min-height:34px;height:34px;padding-top:.35rem;padding-bottom:.35rem}.patient-sex-select{min-width:92px}
/* Formularios de paciente: mismo lenguaje visual de línea, sin marcos completos innecesarios. */
.patient-initial-claim{border:0!important;border-radius:0!important;background:transparent!important;padding:.4rem 0!important}.patient-initial-claim>.patient-history-head{border-bottom:1px solid var(--border-color,#dfe5ee);padding-bottom:.35rem;margin-bottom:.55rem}
/* Autocomplete reutilizado por Provincia y Ciudad. */
.client-autocomplete{position:relative}.client-autocomplete .city-autocomplete-menu{left:calc(var(--bs-gutter-x)*.5);right:calc(var(--bs-gutter-x)*.5)}
/* Construcción con el estilo visual existente. */
.tarifas-construction-wrap{min-height:calc(100vh - 230px);display:grid;place-items:center;padding:2rem}.tarifas-construction-card{width:min(720px,100%);text-align:center;padding:2.25rem;border:1px solid var(--border-color,#dfe5ee);border-radius:1.15rem;background:var(--bs-body-bg,#fff);box-shadow:0 18px 50px rgba(22,34,51,.08)}.tarifas-construction-card .app-construction-icon{margin-inline:auto}.tarifas-construction-card h2{font-weight:850;margin:.8rem 0 .4rem}.tarifas-construction-card p{max-width:520px;margin:0 auto;color:var(--text-muted,#737d8d)}
html[data-theme="dark"] .tarifas-construction-card{background:#20262c;border-color:#343c45;box-shadow:0 20px 60px rgba(0,0,0,.25)}
@media(max-width:991.98px){#patientModal .files-patient-modal-dialog{width:min(96vw,960px)!important}.client-bottom-controls{justify-content:flex-start}}
@media(max-width:575.98px){#patientModal .files-patient-modal-dialog{width:calc(100vw - 1rem)!important}.client-add-row{grid-template-columns:1fr}.client-modal-footer-split{flex-direction:column}.client-modal-footer-split>div{width:100%;justify-content:flex-end}}


/* v0.1.38 - Clientes compactos, utilidades dentro del modal y contraste light */
.client-modal-dialog{width:min(1020px,calc(100vw - 2rem));max-width:1020px}
.client-modal-content .modal-header{padding:.65rem .8rem}.client-modal-content .modal-footer{padding:.55rem .8rem}
.client-edit-body,.client-detail-body{padding:.55rem .75rem!important}
.client-section.client-section-line{padding:.2rem 0 .3rem;margin:0 0 .38rem}
.client-section.client-section-line .client-section-title{margin:0 0 .38rem;font-size:.74rem}
.client-edit-body .form-label{font-size:.68rem;margin-bottom:.12rem}
.client-edit-body .form-control-sm,.client-edit-body .form-select-sm{min-height:31px;padding-top:.27rem;padding-bottom:.27rem}
.client-notes-input{min-height:31px!important;height:31px!important;resize:none;overflow:hidden}
.client-add-row{gap:.38rem}.client-add-row-follow{align-items:center}
.client-structured-list{gap:.28rem;max-height:86px;overflow:auto;overscroll-behavior:contain}
.client-structured-row{padding:.3rem .45rem;gap:.4rem}.client-item-remove{width:1.8rem;height:1.8rem}
.client-bottom-controls{gap:.65rem;padding:.08rem 0}.client-state-choice span{padding:.28rem .5rem;font-size:.73rem}
.client-detail-body{gap:.38rem}.client-detail-grid{gap:.38rem}.client-detail-grid>div{padding:.38rem .46rem}.client-detail-grid strong{font-size:.79rem}
.client-modal-footer-split{gap:.5rem}
html:not([data-theme="dark"]) .client-add-row .btn{color:#18212b!important}
html:not([data-theme="dark"]) .client-add-row .btn:hover,html:not([data-theme="dark"]) .client-add-row .btn:focus{color:#18212b!important}
@media(max-width:991.98px){.client-modal-dialog{width:min(96vw,940px)}}

/* v0.1.39 - Clientes/Despachadores */
.client-status-pill{border:1px solid var(--border-color,#dfe5ee);background:var(--bs-body-bg,#fff);border-radius:999px;padding:.28rem .55rem;font-size:.75rem;font-weight:750;display:inline-flex;align-items:center;gap:.3rem;opacity:.55;transition:.12s ease}.client-status-pill.active{opacity:1;box-shadow:0 0 0 2px rgba(100,116,139,.16)}.client-status-pill.is-green{color:#147548}.client-status-pill.is-yellow{color:#765700}.client-status-pill.is-red{color:#a31b2b}.client-status-pill:disabled{cursor:default}.client-state-picker .client-status-pill+ .client-status-pill{margin-left:.28rem}
.dispatcher-list-dialog{width:min(980px,calc(100vw - 2rem));max-width:980px}.dispatcher-form-dialog{width:min(620px,calc(100vw - 2rem));max-width:620px}
#dispatchersModal .modal-content,#dispatcherFormModal .modal-content{margin:auto}
.client-modal-content input[readonly],.client-modal-content textarea[readonly]{background:var(--bs-tertiary-bg,#f7f8fa);opacity:1}
@media(max-width:767.98px){.dispatcher-list-dialog,.dispatcher-form-dialog{width:calc(100vw - 1rem)}}

/* v0.1.40 - modal stack, dispatcher list sizing and read-only client status */
.dispatcher-list-dialog{width:min(1080px,calc(100vw - 2rem))!important;max-width:1080px!important}
#dispatchersModal .modal-content{min-height:min(560px,calc(100vh - 4rem));display:flex;flex-direction:column}
#dispatchersModal .modal-body{flex:1;min-height:0}
#dispatchersModal .table-responsive{max-height:360px;overflow:auto}
#dispatcherFormModal{z-index:1120!important}
#dispatcherFormModal .modal-dialog{position:relative;z-index:1122}
#dispatchersModal.has-dispatcher-child .modal-content:after{z-index:110;opacity:1;pointer-events:auto}
#patientModal.has-patient-child .patient-modal-content:after{z-index:110;opacity:1;pointer-events:auto}
#clientModal.has-client-child .client-modal-content:after{z-index:110;opacity:1;pointer-events:auto}
.files-child-modal{z-index:1120!important}
.files-child-modal .modal-dialog{position:relative;z-index:1122}
.client-state-picker-readonly{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.client-state-picker-readonly .client-state-label{font-weight:700;font-size:.75rem;color:var(--text-muted,#737d8d);margin-right:.2rem}
.client-state-picker-readonly .client-status-pill{pointer-events:none;opacity:.45}
.client-state-picker-readonly .client-status-pill.active{opacity:1}
@media(max-width:767.98px){.dispatcher-list-dialog{width:calc(100vw - 1rem)!important}.client-state-picker-readonly{justify-content:flex-start}}


/* v0.1.41 - estados rápidos, direcciones y separación visual de Cliente */
.client-bottom-controls-split{justify-content:space-between!important;align-items:center!important;width:100%}.client-main-active{margin-left:auto}.client-main-active-readonly{opacity:.95}.patient-history-state-action{cursor:pointer;font:inherit}.patient-history-state-action:hover,.patient-history-state-action:focus{filter:brightness(.92);box-shadow:0 0 0 2px rgba(100,116,139,.18)}
.direccion-fields-grid .city-autocomplete{min-width:0}.direccion-fields-grid .city-autocomplete .form-control{width:100%}
@media(max-width:991.98px){.client-bottom-controls-split{align-items:flex-start!important}.client-main-active{margin-left:0}}


/* v0.1.42 - Despachadores: listado amplio/centrado y formulario hijo centrado */
#dispatchersModal .dispatcher-list-dialog{--bs-modal-width:1180px;width:min(1180px,calc(100vw - 3rem))!important;max-width:1180px!important;margin-left:auto!important;margin-right:auto!important}
#dispatchersModal .modal-content{min-height:min(650px,calc(100vh - 5rem))!important}
#dispatchersModal .modal-body{padding:1rem 1.15rem;display:flex;flex-direction:column}
#dispatchersModal .table-responsive{flex:1;max-height:430px!important;overflow:auto}
#dispatcherFormModal .dispatcher-form-dialog{--bs-modal-width:680px;width:min(680px,calc(100vw - 3rem))!important;max-width:680px!important;margin-left:auto!important;margin-right:auto!important}
#dispatcherFormModal .modal-content{width:100%;margin:auto}
#dispatchersModal.has-dispatcher-child .modal-content:after{opacity:1!important;pointer-events:auto!important}
@media(max-width:767.98px){#dispatchersModal .dispatcher-list-dialog,#dispatcherFormModal .dispatcher-form-dialog{width:calc(100vw - 1rem)!important;max-width:calc(100vw - 1rem)!important}#dispatchersModal .modal-content{min-height:min(560px,calc(100vh - 2rem))!important}}


/* v0.1.43 - Despachadores: listado claramente más ancho que Nuevo/Editar */
#dispatchersModal .dispatcher-list-dialog{--bs-modal-width:1320px;width:min(1320px,calc(100vw - 2rem))!important;max-width:1320px!important;margin:auto!important}
#dispatchersModal .modal-content{min-height:0!important;max-height:min(78vh,700px)!important}
#dispatchersModal .modal-body{min-height:300px!important}
#dispatchersModal .table-responsive{max-height:420px!important;overflow:auto}
#dispatcherFormModal .dispatcher-form-dialog{--bs-modal-width:680px;width:min(680px,calc(100vw - 2rem))!important;max-width:680px!important;margin:auto!important}
@media(max-width:991.98px){#dispatchersModal .dispatcher-list-dialog{width:min(96vw,1100px)!important;max-width:min(96vw,1100px)!important}}
@media(max-width:767.98px){#dispatchersModal .dispatcher-list-dialog,#dispatcherFormModal .dispatcher-form-dialog{width:calc(100vw - 1rem)!important;max-width:calc(100vw - 1rem)!important}}


/* v0.1.44 - Despachadores: ancho real del contenido y centrado definitivo */
#dispatchersModal .modal-dialog.dispatcher-list-dialog{--bs-modal-width:1280px!important;width:min(1280px,calc(100vw - 4rem))!important;max-width:none!important;margin:1.75rem auto!important;justify-content:center!important}
#dispatchersModal .dispatcher-modal-host{display:block!important;width:100%!important;min-width:0!important;flex:0 0 100%!important}
#dispatchersModal .dispatcher-modal-host>.modal-content{width:100%!important;max-width:none!important;margin:0 auto!important}
#dispatcherFormModal .modal-dialog.dispatcher-form-dialog{--bs-modal-width:680px!important;width:min(680px,calc(100vw - 3rem))!important;max-width:680px!important;margin:1.75rem auto!important;justify-content:center!important}
#dispatcherFormModal .dispatcher-form-host{display:block!important;width:100%!important;min-width:0!important;flex:0 0 100%!important}
#dispatcherFormModal .dispatcher-form-host>.modal-content{width:100%!important;margin:0 auto!important}
@media(max-width:991.98px){#dispatchersModal .modal-dialog.dispatcher-list-dialog{width:calc(100vw - 2rem)!important;margin:1rem auto!important}}
@media(max-width:767.98px){#dispatchersModal .modal-dialog.dispatcher-list-dialog,#dispatcherFormModal .modal-dialog.dispatcher-form-dialog{width:calc(100vw - 1rem)!important;max-width:calc(100vw - 1rem)!important;margin:.5rem auto!important}}

/* v0.1.46 - Matriz compacta de permisos por rol/usuario */
.security-matrix-card{overflow:hidden}.security-matrix-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem;border-bottom:1px solid var(--border-color,#e6e9ee)}.security-matrix-search{position:relative;width:min(360px,100%)}.security-matrix-search>i{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--text-muted,#737d8d)}.security-matrix-search .form-control{padding-left:2.1rem}.security-override-legend{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:.65rem 1rem;border-bottom:1px solid var(--border-color,#e6e9ee);font-size:.78rem}.security-override-legend>span{display:inline-flex;align-items:center;gap:.35rem}.security-legend-chip{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:.45rem;font-weight:850;border:1px solid var(--border-color,#dfe4ea);background:var(--bs-body-bg,#fff)}.security-legend-chip.is-inherit{color:#64748b}.security-legend-chip.is-allow{color:#15803d;background:#ecfdf3;border-color:#bbf7d0}.security-legend-chip.is-deny{color:#b91c1c;background:#fff1f2;border-color:#fecdd3}.security-matrix-modules{display:grid}.security-matrix-module{border-bottom:1px solid var(--border-color,#e6e9ee)}.security-matrix-module:last-child{border-bottom:0}.security-matrix-module-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.25rem .8rem;background:color-mix(in srgb,var(--bs-body-bg,#fff),var(--accent-color) 1%)}.security-matrix-module-toggle{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-width:0;flex:1;border:0;background:transparent;color:var(--heading-color,#18212b);padding:.75rem 0;text-align:left}.security-matrix-module-title{display:flex;align-items:center;gap:.55rem;min-width:0}.security-matrix-module-title i{font-size:.8rem;transition:transform .16s ease}.security-matrix-module.is-open .security-matrix-module-title i{transform:rotate(90deg)}.security-matrix-module-summary{display:flex;align-items:center;gap:.75rem;color:var(--text-muted,#737d8d);font-size:.75rem;white-space:nowrap}.security-matrix-override-count{padding:.18rem .45rem;border-radius:999px;background:color-mix(in srgb,var(--accent-color),transparent 88%);color:var(--heading-color,#18212b);font-weight:750}.security-matrix-bulk{display:flex;align-items:center;gap:.35rem;flex:0 0 auto}.security-matrix-module-body{border-top:1px solid var(--border-color,#e6e9ee)}.security-matrix-table{font-size:.8rem}.security-matrix-table thead th{font-size:.68rem;text-transform:uppercase;letter-spacing:.035em;color:var(--text-muted,#737d8d);background:color-mix(in srgb,var(--bs-body-bg,#fff),var(--accent-color) 2%);white-space:nowrap}.security-matrix-table>:not(caption)>*>*{padding:.55rem .65rem;border-color:var(--border-color,#e8ebef)}.security-matrix-table tbody th{min-width:180px;white-space:nowrap}.security-matrix-item-column{min-width:190px}.security-matrix-permission-cell{min-width:170px}.security-matrix-na{color:#c0c6cf}.security-role-toggle{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-width:68px;margin:0;cursor:pointer}.security-role-toggle .form-check-input{margin:0!important;width:2.05rem!important;height:1.05rem!important}.security-role-toggle span{font-size:.72rem;font-weight:750;color:var(--text-muted,#737d8d);min-width:18px}.security-override-cell{display:flex;align-items:center;justify-content:center;gap:.45rem}.security-role-base{display:inline-flex;align-items:center;gap:.28rem;font-size:.65rem;color:var(--text-muted,#737d8d);white-space:nowrap}.security-override-segment{display:inline-flex;border:1px solid var(--border-color,#dfe4ea);border-radius:.55rem;overflow:hidden;background:var(--bs-body-bg,#fff)}.security-override-option{display:flex;align-items:center;justify-content:center;width:28px;height:28px;margin:0;border-right:1px solid var(--border-color,#dfe4ea);font-size:.72rem;font-weight:900;cursor:pointer;user-select:none;color:#64748b;background:transparent}.security-override-option:last-of-type{border-right:0}.btn-check:checked+.security-override-option.is-inherit{background:#e2e8f0;color:#334155}.btn-check:checked+.security-override-option.is-allow{background:#dcfce7;color:#166534}.btn-check:checked+.security-override-option.is-deny{background:#fee2e2;color:#991b1b}.btn-check:disabled+.security-override-option{opacity:.45;cursor:not-allowed}.security-effective-result{display:inline-flex;align-items:center;justify-content:center;width:23px;height:23px;border-radius:50%;font-size:.78rem;font-weight:900}.security-effective-result.is-allow{background:#dcfce7;color:#15803d}.security-effective-result.is-deny{background:#f1f5f9;color:#64748b}.security-effective-dot{display:inline-block;width:.5rem;height:.5rem;border-radius:50%}.security-effective-dot.is-allow{background:#22c55e}.security-effective-dot.is-deny{background:#94a3b8}.security-matrix-autosave{display:flex;align-items:center;justify-content:flex-end;gap:.45rem;padding:.65rem 1rem;border-top:1px solid var(--border-color,#e6e9ee);font-size:.74rem;color:var(--text-muted,#737d8d)}.security-autosave-dot{width:.5rem;height:.5rem;border-radius:50%;background:#22c55e}.security-matrix-empty{padding:2rem;text-align:center;color:var(--text-muted,#737d8d)}
html[data-theme="dark"] .security-matrix-toolbar,html[data-theme="dark"] .security-override-legend,html[data-theme="dark"] .security-matrix-module,html[data-theme="dark"] .security-matrix-module-body,html[data-theme="dark"] .security-matrix-autosave{border-color:#303740}html[data-theme="dark"] .security-matrix-module-header,html[data-theme="dark"] .security-matrix-table thead th{background:#20262c}html[data-theme="dark"] .security-override-segment,html[data-theme="dark"] .security-legend-chip{background:#1d2228;border-color:#3a424c}html[data-theme="dark"] .security-override-option{border-color:#3a424c}html[data-theme="dark"] .btn-check:checked+.security-override-option.is-inherit{background:#475569;color:#f8fafc}html[data-theme="dark"] .btn-check:checked+.security-override-option.is-allow{background:#14532d;color:#dcfce7}html[data-theme="dark"] .btn-check:checked+.security-override-option.is-deny{background:#7f1d1d;color:#fee2e2}html[data-theme="dark"] .security-effective-result.is-allow{background:#14532d;color:#dcfce7}html[data-theme="dark"] .security-effective-result.is-deny{background:#334155;color:#cbd5e1}
@media(max-width:1199.98px){.security-matrix-module-header{align-items:flex-start;flex-direction:column}.security-matrix-bulk{padding-bottom:.55rem}.security-matrix-table{min-width:760px}}
@media(max-width:767.98px){.security-matrix-toolbar{align-items:stretch;flex-direction:column}.security-matrix-search{width:100%;max-width:none}.security-matrix-module-summary{display:none}.security-matrix-bulk{flex-wrap:wrap}.security-matrix-table tbody th{min-width:145px}}

/* ==============================================================
   v0.1.47 - dark sólido, branding Logística y permisos semánticos
   ============================================================== */

/* Regla global de modales: superficies sólidas, sin gradientes ni transparencias.
   Light usa blanco; dark usa gris neutro para ambas empresas. */
html:not([data-theme="dark"]) .modal-content,
html:not([data-theme="dark"]) .modal-content > .modal-header,
html:not([data-theme="dark"]) .modal-content > .modal-body,
html:not([data-theme="dark"]) .modal-content > .modal-footer {
    background-color: #ffffff !important;
    background-image: none !important;
}

html[data-theme="dark"] .modal-content,
html[data-theme="dark"] .modal-content > .modal-header,
html[data-theme="dark"] .modal-content > .modal-body,
html[data-theme="dark"] .modal-content > .modal-footer {
    background-color: #252a30 !important;
    background-image: none !important;
    color: #e8edf2 !important;
}

html[data-theme="dark"] .modal-content {
    border-color: #454d56 !important;
    box-shadow: 0 24px 70px rgba(0, 0, 0, .38) !important;
}

html[data-theme="dark"] .modal-content > .modal-header,
html[data-theme="dark"] .modal-content > .modal-footer {
    border-color: #3d454e !important;
}

/* Inputs dentro de modales dark: gris algo más claro que el fondo para evitar
   un formulario demasiado oscuro y conservar lectura rápida. */
html[data-theme="dark"] .modal-content .form-control,
html[data-theme="dark"] .modal-content .form-select,
html[data-theme="dark"] .modal-content .input-group-text,
html[data-theme="dark"] .modal-content .form-control-plaintext {
    background-color: #30363d !important;
    background-image: none !important;
    border-color: #4b545e !important;
    color: #f2f5f7 !important;
}

html[data-theme="dark"] .modal-content .form-control::placeholder {
    color: #929ca7 !important;
    opacity: 1;
}

html[data-theme="dark"] .modal-content .form-control:disabled,
html[data-theme="dark"] .modal-content .form-control[readonly],
html[data-theme="dark"] .modal-content .form-select:disabled {
    background-color: #2b3137 !important;
    color: #c2c9d0 !important;
    opacity: 1;
}

html[data-theme="dark"] .modal-content .dropdown-menu,
html[data-theme="dark"] .modal-content .city-autocomplete-menu {
    background-color: #2a3036 !important;
    background-image: none !important;
    border-color: #48515a !important;
}

/* Logística dark: cualquier indicador de carga o acento de marca usa amarillo.
   Los colores semánticos (éxito/error/estado) no se alteran. */
html[data-theme="dark"][data-company-id="1"] .st-version-spinner {
    border-color: rgba(255, 215, 37, .28) !important;
    border-top-color: #FFD725 !important;
}

html[data-theme="dark"][data-company-id="1"] .st-version-toast-icon,
html[data-theme="dark"][data-company-id="1"] .st-update-lock-icon,
html[data-theme="dark"][data-company-id="1"] .loading-spinner {
    color: #FFD725 !important;
}

html[data-theme="dark"][data-company-id="1"] .loading-spinner {
    border-color: rgba(255, 215, 37, .26) !important;
    border-top-color: #FFD725 !important;
}

html[data-theme="dark"][data-company-id="1"] .text-primary,
html[data-theme="dark"][data-company-id="1"] .link-primary,
html[data-theme="dark"][data-company-id="1"] .nav-link:hover,
html[data-theme="dark"][data-company-id="1"] .nav-link:focus {
    --bs-primary-rgb: 255, 215, 37;
}

/* Permisos de usuario: permitido verde, denegado rojo. */
.security-effective-result.is-deny {
    background: #fee2e2 !important;
    color: #dc2626 !important;
}

.security-effective-dot.is-deny {
    background: #ef4444 !important;
}

html[data-theme="dark"] .security-effective-result.is-deny {
    background: #7f1d1d !important;
    color: #fecaca !important;
}

html[data-theme="dark"] .security-effective-dot.is-deny {
    background: #f87171 !important;
}

/* Permisos base de Rol: control binario semántico con Sí/No dentro del pill.
   El checkbox real permanece funcional y accesible dentro del label. */
.security-role-toggle {
    min-width: 64px !important;
    gap: 0 !important;
    position: relative;
}

.security-role-toggle .form-check-input {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    opacity: 0 !important;
    pointer-events: none !important;
    margin: 0 !important;
}

.security-role-toggle span {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 58px !important;
    height: 28px !important;
    padding: 0 11px !important;
    border: 1px solid #dc2626 !important;
    border-radius: 999px !important;
    background: #dc2626 !important;
    color: #ffffff !important;
    font-size: .72rem !important;
    font-weight: 850 !important;
    line-height: 1 !important;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.08) !important;
    transition: background-color .12s ease, border-color .12s ease, transform .12s ease !important;
}

.security-role-toggle .form-check-input:checked + span {
    background: #16a34a !important;
    border-color: #16a34a !important;
    color: #ffffff !important;
}

.security-role-toggle:has(.form-check-input:not(:disabled)):hover span {
    transform: translateY(-1px);
}

.security-role-toggle:has(.form-check-input:focus-visible) span {
    box-shadow: 0 0 0 3px rgba(59,130,246,.18), inset 0 0 0 1px rgba(255,255,255,.08) !important;
}

.security-role-toggle:has(.form-check-input:disabled) span {
    opacity: .58;
    cursor: not-allowed;
}

html[data-theme="dark"] .security-role-toggle span {
    background: #991b1b !important;
    border-color: #ef4444 !important;
    color: #fee2e2 !important;
}

html[data-theme="dark"] .security-role-toggle .form-check-input:checked + span {
    background: #166534 !important;
    border-color: #22c55e !important;
    color: #dcfce7 !important;
}

/* ==============================================================
   v0.1.48 - dark neutro global, contraste y superficies sin degradado
   Regla visual: en dark, las superficies estructurales son grises sólidas.
   La empresa se reconoce por acentos/bordes; nunca por un fondo degradado.
   ============================================================== */
html[data-theme="dark"] {
    --background-color: #171b1f !important;
    --surface-color: #22282e !important;
    --card-bg: #22282e !important;
    --default-color: #e3e8ed !important;
    --heading-color: #f5f7f9 !important;
    --muted-color: #b7c0c9 !important;
    --light-color: #9ca7b2 !important;
    --border-color: #3e4750 !important;
    --border-color-light: #343c44 !important;
    --border-color-dark: #56616c !important;
    --table-header-bg: #1d252c !important;
    --table-hover-bg: #2a3239 !important;
    --table-stripe-bg: #252c33 !important;
    --input-bg: #30373e !important;
    --input-border: #505a64 !important;
    --bs-body-color: #e3e8ed !important;
    --bs-body-bg: #171b1f !important;
    color-scheme: dark;
}

/* Superficies estructurales de TODA la aplicación: nunca degradadas en dark. */
html[data-theme="dark"] .main-content .card,
html[data-theme="dark"] .main-content .files-card,
html[data-theme="dark"] .main-content .files-form-card,
html[data-theme="dark"] .main-content .security-list-card,
html[data-theme="dark"] .main-content .security-permissions-card,
html[data-theme="dark"] .main-content .security-matrix-card,
html[data-theme="dark"] .main-content .widget-stat,
html[data-theme="dark"] .main-content .app-construction-card,
html[data-theme="dark"] .main-content .tarifas-construction-card,
html[data-theme="dark"] .main-content .app-foundation-grid > div,
html[data-theme="dark"] .main-content .page-header + .card,
html[data-theme="dark"] .user-menu,
html[data-theme="dark"] .app-lock-panel {
    background: #22282e !important;
    background-color: #22282e !important;
    background-image: none !important;
    border-color: #3f4852 !important;
}

html[data-theme="dark"] .main-content .card-header,
html[data-theme="dark"] .main-content .card-footer,
html[data-theme="dark"] .main-content .widget-stat-header,
html[data-theme="dark"] .security-matrix-module-header,
html[data-theme="dark"] .security-matrix-table thead th,
html[data-theme="dark"] .files-table thead th,
html[data-theme="dark"] .table thead th {
    background: #1d252c !important;
    background-color: #1d252c !important;
    background-image: none !important;
    border-color: #3e4750 !important;
    color: #cbd3db !important;
}

/* Bloques internos: gris apenas distinto para separar jerarquía sin teñir. */
html[data-theme="dark"] .main-content .client-section,
html[data-theme="dark"] .main-content .patient-history,
html[data-theme="dark"] .main-content .patient-notes,
html[data-theme="dark"] .main-content .patient-detail-grid > section,
html[data-theme="dark"] .main-content .files-active-box,
html[data-theme="dark"] .main-content .security-summary-grid > div,
html[data-theme="dark"] .main-content .app-company-sections section,
html[data-theme="dark"] .main-content .security-matrix-module-body,
html[data-theme="dark"] .main-content .security-permission-pane-head,
html[data-theme="dark"] .main-content .security-permission-footer {
    background: #252c33 !important;
    background-color: #252c33 !important;
    background-image: none !important;
    border-color: #424c56 !important;
}

/* Modales actuales y futuros: capa opaca neutral en todos sus shells conocidos. */
html[data-theme="dark"] .modal-content,
html[data-theme="dark"] .client-modal-content,
html[data-theme="dark"] .patient-modal-content,
html[data-theme="dark"] .files-entity-modal-content,
html[data-theme="dark"] #dispatchersModal .modal-content,
html[data-theme="dark"] #dispatcherFormModal .modal-content {
    background: #242a30 !important;
    background-color: #242a30 !important;
    background-image: none !important;
    border-color: #48525c !important;
    color: #e8edf2 !important;
    opacity: 1 !important;
}

html[data-theme="dark"] .modal-content > .modal-header,
html[data-theme="dark"] .modal-content > .modal-body,
html[data-theme="dark"] .modal-content > .modal-footer,
html[data-theme="dark"] .client-modal-content > form,
html[data-theme="dark"] .patient-modal-content > form {
    background: #242a30 !important;
    background-color: #242a30 !important;
    background-image: none !important;
}

html[data-theme="dark"] .modal-content > .modal-header,
html[data-theme="dark"] .modal-content > .modal-footer {
    border-color: #424b54 !important;
}

html[data-theme="dark"] .modal-content .client-section,
html[data-theme="dark"] .modal-content .patient-history,
html[data-theme="dark"] .modal-content .patient-notes,
html[data-theme="dark"] .modal-content .patient-detail-grid > section,
html[data-theme="dark"] .modal-content .security-summary-grid > div,
html[data-theme="dark"] .modal-content .client-structured-row {
    background: #282f36 !important;
    background-color: #282f36 !important;
    background-image: none !important;
    border-color: #46515b !important;
}

/* Formularios: controles un poco más claros; labels casi blancos. */
html[data-theme="dark"] .main-content .form-control,
html[data-theme="dark"] .main-content .form-select,
html[data-theme="dark"] .main-content .input-group-text,
html[data-theme="dark"] .modal-content .form-control,
html[data-theme="dark"] .modal-content .form-select,
html[data-theme="dark"] .modal-content .input-group-text {
    background: #30373e !important;
    background-color: #30373e !important;
    background-image: none !important;
    border-color: #515c67 !important;
    color: #f1f4f6 !important;
}

html[data-theme="dark"] .main-content .form-control:focus,
html[data-theme="dark"] .main-content .form-select:focus,
html[data-theme="dark"] .modal-content .form-control:focus,
html[data-theme="dark"] .modal-content .form-select:focus {
    color: #ffffff !important;
}

html[data-theme="dark"] .main-content .form-control::placeholder,
html[data-theme="dark"] .modal-content .form-control::placeholder {
    color: #a2adb7 !important;
    opacity: 1 !important;
}

html[data-theme="dark"] .main-content .form-label,
html[data-theme="dark"] .main-content label:not(.btn),
html[data-theme="dark"] .main-content legend,
html[data-theme="dark"] .modal-content .form-label,
html[data-theme="dark"] .modal-content label:not(.btn),
html[data-theme="dark"] .modal-content legend,
html[data-theme="dark"] .client-section-title,
html[data-theme="dark"] .files-inline-switch > span:not(.form-check),
html[data-theme="dark"] .client-state-label {
    color: #dce3e9 !important;
}

html[data-theme="dark"] .client-section-title span {
    background: #242a30 !important;
    color: #e8edf2 !important;
}

html[data-theme="dark"] .main-content .text-muted,
html[data-theme="dark"] .modal-content .text-muted,
html[data-theme="dark"] .main-content small,
html[data-theme="dark"] .modal-content small,
html[data-theme="dark"] .files-shared-note,
html[data-theme="dark"] .security-role-base,
html[data-theme="dark"] .security-matrix-module-summary {
    color: #adb7c1 !important;
}

html[data-theme="dark"] .main-content .table,
html[data-theme="dark"] .main-content .table td,
html[data-theme="dark"] .main-content .table tbody th,
html[data-theme="dark"] .modal-content .table,
html[data-theme="dark"] .modal-content .table td,
html[data-theme="dark"] .modal-content .table tbody th {
    color: #dde3e8 !important;
    border-color: #39434c !important;
}

/* Marca por empresa: sólo borde/acento sutil, nunca relleno degradado. */
html[data-theme="dark"][data-company-id="1"] .main-content .card,
html[data-theme="dark"][data-company-id="1"] .main-content .files-card,
html[data-theme="dark"][data-company-id="1"] .main-content .files-form-card,
html[data-theme="dark"][data-company-id="1"] .main-content .security-list-card,
html[data-theme="dark"][data-company-id="1"] .main-content .security-permissions-card,
html[data-theme="dark"][data-company-id="1"] .main-content .security-matrix-card,
html[data-theme="dark"][data-company-id="1"] .main-content .widget-stat,
html[data-theme="dark"][data-company-id="1"] .main-content .app-company-sections section,
html[data-theme="dark"][data-company-id="1"] .modal-content {
    border-color: rgba(255, 215, 37, .26) !important;
}

html[data-theme="dark"][data-company-id="2"] .main-content .card,
html[data-theme="dark"][data-company-id="2"] .main-content .files-card,
html[data-theme="dark"][data-company-id="2"] .main-content .files-form-card,
html[data-theme="dark"][data-company-id="2"] .main-content .security-list-card,
html[data-theme="dark"][data-company-id="2"] .main-content .security-permissions-card,
html[data-theme="dark"][data-company-id="2"] .main-content .security-matrix-card,
html[data-theme="dark"][data-company-id="2"] .main-content .widget-stat,
html[data-theme="dark"][data-company-id="2"] .main-content .app-company-sections section,
html[data-theme="dark"][data-company-id="2"] .modal-content {
    border-color: rgba(12, 149, 148, .30) !important;
}

html[data-theme="dark"][data-company-id="1"] .main-content .card-header,
html[data-theme="dark"][data-company-id="1"] .main-content .card-footer,
html[data-theme="dark"][data-company-id="1"] .modal-content > .modal-header,
html[data-theme="dark"][data-company-id="1"] .modal-content > .modal-footer {
    border-color: rgba(255, 215, 37, .18) !important;
}

html[data-theme="dark"][data-company-id="2"] .main-content .card-header,
html[data-theme="dark"][data-company-id="2"] .main-content .card-footer,
html[data-theme="dark"][data-company-id="2"] .modal-content > .modal-header,
html[data-theme="dark"][data-company-id="2"] .modal-content > .modal-footer {
    border-color: rgba(12, 149, 148, .20) !important;
}

/* Logística: Bootstrap primary y outline primary nunca vuelven a cyan/teal. */
html[data-company-id="1"] {
    --bs-primary: #FFD725 !important;
    --bs-primary-rgb: 255, 215, 37 !important;
}

html[data-company-id="1"] .btn-outline-primary {
    color: #d8b600 !important;
    border-color: #d8b600 !important;
    background: transparent !important;
    background-image: none !important;
}

html[data-theme="dark"][data-company-id="1"] .btn-outline-primary {
    color: #FFD725 !important;
    border-color: #FFD725 !important;
}

html[data-company-id="1"] .btn-outline-primary i,
html[data-company-id="1"] .btn-outline-primary svg {
    color: currentColor !important;
    fill: currentColor !important;
}

html[data-company-id="1"] .btn-outline-primary:hover,
html[data-company-id="1"] .btn-outline-primary:focus,
html[data-company-id="1"] .btn-outline-primary:active,
html[data-company-id="1"] .btn-outline-primary.active {
    background: #FFD725 !important;
    border-color: #FFD725 !important;
    color: #18212b !important;
}

/* Sidebar/header Logística dark: amarillo corporativo como único acento de marca. */
html[data-theme="dark"][data-company-id="1"] {
    --nav-hover-color: #FFD725 !important;
    --nav-dropdown-hover-color: #FFD725 !important;
    --sidebar-hover-bg: rgba(255, 215, 37, .10) !important;
    --sidebar-active-bg: rgba(255, 215, 37, .18) !important;
    --input-focus-border: #FFD725 !important;
    --input-focus-ring: rgba(255, 215, 37, .24) !important;
}

html[data-theme="dark"][data-company-id="1"] .sidebar .nav-link:hover,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-link:focus,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-item.has-submenu.open > .nav-link,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-submenu .nav-link:hover,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-submenu .nav-link:focus {
    color: #ffe568 !important;
}

/* Sin fondos amarillos/turquesa degradados en Dashboard/Configuración/listados. */
html[data-theme="dark"] .dashboard-grid > .card,
html[data-theme="dark"] .dashboard-grid + .row > [class*="col-"] > .card,
html[data-theme="dark"] .page-header + .card:has(.app-company-sections),
html[data-theme="dark"] .app-company-sections section,
html[data-theme="dark"] .files-card,
html[data-theme="dark"] .files-form-card,
html[data-theme="dark"] .security-matrix-module,
html[data-theme="dark"] .security-matrix-module-header,
html[data-theme="dark"] .security-matrix-module-body {
    background-image: none !important;
}

/* v0.1.48 - neutralización de variables company-specific que tenían mayor especificidad. */
html[data-theme="dark"][data-company-id="1"],
html[data-theme="dark"][data-company-id="2"] {
    --background-color: #171b1f !important;
    --surface-color: #22282e !important;
    --default-color: #e3e8ed !important;
    --heading-color: #f5f7f9 !important;
    --muted-color: #b7c0c9 !important;
    --light-color: #9ca7b2 !important;
    --border-color: #3e4750 !important;
    --border-color-light: #343c44 !important;
    --border-color-dark: #56616c !important;
    --header-bg: #1c2228 !important;
    --header-border: #3e4750 !important;
    --sidebar-bg: #12171c !important;
    --sidebar-border: #333c44 !important;
    --sidebar-color: #d7dee5 !important;
    --sidebar-muted-color: #94a0ac !important;
    --card-bg: #22282e !important;
    --card-border: #3e4750 !important;
    --table-header-bg: #1d252c !important;
    --table-hover-bg: #2a3239 !important;
    --table-stripe-bg: #252c33 !important;
    --input-bg: #30373e !important;
    --input-border: #505a64 !important;
}

html[data-theme="dark"][data-company-id="1"] .sidebar .nav-item > .nav-link.active,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-submenu > li > .nav-link.active {
    background: #FFD725 !important;
    background-color: #FFD725 !important;
    background-image: none !important;
    color: #18212b !important;
}

html[data-theme="dark"][data-company-id="1"] .sidebar .nav-item > .nav-link.active .nav-icon,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-item > .nav-link.active .nav-arrow,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-item > .nav-link.active .nav-badge,
html[data-theme="dark"][data-company-id="1"] .sidebar .nav-item > .nav-link.active .nav-badge-soft {
    color: #18212b !important;
}

html[data-theme="dark"] .header,
html[data-theme="dark"] .sidebar,
html[data-theme="dark"] .dropdown-menu,
html[data-theme="dark"] .user-menu {
    background-image: none !important;
}

/* v0.1.48 - overrides con la misma especificidad que los estilos legacy company-specific. */
html[data-theme="dark"][data-company-id="1"] .card,
html[data-theme="dark"][data-company-id="1"] .widget-stat,
html[data-theme="dark"][data-company-id="1"] .app-foundation-grid > div,
html[data-theme="dark"][data-company-id="1"] .user-menu,
html[data-theme="dark"][data-company-id="1"] .modal-content,
html[data-theme="dark"][data-company-id="1"] .app-lock-panel,
html[data-theme="dark"][data-company-id="2"] .card,
html[data-theme="dark"][data-company-id="2"] .widget-stat,
html[data-theme="dark"][data-company-id="2"] .app-foundation-grid > div,
html[data-theme="dark"][data-company-id="2"] .user-menu,
html[data-theme="dark"][data-company-id="2"] .modal-content,
html[data-theme="dark"][data-company-id="2"] .app-lock-panel {
    background: #22282e !important;
    background-color: #22282e !important;
    background-image: none !important;
}

html[data-theme="dark"][data-company-id="1"] .card-header,
html[data-theme="dark"][data-company-id="1"] .user-menu-header,
html[data-theme="dark"][data-company-id="1"] .widget-stat .widget-stat-header,
html[data-theme="dark"][data-company-id="2"] .card-header,
html[data-theme="dark"][data-company-id="2"] .user-menu-header,
html[data-theme="dark"][data-company-id="2"] .widget-stat .widget-stat-header {
    background: #1d252c !important;
    background-color: #1d252c !important;
    background-image: none !important;
}

html[data-theme="dark"][data-company-id="1"] .dashboard-grid > .card,
html[data-theme="dark"][data-company-id="1"] .dashboard-grid + .row > [class*="col-"] > .card,
html[data-theme="dark"][data-company-id="2"] .dashboard-grid > .card,
html[data-theme="dark"][data-company-id="2"] .dashboard-grid + .row > [class*="col-"] > .card,
html[data-theme="dark"][data-company-id="1"] .page-header + .card:has(.app-company-sections),
html[data-theme="dark"][data-company-id="2"] .page-header + .card:has(.app-company-sections) {
    background: #22282e !important;
    background-color: #22282e !important;
    background-image: none !important;
}

html[data-theme="dark"][data-company-id="1"] .app-company-sections section,
html[data-theme="dark"][data-company-id="1"] .company-section-general,
html[data-theme="dark"][data-company-id="1"] .company-section-contact,
html[data-theme="dark"][data-company-id="1"] .company-section-billing,
html[data-theme="dark"][data-company-id="1"] .company-section-retention,
html[data-theme="dark"][data-company-id="1"] .company-section-night,
html[data-theme="dark"][data-company-id="2"] .app-company-sections section,
html[data-theme="dark"][data-company-id="2"] .company-section-general,
html[data-theme="dark"][data-company-id="2"] .company-section-contact,
html[data-theme="dark"][data-company-id="2"] .company-section-billing,
html[data-theme="dark"][data-company-id="2"] .company-section-retention,
html[data-theme="dark"][data-company-id="2"] .company-section-night {
    background: #252c33 !important;
    background-color: #252c33 !important;
    background-image: none !important;
}

/* ==============================================================
   v0.1.49 - formularios dark normalizados + permisos/excepciones
   ============================================================== */

/* Encabezados de módulos de permisos: las acciones masivas siempre quedan
   dentro de la tarjeta y visibles aunque la tabla tenga muchas columnas. */
.security-matrix-module-header{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    align-items:center!important;
    gap:.65rem!important;
    width:100%!important;
    min-width:0!important;
    overflow:hidden!important;
}
.security-matrix-module-toggle{
    width:100%!important;
    min-width:0!important;
    overflow:hidden!important;
}
.security-matrix-module-summary{
    margin-left:auto!important;
    min-width:0!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
}
.security-matrix-bulk{
    position:relative!important;
    right:auto!important;
    display:flex!important;
    flex-wrap:nowrap!important;
    justify-content:flex-end!important;
    min-width:max-content!important;
    max-width:100%!important;
    z-index:3!important;
}
.security-matrix-bulk .btn{white-space:nowrap!important}
@media(max-width:1199.98px){
    .security-matrix-module-header{grid-template-columns:minmax(0,1fr) auto!important;align-items:center!important}
    .security-matrix-bulk{padding-bottom:0!important}
    .security-matrix-module-summary{display:none!important}
}
@media(max-width:767.98px){
    .security-matrix-module-header{grid-template-columns:1fr!important}
    .security-matrix-bulk{justify-content:flex-start!important;flex-wrap:wrap!important;padding-bottom:.5rem!important}
}

/* Las secciones de formularios usan una sola jerarquía visual: título + línea.
   Se elimina el marco redondeado alrededor de cada sección. */
.client-section.client-section-line,
.patient-history,
.patient-history-compact,
.patient-initial-claim{
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
    padding:.3rem 0 .45rem!important;
    margin:.15rem 0 .55rem!important;
}
.patient-history-head,
.patient-initial-claim>.patient-history-head{
    position:relative!important;
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:.75rem!important;
    padding:0 0 .42rem!important;
    margin:0 0 .5rem!important;
    border-bottom:1px solid var(--border-color,#dfe5ee)!important;
}
.patient-history-head h6,
.patient-initial-claim>.patient-history-head h6,
.client-section.client-section-line .client-section-title{
    font-weight:850!important;
}

/* El color de empresa aparece sólo en título/línea/acento de sección. */
html[data-theme="dark"][data-company-id="1"] .modal-content .patient-history-head,
html[data-theme="dark"][data-company-id="1"] .modal-content .patient-initial-claim>.patient-history-head,
html[data-theme="dark"][data-company-id="1"] .modal-content .client-section.client-section-line .client-section-title:before,
html[data-theme="dark"][data-company-id="1"] .modal-content .client-section.client-section-line .client-section-title:after{
    border-color:rgba(255,215,37,.62)!important;
    background:#FFD725!important;
}
html[data-theme="dark"][data-company-id="1"] .modal-content .patient-history-head h6,
html[data-theme="dark"][data-company-id="1"] .modal-content .patient-initial-claim>.patient-history-head h6,
html[data-theme="dark"][data-company-id="1"] .modal-content .client-section.client-section-line .client-section-title,
html[data-theme="dark"][data-company-id="1"] .modal-content .client-section.client-section-line .client-section-title span{
    color:#FFE45F!important;
}
html[data-theme="dark"][data-company-id="2"] .modal-content .patient-history-head,
html[data-theme="dark"][data-company-id="2"] .modal-content .patient-initial-claim>.patient-history-head,
html[data-theme="dark"][data-company-id="2"] .modal-content .client-section.client-section-line .client-section-title:before,
html[data-theme="dark"][data-company-id="2"] .modal-content .client-section.client-section-line .client-section-title:after{
    border-color:rgba(27,190,174,.62)!important;
    background:#1BBEAE!important;
}
html[data-theme="dark"][data-company-id="2"] .modal-content .patient-history-head h6,
html[data-theme="dark"][data-company-id="2"] .modal-content .patient-initial-claim>.patient-history-head h6,
html[data-theme="dark"][data-company-id="2"] .modal-content .client-section.client-section-line .client-section-title,
html[data-theme="dark"][data-company-id="2"] .modal-content .client-section.client-section-line .client-section-title span{
    color:#6FE1D6!important;
}

/* En patient-history la línea es el propio borde inferior del header. */
html[data-theme="dark"][data-company-id="1"] .modal-content .patient-history-head,
html[data-theme="dark"][data-company-id="1"] .modal-content .patient-initial-claim>.patient-history-head{border-bottom-color:rgba(255,215,37,.62)!important;background:transparent!important}
html[data-theme="dark"][data-company-id="2"] .modal-content .patient-history-head,
html[data-theme="dark"][data-company-id="2"] .modal-content .patient-initial-claim>.patient-history-head{border-bottom-color:rgba(27,190,174,.62)!important;background:transparent!important}

/* Tablas internas de formularios conservan una caja sutil, no una sección completa. */
html[data-theme="dark"] .modal-content .patient-history-scroll{
    border:1px solid #3b4650!important;
    border-radius:.45rem!important;
    overflow:auto!important;
    background:#252c33!important;
}
html[data-theme="dark"] .modal-content .patient-history-scroll .table{margin:0!important}

/* Ningún formulario/modal puede sobresalir de los bordes redondeados. */
.modal-dialog,.modal-content,.modal-content form,.modal-body,.modal-header,.modal-footer{box-sizing:border-box!important;min-width:0}
.modal-content,.client-modal-content,.patient-modal-content,.files-entity-modal-content,#dispatchersModal .modal-content,#dispatcherFormModal .modal-content{
    overflow:hidden!important;
}
.modal-content>.modal-body{overflow-x:hidden!important}
.modal-content .row>*{min-width:0!important}
.modal-content .form-control,.modal-content .form-select,.modal-content textarea,.modal-content .input-group{max-width:100%!important;box-sizing:border-box!important}

/* Más contraste de textos dentro de formularios dark. */
html[data-theme="dark"] .modal-content .form-label,
html[data-theme="dark"] .modal-content label:not(.btn),
html[data-theme="dark"] .modal-content .modal-title,
html[data-theme="dark"] .modal-content .patient-compact-grid strong,
html[data-theme="dark"] .modal-content .files-inline-switch>span:first-child{
    color:#F3F6F8!important;
}
html[data-theme="dark"] .modal-content .patient-compact-grid>div>span,
html[data-theme="dark"] .modal-content .text-muted,
html[data-theme="dark"] .modal-content small{
    color:#BCC6CF!important;
}

/* Estados de detalle: semánticos y claramente visibles. */
html[data-theme="dark"] .modal-content .badge.text-bg-success,
html[data-theme="dark"] .modal-content .app-status-badge.text-bg-success{
    background:#159447!important;color:#fff!important;border:1px solid #34D070!important
}
html[data-theme="dark"] .modal-content .badge.text-bg-warning,
html[data-theme="dark"] .modal-content .app-status-badge.text-bg-warning{
    background:#D69B00!important;color:#171B1F!important;border:1px solid #FFD04A!important
}
html[data-theme="dark"] .modal-content .badge.text-bg-danger,
html[data-theme="dark"] .modal-content .app-status-badge.text-bg-danger{
    background:#B52B35!important;color:#fff!important;border:1px solid #F15A64!important
}
html[data-theme="dark"] .modal-content .badge.text-bg-secondary,
html[data-theme="dark"] .modal-content .app-status-badge.text-bg-secondary{
    background:#59636D!important;color:#fff!important;border:1px solid #7A8793!important
}

/* Nuevo/Editar/Detalle Paciente comparten exactamente el mismo ancho visual. */
#patientModal .files-patient-modal-dialog{
    width:min(1180px,calc(100vw - 2rem))!important;
    max-width:1180px!important;
    margin:1.25rem auto!important;
}
#patientModal [data-patient-modal-host],#patientModal .patient-modal-content{width:100%!important;max-width:100%!important}
#patientModal .patient-edit-body{max-height:min(72vh,720px);overflow-y:auto!important;overflow-x:hidden!important}

/* Secciones de pacientes staged/nuevo no crecen distinto de Editar. */
#patientModal [data-staged-directions-section],#patientModal [data-staged-claims-section]{margin-top:.55rem!important}
#patientModal [data-staged-directions-body] td,#patientModal [data-staged-claims-body] td{vertical-align:middle}

/* Excepciones por usuario: resultado permitido verde, denegado rojo. */
.security-effective-result.is-deny{background:#FEE2E2!important;color:#DC2626!important}
.security-effective-dot.is-deny{background:#EF4444!important}
html[data-theme="dark"] .security-effective-result.is-deny{background:#8B1F28!important;color:#FFE4E6!important;border:1px solid #EF535E!important}
html[data-theme="dark"] .security-effective-dot.is-deny{background:#FF5C66!important}
@media(max-width:1399.98px){
    .security-matrix-module-summary{display:none!important}
}
html[data-theme="dark"] .modal-content .form-check-input:disabled{opacity:1!important;filter:none!important}

/* ==============================================================
   v0.1.50 - Pacientes + branding Logística dark en topbar/soporte
   ============================================================== */

/* Título de sección reutilizable para Datos del paciente.
   Mantiene el mismo patrón visual de título + línea usado en formularios. */
.patient-section-title{
    display:flex;
    align-items:center;
    gap:.55rem;
    margin:.05rem 0 .65rem;
    font-size:.78rem;
    font-weight:850;
    line-height:1.2;
    color:var(--heading-color,#18212b);
}
.patient-section-title::before,
.patient-section-title::after{
    content:"";
    height:1px;
    background:var(--border-color,#dfe5ee);
}
.patient-section-title::before{width:1.6rem;flex:0 0 1.6rem}
.patient-section-title::after{flex:1 1 auto;min-width:1.5rem}
.patient-section-title>span{white-space:nowrap}

/* Dark: la línea/título identifica la empresa sin teñir la superficie. */
html[data-theme="dark"][data-company-id="1"] .patient-section-title{color:#FFE45F!important}
html[data-theme="dark"][data-company-id="1"] .patient-section-title::before,
html[data-theme="dark"][data-company-id="1"] .patient-section-title::after{background:#FFD725!important}
html[data-theme="dark"][data-company-id="2"] .patient-section-title{color:#6FE1D6!important}
html[data-theme="dark"][data-company-id="2"] .patient-section-title::before,
html[data-theme="dark"][data-company-id="2"] .patient-section-title::after{background:#1BBEAE!important}

/* Logística dark: no usar cyan/teal como acento de marca en soporte/topbar.
   Verde/rojo quedan reservados para estados semánticos. */
html[data-theme="dark"][data-company-id="1"] .app-support-avatar,
html[data-theme="dark"][data-company-id="1"] .app-support-send{
    background:#FFD725!important;
    border-color:#FFD725!important;
    color:#18212b!important;
}
html[data-theme="dark"][data-company-id="1"] .app-support-avatar i,
html[data-theme="dark"][data-company-id="1"] .app-support-send i{
    color:#18212b!important;
}

/* Los tres controles de la topbar (Soporte, tema y fullscreen) resaltan en
   amarillo cuando reciben hover/focus/estado abierto. */
html[data-theme="dark"][data-company-id="1"] .header-action:hover,
html[data-theme="dark"][data-company-id="1"] .header-action:focus,
html[data-theme="dark"][data-company-id="1"] .header-action:focus-visible,
html[data-theme="dark"][data-company-id="1"] .header-action:active,
html[data-theme="dark"][data-company-id="1"] .header-action[aria-expanded="true"]{
    color:#FFD725!important;
    border-color:#FFD725!important;
    background:#2B3036!important;
    background-image:none!important;
    box-shadow:0 0 0 3px rgba(255,215,37,.16)!important;
    outline:none!important;
}
html[data-theme="dark"][data-company-id="1"] .header-action:hover i,
html[data-theme="dark"][data-company-id="1"] .header-action:focus i,
html[data-theme="dark"][data-company-id="1"] .header-action:focus-visible i,
html[data-theme="dark"][data-company-id="1"] .header-action:active i,
html[data-theme="dark"][data-company-id="1"] .header-action[aria-expanded="true"] i,
html[data-theme="dark"][data-company-id="1"] .app-support-button:hover span,
html[data-theme="dark"][data-company-id="1"] .app-support-button:focus span,
html[data-theme="dark"][data-company-id="1"] .app-support-button:focus-visible span{
    color:#FFD725!important;
}

/* Refuerzo para utilidades Bootstrap/template que todavía puedan heredar el
   cyan base del template en Logística dark. */
html[data-theme="dark"][data-company-id="1"] .text-primary,
html[data-theme="dark"][data-company-id="1"] .link-primary,
html[data-theme="dark"][data-company-id="1"] a.text-primary,
html[data-theme="dark"][data-company-id="1"] .btn-link:not(.text-danger){
    color:#FFD725!important;
}
html[data-theme="dark"][data-company-id="1"] .btn-outline-primary{
    color:#FFD725!important;
    border-color:#FFD725!important;
}
html[data-theme="dark"][data-company-id="1"] .btn-outline-primary:hover,
html[data-theme="dark"][data-company-id="1"] .btn-outline-primary:focus,
html[data-theme="dark"][data-company-id="1"] .btn-outline-primary:focus-visible{
    background:#FFD725!important;
    color:#18212b!important;
    border-color:#FFD725!important;
}

/* v0.1.51 - editor enriquecido global, estilo Quill pero autocontenido/CSP-safe */
.app-richtext{border:1px solid var(--bs-border-color);border-radius:10px;overflow:hidden;background:var(--bs-body-bg);min-width:0}.app-richtext-toolbar{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:6px 8px;border-bottom:1px solid var(--bs-border-color);background:color-mix(in srgb,var(--bs-secondary-bg),var(--bs-body-bg) 35%)}.app-richtext-btn,.app-richtext-select,.app-richtext-color{height:30px;min-width:30px;border:1px solid var(--bs-border-color);border-radius:6px;background:var(--bs-body-bg);color:var(--bs-body-color);display:inline-flex;align-items:center;justify-content:center}.app-richtext-btn{padding:0 8px}.app-richtext-btn:hover,.app-richtext-btn:focus,.app-richtext-select:focus,.app-richtext-color:focus-within{border-color:var(--accent-color);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-color),transparent 80%)}.app-richtext-select{padding:0 6px;min-width:86px}.app-richtext-color{position:relative;padding:0 7px;gap:4px}.app-richtext-color input{width:16px;height:16px;border:0;padding:0;background:transparent}.app-richtext-separator{width:1px;height:22px;background:var(--bs-border-color);margin:0 2px}.app-richtext-editor{min-height:72px;max-height:180px;overflow:auto;padding:9px 11px;outline:0;color:var(--bs-body-color);background:var(--bs-body-bg);line-height:1.45}.app-richtext-editor:empty:before{content:attr(data-placeholder);color:var(--bs-secondary-color);pointer-events:none}.app-richtext.is-readonly .app-richtext-editor{min-height:42px;max-height:none;background:var(--bs-secondary-bg);cursor:default}.app-richtext-editor p:last-child{margin-bottom:0}.app-richtext-editor ul,.app-richtext-editor ol{margin-bottom:.35rem}.app-richtext-editor a{color:var(--accent-color);text-decoration:underline}.app-richtext-compact .app-richtext-editor{min-height:58px;max-height:120px}.app-richtext-readonly-flat{border:0;border-radius:0}.app-richtext-readonly-flat .app-richtext-editor{padding:0;background:transparent}
html[data-theme="dark"] .app-richtext{background:#2b3138;border-color:#4b5662}html[data-theme="dark"] .app-richtext-toolbar{background:#232a31;border-color:#4b5662}html[data-theme="dark"] .app-richtext-btn,html[data-theme="dark"] .app-richtext-select,html[data-theme="dark"] .app-richtext-color{background:#303842;color:#eef2f6;border-color:#53606d}html[data-theme="dark"] .app-richtext-editor{background:#303842;color:#eef2f6}html[data-theme="dark"] .app-richtext.is-readonly .app-richtext-editor{background:#252c33}
.app-state-reason-dialog{max-width:720px}.app-state-reason-modal .modal-content{overflow:hidden}

/* v0.1.51 - Prestadores */
.provider-modal-dialog{width:min(1180px,calc(100vw - 32px));max-width:1180px;margin-left:auto!important;margin-right:auto!important}.provider-modal-content{overflow:hidden}.provider-modal-body{padding:12px 16px;max-height:calc(100vh - 150px);overflow:auto}.provider-location-cell small,.provider-phone-cell span{display:block;color:var(--bs-secondary-color);font-size:.78rem}.provider-location-cell strong{display:block}.provider-switch-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.provider-switch{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--bs-border-color);border-radius:8px;padding:6px 9px;min-width:0}.provider-switch>span:first-child{font-size:.78rem;font-weight:700}.provider-tariff-mode{display:flex;align-items:center;gap:8px;border:0;padding:0;margin:0}.provider-tariff-mode legend{float:none;width:auto;margin:0 4px 0 0;font-size:.78rem;font-weight:800}.provider-tariff-mode label{position:relative}.provider-tariff-mode input{position:absolute;opacity:0;pointer-events:none}.provider-tariff-mode span{display:inline-flex;padding:5px 10px;border:1px solid var(--bs-border-color);border-radius:999px;font-size:.76rem;font-weight:800}.provider-tariff-mode input:checked+span{border-color:var(--accent-color);background:color-mix(in srgb,var(--accent-color),transparent 82%);color:var(--bs-body-color)}.provider-bottom-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:8px;padding-top:8px;border-top:1px solid var(--bs-border-color)}.provider-autocomplete{position:relative}.provider-autocomplete .city-autocomplete-menu{z-index:1120}.provider-two-sections>.col-lg-6{display:flex}.provider-two-sections .app-form-section{width:100%}.app-form-section{margin:0 0 8px}.app-form-section-title{display:flex;align-items:center;gap:10px;margin:2px 0 8px;color:var(--bs-body-color);font-size:.84rem;font-weight:800}.app-form-section-title:before,.app-form-section-title:after{content:"";height:1px;background:color-mix(in srgb,var(--accent-color),transparent 42%);flex:1}.app-form-section-title:before{max-width:24px}.app-form-section-title span{white-space:nowrap}.construction-card.app-construction-modern{max-width:880px;margin:40px auto;padding:38px;text-align:center;border:1px solid color-mix(in srgb,var(--accent-color),transparent 55%);border-radius:16px;background:var(--bs-secondary-bg);box-shadow:var(--bs-box-shadow-sm)}.construction-card.app-construction-modern .construction-icon{font-size:2rem;color:var(--accent-color);margin-bottom:8px}
html[data-theme="dark"] .provider-switch{background:#252c33;border-color:#46515c}html[data-theme="dark"] .provider-tariff-mode span{background:#252c33;border-color:#46515c}html[data-theme="dark"] .app-form-section-title{color:#f1f4f7}
@media(max-width:992px){.provider-switch-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.provider-modal-dialog{width:calc(100vw - 20px)}}@media(max-width:576px){.provider-switch-grid{grid-template-columns:1fr}.provider-bottom-controls{align-items:flex-end;flex-direction:column}.providers-table{min-width:1050px}}

/* ==============================================================
   v0.1.51 - Rich text global + Prestadores + estados con motivo
   ============================================================== */
.app-form-active-row{display:flex;justify-content:flex-end;align-items:center;gap:.75rem;margin-top:.65rem;padding-top:.55rem;border-top:1px solid var(--bs-border-color)}
.app-form-active-row-readonly{justify-content:flex-end}.app-status-badge{display:inline-flex;align-items:center;padding:.3rem .65rem;border-radius:999px;font-size:.76rem;font-weight:850;border:1px solid transparent}.app-status-badge.is-active{background:#198754;color:#fff;border-color:#31c978}.app-status-badge.is-inactive{background:#5f6974;color:#fff;border-color:#7d8995}
.patient-detail-field{height:100%;border:1px solid var(--bs-border-color);border-radius:.55rem;padding:.5rem .65rem;background:var(--bs-secondary-bg)}.patient-detail-field span{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.035em;color:var(--bs-secondary-color);margin-bottom:.12rem}.patient-detail-field strong{display:block;word-break:break-word}
html[data-theme="dark"] .patient-detail-field{background:#252c33;border-color:#46515c}html[data-theme="dark"] .patient-detail-field span{color:#bfc9d2}html[data-theme="dark"] .patient-detail-field strong{color:#f3f6f8}

/* Secciones de Pacientes: línea corporativa, nunca caja redondeada de sección. */
#patientModal .patient-history{border:0!important;border-radius:0!important;background:transparent!important;padding:.28rem 0 .38rem!important;box-shadow:none!important}
#patientModal .patient-history-head{border-bottom:1px solid var(--bs-border-color)!important;padding:0 0 .4rem!important;margin-bottom:.45rem!important}
html[data-theme="dark"][data-company-id="1"] #patientModal .patient-history-head{border-bottom-color:rgba(255,215,37,.72)!important}html[data-theme="dark"][data-company-id="1"] #patientModal .patient-history-head h6{color:#FFE45F!important}
html[data-theme="dark"][data-company-id="2"] #patientModal .patient-history-head{border-bottom-color:rgba(27,190,174,.72)!important}html[data-theme="dark"][data-company-id="2"] #patientModal .patient-history-head h6{color:#6FE1D6!important}

/* Editor enriquecido global CSP-safe. */
.app-richtext-toolbar{position:sticky;top:0;z-index:2}.app-richtext.is-readonly .app-richtext-editor{min-height:44px}.app-richtext.is-readonly:has(.app-richtext-editor:empty){display:none}
html[data-theme="dark"] .app-richtext-editor a{color:#8fc5ff}
html[data-theme="dark"][data-company-id="1"] .app-richtext-btn:hover,html[data-theme="dark"][data-company-id="1"] .app-richtext-btn:focus,html[data-theme="dark"][data-company-id="1"] .app-richtext-select:focus{border-color:#FFD725!important;box-shadow:0 0 0 2px rgba(255,215,37,.18)!important}

/* Motivo de estado: modal hijo por encima del modal padre sin bloquearlo al cerrar. */
.app-state-reason-modal{z-index:1120!important}.app-state-reason-modal .app-child-modal-dimmer{position:fixed;inset:0;background:rgba(4,8,12,.58);z-index:0}.app-state-reason-modal .modal-dialog{position:relative;z-index:1}.has-app-child-modal{pointer-events:none}.app-state-reason-dialog{width:min(720px,calc(100vw - 2rem));max-width:720px!important}

/* Prestadores */
.providers-table{min-width:1260px}.provider-modal-body .app-form-section{padding:.2rem 0 .35rem}.provider-modal-body .app-form-section-title{margin:.1rem 0 .55rem}.provider-status-caption{font-size:.72rem;color:var(--bs-secondary-color)}
html[data-theme="dark"] .providers-table td,html[data-theme="dark"] .providers-table th{vertical-align:middle}
.provider-search-wide{max-width:760px!important;flex:1 1 760px!important}

/* ==============================================================
   v0.1.52 - Prestadores compacto, ancho y sin doble scroll
   ============================================================== */
#providerModal{overflow:hidden!important;padding:0!important}
#providerModal .provider-modal-dialog{width:min(1520px,calc(100vw - 24px))!important;max-width:1520px!important;height:calc(100dvh - 16px);margin:8px auto!important;display:flex;align-items:center;justify-content:center;overflow:hidden}
#providerModal [data-provider-modal-host]{width:100%;max-height:100%;min-width:0}
#providerModal .provider-modal-content{width:100%;max-height:100%;overflow:hidden}
#providerModal .provider-modal-content>form{display:flex;flex-direction:column;max-height:calc(100dvh - 16px);min-height:0}
#providerModal .modal-header,#providerModal .provider-modal-footer{flex:0 0 auto;position:relative;z-index:3}
#providerModal .provider-modal-body{flex:1 1 auto;min-height:0;max-height:none!important;overflow-y:auto;overflow-x:hidden;padding:7px 14px 5px;scrollbar-gutter:stable}
#providerModal .provider-modal-footer{padding:.5rem .85rem;background:var(--bs-body-bg);border-top:1px solid var(--bs-border-color)}
#providerModal .modal-header{padding:.55rem .85rem;background:var(--bs-body-bg)}
#providerModal .modal-title{font-size:1.03rem}
.provider-section{margin:0 0 3px!important;padding:0 0 3px!important}
.provider-modal-body .app-form-section-title{margin:0 0 4px!important;font-size:.79rem}
.provider-modal-body .form-label{font-size:.70rem;font-weight:750;margin-bottom:2px;line-height:1.05}
.provider-modal-body .form-control-sm,.provider-modal-body .input-group-sm>.form-control,.provider-modal-body .input-group-sm>.btn{min-height:30px;padding-top:.25rem;padding-bottom:.25rem}
.provider-grid{display:grid;gap:5px 8px;align-items:end;min-width:0}
.provider-grid-main{grid-template-columns:2fr 2fr .82fr .72fr}
.provider-grid-location{grid-template-columns:2.15fr 1.22fr .62fr 1.08fr .78fr .72fr 1.45fr;margin-top:5px}
.provider-grid-billing{grid-template-columns:1.7fr .65fr 1.15fr 1.05fr .72fr .72fr}
.provider-grid-contact{grid-template-columns:.85fr .85fr .85fr 1.45fr 1.5fr}
.provider-grid-web{grid-template-columns:1fr 1fr}
.provider-field{min-width:0}
.provider-switch-grid{gap:5px!important}
.provider-switch-grid-operation{grid-template-columns:repeat(4,minmax(0,1fr))}
.provider-switch-grid-billing{grid-template-columns:repeat(5,minmax(0,1fr));margin-top:5px}
.provider-switch{padding:4px 7px!important;border-radius:7px!important;min-height:32px}
.provider-switch>span:first-child{font-size:.72rem!important;line-height:1.05}
.provider-tariff-mode{margin-top:5px!important;gap:6px!important}
.provider-tariff-mode span{padding:4px 9px!important;font-size:.72rem!important}
.provider-retention-block{margin-top:5px}
.provider-retention-add{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}
.provider-retention-list{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px;max-height:74px;overflow:auto}
.provider-retention-row,.provider-retention-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--bs-border-color);border-radius:8px;padding:3px 5px 3px 8px;background:var(--bs-secondary-bg);font-size:.74rem;min-width:0}
.provider-retention-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px}
.provider-retention-empty{font-size:.74rem;color:var(--bs-secondary-color)}
.provider-notes-section .app-richtext-toolbar{padding:3px 5px}
.provider-notes-section .app-richtext-editor{min-height:44px!important;max-height:72px!important;padding:6px 8px}
.provider-bottom-controls{margin-top:4px!important;padding-top:5px!important}
html[data-theme="dark"] #providerModal .provider-modal-content,html[data-theme="dark"] #providerModal .modal-header,html[data-theme="dark"] #providerModal .provider-modal-footer{background:#252b31!important}
html[data-theme="dark"] .provider-retention-row,html[data-theme="dark"] .provider-retention-chip{background:#2d343c;border-color:#4b5662;color:#eef2f6}
html[data-theme="dark"] .provider-switch .form-check-input:not(:checked){background-color:#343c45!important;border-color:#596572!important}
html[data-theme="dark"][data-company-id="1"] #providerModal .app-form-section-title:before,html[data-theme="dark"][data-company-id="1"] #providerModal .app-form-section-title:after{background:rgba(255,215,37,.72)!important}
html[data-theme="dark"][data-company-id="1"] #providerModal .app-form-section-title{color:#FFE45F!important}
html[data-theme="dark"][data-company-id="1"] #providerModal .form-check-input:checked{background-color:#FFD725!important;border-color:#FFD725!important}
html[data-theme="dark"][data-company-id="1"] #providerModal .form-check-input:focus{border-color:#FFD725!important;box-shadow:0 0 0 .16rem rgba(255,215,37,.16)!important}
html[data-theme="dark"][data-company-id="2"] #providerModal .app-form-section-title:before,html[data-theme="dark"][data-company-id="2"] #providerModal .app-form-section-title:after{background:rgba(27,190,174,.72)!important}
html[data-theme="dark"][data-company-id="2"] #providerModal .app-form-section-title{color:#6FE1D6!important}
@media(max-width:1200px){#providerModal .provider-modal-dialog{width:calc(100vw - 16px)!important}.provider-grid-main{grid-template-columns:repeat(2,minmax(0,1fr))}.provider-grid-location{grid-template-columns:repeat(4,minmax(0,1fr))}.provider-grid-billing{grid-template-columns:repeat(3,minmax(0,1fr))}.provider-grid-contact{grid-template-columns:repeat(3,minmax(0,1fr))}.provider-switch-grid-billing{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:768px){#providerModal .provider-modal-dialog{height:calc(100dvh - 8px);margin:4px auto!important}.provider-grid-main,.provider-grid-location,.provider-grid-billing,.provider-grid-contact,.provider-grid-web{grid-template-columns:1fr 1fr}.provider-switch-grid-operation,.provider-switch-grid-billing{grid-template-columns:1fr 1fr}}

/* ==============================================================
   v0.1.53 - construcción unificada + modales dark + secciones light
   ============================================================== */

/* Dark global: el shell de todos los modales/submodales usa un único gris
   profundo. Los controles y bloques internos mantienen sus propios tonos. */
html[data-theme="dark"] .modal-content,
html[data-theme="dark"] .client-modal-content,
html[data-theme="dark"] .patient-modal-content,
html[data-theme="dark"] .files-entity-modal-content,
html[data-theme="dark"] #dispatchersModal .modal-content,
html[data-theme="dark"] #dispatcherFormModal .modal-content,
html[data-theme="dark"] #providerModal .provider-modal-content,
html[data-theme="dark"] .modal-content > form,
html[data-theme="dark"] .client-modal-content > form,
html[data-theme="dark"] .patient-modal-content > form,
html[data-theme="dark"] .modal-content > .modal-header,
html[data-theme="dark"] .modal-content > .modal-body,
html[data-theme="dark"] .modal-content > .modal-footer,
html[data-theme="dark"] #providerModal .modal-header,
html[data-theme="dark"] #providerModal .provider-modal-body,
html[data-theme="dark"] #providerModal .provider-modal-footer {
    background: #171b1f !important;
    background-color: #171b1f !important;
    background-image: none !important;
    opacity: 1 !important;
}

/* El borde externo identifica la empresa sin teñir el fondo del modal. */
html[data-theme="dark"][data-company-id="1"] .modal-content,
html[data-theme="dark"][data-company-id="1"] .client-modal-content,
html[data-theme="dark"][data-company-id="1"] .patient-modal-content,
html[data-theme="dark"][data-company-id="1"] .files-entity-modal-content {
    border-color: rgba(255, 215, 37, .58) !important;
}

html[data-theme="dark"][data-company-id="2"] .modal-content,
html[data-theme="dark"][data-company-id="2"] .client-modal-content,
html[data-theme="dark"][data-company-id="2"] .patient-modal-content,
html[data-theme="dark"][data-company-id="2"] .files-entity-modal-content {
    border-color: color-mix(in srgb, var(--accent-color), transparent 38%) !important;
}

/* Los títulos con línea nunca vuelven a pintar un rectángulo detrás del texto. */
html[data-theme="dark"] .modal-content .client-section-title span,
html[data-theme="dark"] .modal-content .patient-section-title > span,
html[data-theme="dark"] .modal-content .app-form-section-title > span {
    background: transparent !important;
}

/* Logística light: el amarillo de sección se oscurece para ganar contraste
   sobre fondo blanco sin modificar botones ni el branding general. */
html:not([data-theme="dark"])[data-company-id="1"] .modal-content .app-form-section-title,
html:not([data-theme="dark"])[data-company-id="1"] .modal-content .client-section.client-section-line .client-section-title,
html:not([data-theme="dark"])[data-company-id="1"] .modal-content .patient-section-title,
html:not([data-theme="dark"])[data-company-id="1"] .modal-content .patient-history-head h6,
html:not([data-theme="dark"])[data-company-id="1"] .modal-content .patient-initial-claim > .patient-history-head h6 {
    color: #8a6700 !important;
}

html:not([data-theme="dark"])[data-company-id="1"] .modal-content .app-form-section-title::before,
html:not([data-theme="dark"])[data-company-id="1"] .modal-content .app-form-section-title::after,
html:not([data-theme="dark"])[data-company-id="1"] .modal-content .client-section.client-section-line .client-section-title::before,
html:not([data-theme="dark"])[data-company-id="1"] .modal-content .client-section.client-section-line .client-section-title::after,
html:not([data-theme="dark"])[data-company-id="1"] .modal-content .patient-section-title::before,
html:not([data-theme="dark"])[data-company-id="1"] .modal-content .patient-section-title::after {
    background: #c39a00 !important;
}

html:not([data-theme="dark"])[data-company-id="1"] .modal-content .patient-history-head,
html:not([data-theme="dark"])[data-company-id="1"] .modal-content .patient-initial-claim > .patient-history-head {
    border-bottom-color: #c39a00 !important;
}

/* Prestadores / Tarifario: la opción elegida debe identificarse de inmediato. */
html[data-theme="dark"] .provider-tariff-mode input:checked + span {
    font-weight: 900 !important;
    transform: translateY(-1px);
}

html[data-theme="dark"][data-company-id="1"] .provider-tariff-mode input:checked + span {
    background: #FFD725 !important;
    border-color: #FFD725 !important;
    color: #171b1f !important;
    box-shadow: 0 0 0 2px rgba(255, 215, 37, .16) !important;
}

html[data-theme="dark"][data-company-id="2"] .provider-tariff-mode input:checked + span {
    background: var(--accent-color) !important;
    border-color: var(--accent-color) !important;
    color: #0b1114 !important;
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent-color), transparent 78%) !important;
}

/* v0.1.55 - Despachadores + Tipos de Móviles */
.client-other-data-dialog{width:min(820px,calc(100vw - 2rem));max-width:820px}
#clientOtherDataModal .app-richtext-toolbar{flex-wrap:nowrap!important;overflow-x:auto;overflow-y:hidden;white-space:nowrap}
#clientOtherDataModal .app-richtext-toolbar>*{flex:0 0 auto}
.mobile-types-selection-dialog{width:min(720px,calc(100vw - 2rem));max-width:720px;margin-left:auto!important;margin-right:auto!important}
.mobile-types-switch-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.mobile-type-switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--bs-border-color);border-radius:10px;padding:10px 12px;background:var(--bs-body-bg);cursor:pointer}
.mobile-type-switch-row>span:first-child{min-width:0}.mobile-type-switch-row strong{display:block;font-size:.86rem}.mobile-type-switch-row small{display:block;color:var(--bs-secondary-color);font-size:.72rem;margin-top:2px}
.mobile-type-switch-row .form-check-input{cursor:pointer}
.dispatcher-reference{border:1px solid color-mix(in srgb,var(--accent-color),transparent 55%);background:color-mix(in srgb,var(--accent-color),transparent 94%);border-radius:10px;padding:10px 12px}
.dispatcher-reference>strong{display:block;font-size:.8rem;margin-bottom:6px}.dispatcher-reference-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px;font-size:.76rem;color:var(--bs-secondary-color)}
.dispatcher-email-section{border-top:1px solid var(--bs-border-color);padding-top:12px}.dispatcher-email-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin-bottom:7px}.dispatcher-email-chips{display:flex;flex-wrap:wrap;gap:5px}.dispatcher-email-chip{display:inline-flex;align-items:center;padding:3px 7px;border:1px solid color-mix(in srgb,var(--accent-color),transparent 60%);border-radius:999px;font-size:.72rem;background:color-mix(in srgb,var(--accent-color),transparent 92%)}.dispatcher-email-chip.is-inactive{opacity:.55;text-decoration:line-through}
.dispatcher-table td:nth-child(4){min-width:320px}
#dispatcherFormModal .dispatcher-form-dialog{width:min(780px,calc(100vw - 2rem))!important;max-width:780px!important}
#providerModal.has-provider-child .provider-modal-content:after{content:"";position:absolute;inset:0;border-radius:inherit;background:rgba(15,23,42,.42);z-index:1040}
#providerMobileTypesModal{z-index:1095!important}.provider-modal-content{position:relative}
@media(max-width:767.98px){.mobile-types-switch-list{grid-template-columns:1fr}.dispatcher-reference-grid{grid-template-columns:1fr}.dispatcher-email-row{grid-template-columns:1fr}.client-other-data-dialog,.mobile-types-selection-dialog{width:calc(100vw - 1rem);max-width:calc(100vw - 1rem)}}
/* v0.1.55 - alta temporal de despachadores en Cliente nuevo */
.dispatcher-modal-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:12px}.dispatcher-modal-toolbar .input-group{flex:1}
.dispatcher-list{display:grid;gap:8px}.dispatcher-list-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--bs-border-color);border-radius:10px;padding:8px 10px;background:var(--bs-body-bg)}
.dispatcher-list-main{display:grid;grid-template-columns:minmax(170px,.9fr) minmax(170px,.8fr) minmax(240px,1.5fr);gap:10px;align-items:center;width:100%;min-width:0;border:0;background:transparent;color:inherit;padding:0;text-align:left}.dispatcher-list-main:hover .dispatcher-list-name{color:var(--accent-color)}
.dispatcher-list-name{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dispatcher-list-meta,.dispatcher-list-emails{font-size:.76rem;color:var(--bs-secondary-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dispatcher-phone-reference{border:1px solid color-mix(in srgb,var(--accent-color),transparent 55%);background:color-mix(in srgb,var(--accent-color),transparent 94%);border-radius:10px;padding:10px 12px;font-size:.78rem;color:var(--bs-secondary-color);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 14px}.dispatcher-phone-reference strong{grid-column:1/-1;color:var(--bs-body-color);font-size:.82rem}
@media(max-width:767.98px){.dispatcher-modal-toolbar{align-items:stretch;flex-direction:column}.dispatcher-list-row{grid-template-columns:1fr}.dispatcher-list-main{grid-template-columns:1fr}.dispatcher-phone-reference{grid-template-columns:1fr}}

/* v0.1.55 hotfix UI2 - Otros Datos detalle editable + Tipos de Móviles centrado */
.client-other-empty{min-height:96px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.client-other-empty[hidden]{display:none!important}
.client-other-empty i{font-size:1.35rem}
.mobile-types-empty{grid-column:1 / -1;max-width:360px;margin:0 auto;text-align:center;justify-self:center;align-self:center}

.dispatcher-phone-reference{display:flex!important;flex-wrap:wrap;justify-content:center;align-items:center;text-align:center;gap:6px 18px!important}
.dispatcher-phone-reference>strong{flex:0 0 100%;text-align:center;margin-bottom:2px}
.dispatcher-phone-reference>div{flex:0 1 190px;text-align:center}

/* v0.1.55 hotfix UI4 - Prestadores footer y controles inferiores */
#providerModal .provider-bottom-controls{
    display:flex!important;
    align-items:flex-end!important;
    justify-content:space-between!important;
    flex-direction:row!important;
    gap:16px!important;
    margin-top:4px!important;
    padding-top:6px!important;
}
#providerModal .provider-bottom-controls .client-state-picker{margin-right:auto!important}
#providerModal .provider-active-control{margin-left:auto!important;align-self:flex-end}
#providerModal .provider-modal-footer.provider-modal-footer-split{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:12px!important;
}
#providerModal .provider-modal-footer-left,
#providerModal .provider-modal-footer-actions{
    display:flex;
    align-items:center;
    gap:8px;
}
#providerModal .provider-modal-footer-left{margin-right:auto}
#providerModal .provider-modal-footer-actions{margin-left:auto}
@media(max-width:576px){
    #providerModal .provider-bottom-controls{flex-wrap:wrap!important}
    #providerModal .provider-modal-footer.provider-modal-footer-split{flex-wrap:wrap!important}
}

/* v0.1.58 - Tipos de Móviles como overlay interno del modal padre */
.client-modal-content,
#providerModal .provider-modal-content{
    position:relative!important;
}

#clientMobileTypesModal,
#providerMobileTypesModal{
    position:absolute!important;
    inset:0!important;
    width:100%!important;
    height:100%!important;
    margin:0!important;
    padding:0!important;
    display:none!important;
    overflow:hidden!important;
    z-index:1200!important;
    background:transparent!important;
}

#clientMobileTypesModal.mobile-types-nested-open,
#providerMobileTypesModal.mobile-types-nested-open{
    display:grid!important;
    place-items:center!important;
}

#clientMobileTypesModal .modal-dialog,
#providerMobileTypesModal .modal-dialog{
    position:relative!important;
    inset:auto!important;
    width:min(720px,calc(100% - 32px))!important;
    max-width:720px!important;
    margin:0!important;
    transform:none!important;
    pointer-events:auto!important;
}

#clientMobileTypesModal [data-client-mobile-types-host],
#providerMobileTypesModal [data-provider-mobile-types-host],
#clientMobileTypesModal .modal-content,
#providerMobileTypesModal .modal-content{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    pointer-events:auto!important;
}

#clientMobileTypesModal .mobile-types-selection,
#providerMobileTypesModal .mobile-types-selection{
    box-shadow:0 18px 48px rgba(15,23,42,.24);
}

/* v0.1.60 - asignación de Tipos de Móviles centrada contra viewport */
[data-mobile-types-assignment-root] .files-row-clickable{
    cursor:pointer;
}

#mobileTypesAssignmentModal{
    position:fixed!important;
    inset:0!important;
    width:100vw!important;
    height:100vh!important;
    height:100dvh!important;
    margin:0!important;
    padding:0!important;
    z-index:1095!important;
}

#mobileTypesAssignmentModal.show{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
}

#mobileTypesAssignmentModal > .modal-dialog{
    position:relative!important;
    inset:auto!important;
    left:auto!important;
    right:auto!important;
    top:auto!important;
    bottom:auto!important;
    width:min(720px,calc(100vw - 32px))!important;
    max-width:720px!important;
    margin:0!important;
    transform:none!important;
}

#mobileTypesAssignmentModal [data-mobile-types-assignment-host],
#mobileTypesAssignmentModal .mobile-types-selection{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
}

@media(max-width:767.98px){
    #mobileTypesAssignmentModal > .modal-dialog{
        width:calc(100vw - 16px)!important;
        max-width:calc(100vw - 16px)!important;
    }
}

/* v0.1.64 - Branding Login independiente del tema */
.app-auth-left-credit,
.app-auth-left-credit:hover,
html[data-theme="dark"] .app-auth-left-credit,
html[data-theme="dark"] .app-auth-left-credit:hover{
    color:#ffffff!important;
    text-decoration:none!important;
}

.app-auth-left-credit a,
.app-auth-left-credit a:link,
.app-auth-left-credit a:visited,
html[data-theme="dark"] .app-auth-left-credit a,
html[data-theme="dark"] .app-auth-left-credit a:link,
html[data-theme="dark"] .app-auth-left-credit a:visited{
    color:#ffffff!important;
    font-weight:800!important;
    text-decoration:none!important;
    opacity:1!important;
}

.app-auth-left-credit a:hover,
.app-auth-left-credit a:focus,
.app-auth-left-credit a:focus-visible,
.app-auth-left-credit a:active,
html[data-theme="dark"] .app-auth-left-credit a:hover,
html[data-theme="dark"] .app-auth-left-credit a:focus,
html[data-theme="dark"] .app-auth-left-credit a:focus-visible,
html[data-theme="dark"] .app-auth-left-credit a:active{
    color:#ffffff!important;
    font-weight:800!important;
    text-decoration:underline!important;
    text-underline-offset:2px!important;
    opacity:1!important;
}

/* v0.1.67 - Clientes: facturación alineada y modal verticalmente compacto */
.client-billing-grid{
    display:grid;
    grid-template-columns:minmax(0,2.15fr) minmax(110px,1fr) minmax(145px,1.15fr) minmax(190px,1.45fr);
    gap:.55rem;
    align-items:start;
}
.client-billing-grid>div{min-width:0}
.client-billing-days .form-control{
    width:100%;
    max-width:120px!important;
}
.client-billing-help{
    display:block;
    margin-top:.12rem;
    font-size:.66rem;
    line-height:1.15;
    color:var(--text-muted,#737d8d);
    white-space:nowrap;
}

/* Recupera altura para que Nuevo/Detalle/Editar sigan entrando sin scroll. */
.client-modal-content .modal-header{
    padding:.52rem .75rem!important;
}
.client-modal-content .modal-footer{
    padding:.42rem .75rem!important;
}
.client-edit-body,
.client-detail-body{
    padding:.42rem .68rem!important;
}
.client-modal-content .client-section.client-section-line{
    padding:.12rem 0 .18rem!important;
    margin-bottom:.24rem!important;
}
.client-modal-content .client-section.client-section-line .client-section-title{
    margin-bottom:.27rem!important;
}
.client-modal-content .client-edit-body .form-label,
.client-modal-content .client-detail-body .form-label{
    margin-bottom:.08rem!important;
}
.client-modal-content .client-structured-list{
    gap:.2rem!important;
}
.client-modal-content .client-structured-row{
    padding:.26rem .42rem!important;
}
.client-modal-content .client-bottom-controls{
    padding:0!important;
}
.client-modal-content .app-richtext-compact .app-richtext-editor{
    min-height:50px;
    max-height:92px;
}
.client-modal-content .app-richtext-compact .app-richtext-toolbar{
    padding:.26rem .32rem;
    gap:.24rem;
}

@media(max-width:991.98px){
    .client-billing-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .client-billing-help{white-space:normal}
}
@media(max-width:575.98px){
    .client-billing-grid{
        grid-template-columns:1fr;
    }
}

/* v0.1.68 - Prestadores facturación + acceso web + seguridad de claves */
.provider-grid-billing-v2{display:grid;grid-template-columns:1.65fr .62fr 1.05fr .82fr .65fr 1.08fr;gap:5px 8px;align-items:end}
.provider-billing-options-grid{display:grid;grid-template-columns:.72fr .72fr 1.55fr .82fr .9fr 1.32fr;gap:6px;align-items:end;margin-top:6px}
.provider-ret-iibb-control{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px;align-items:center}
.provider-ret-iibb-control .form-check-input{margin:0!important}
.provider-value-sin-espera .form-label{white-space:nowrap}
.provider-switch-wide>span:first-child{font-size:.69rem;line-height:1.1}
.provider-access-grid{display:grid;grid-template-columns:minmax(220px,.78fr) minmax(420px,1.35fr);gap:8px;align-items:start}
#providerModal .provider-notes-section .app-richtext-editor{min-height:72px!important;max-height:118px!important}
#providerModal .provider-notes-section .app-richtext-toolbar{padding:4px 6px!important}
#providerModal .provider-modal-footer-left{display:flex;align-items:center;gap:8px;margin-right:auto}

/* Cliente: acceso web compacto para no agrandar el modal */
.client-access-grid{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(360px,1.35fr);gap:.55rem;align-items:start}
.client-access-section{margin-bottom:.16rem!important}

/* Barra de fortaleza reutilizable */
.password-strength{margin-top:3px;display:grid;grid-template-columns:minmax(90px,160px) minmax(0,1fr);gap:7px;align-items:center;min-height:12px}
.password-strength-bars{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;height:4px}
.password-strength-bars span{border-radius:999px;background:#d8dee7;transition:background .15s ease}
.password-strength small{font-size:.62rem;line-height:1;color:var(--text-muted,#737d8d);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.password-strength.level-1 .password-strength-bars span:nth-child(1){background:#dc3545}
.password-strength.level-2 .password-strength-bars span:nth-child(-n+2){background:#fd7e14}
.password-strength.level-3 .password-strength-bars span:nth-child(-n+3){background:#d7aa00}
.password-strength.level-4 .password-strength-bars span{background:#198754}
.password-generate-btn{white-space:nowrap}

/* Recupera altura en Cliente al sumar Acceso web. */
.client-modal-content .client-access-section .client-section-title{margin-bottom:.18rem!important}
.client-modal-content .client-access-section{padding-top:.05rem!important;padding-bottom:.08rem!important}
.client-modal-content .client-edit-body .app-richtext-compact .app-richtext-editor{min-height:44px!important;max-height:78px!important}

@media(max-width:1200px){
    .provider-grid-billing-v2{grid-template-columns:repeat(3,minmax(0,1fr))}
    .provider-billing-options-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
    .provider-access-grid{grid-template-columns:1fr 1.35fr}
}
@media(max-width:768px){
    .provider-grid-billing-v2,.provider-billing-options-grid,.provider-access-grid,.client-access-grid{grid-template-columns:1fr 1fr}
    .password-strength{grid-template-columns:1fr}.password-strength small{white-space:normal}
}
@media(max-width:575.98px){
    .provider-grid-billing-v2,.provider-billing-options-grid,.provider-access-grid,.client-access-grid{grid-template-columns:1fr}
}

/* v0.1.69 - Prestadores: combos alineados + contraseñas sin Password Manager */
#providerModal .provider-grid-billing-v2 .form-control-sm,
#providerModal .provider-grid-billing-v2 .form-select-sm{
    width:100%!important;
    min-height:32px!important;
    height:32px!important;
    padding-top:.28rem!important;
    padding-bottom:.28rem!important;
    line-height:1.1!important;
}
#providerModal .provider-grid-billing-v2 .provider-ret-iibb-control .form-control-sm{
    min-height:32px!important;
    height:32px!important;
}
.password-browser-safe-input.is-masked{
    -webkit-text-security:disc;
    text-security:disc;
}
.password-browser-safe-input{
    letter-spacing:.02em;
}

/* v0.1.69 - Clientes: más ancho y menos altura, sin scroll en escritorio habitual */
.client-modal-dialog{
    width:min(1160px,calc(100vw - 18px))!important;
    max-width:1160px!important;
    margin-left:auto!important;
    margin-right:auto!important;
}
.client-modal-content .modal-header{
    padding:.42rem .72rem!important;
}
.client-modal-content .modal-footer{
    padding:.36rem .72rem!important;
}
.client-edit-body,
.client-detail-body{
    padding:.30rem .62rem!important;
}
.client-modal-content .client-section.client-section-line{
    padding:.05rem 0 .09rem!important;
    margin-bottom:.12rem!important;
}
.client-modal-content .client-section.client-section-line .client-section-title{
    margin:0 0 .16rem!important;
    font-size:.72rem!important;
    line-height:1.05!important;
}
.client-modal-content .client-data-grid{
    --bs-gutter-y:.10rem!important;
    --bs-gutter-x:.38rem!important;
}
.client-modal-content .client-edit-body .form-label,
.client-modal-content .client-detail-body .form-label{
    margin-bottom:.04rem!important;
    line-height:1!important;
}
.client-modal-content .client-edit-body .form-control-sm,
.client-modal-content .client-edit-body .form-select-sm,
.client-modal-content .client-detail-body .form-control-sm{
    min-height:29px!important;
    height:29px!important;
    padding-top:.18rem!important;
    padding-bottom:.18rem!important;
}
.client-billing-grid{
    grid-template-columns:minmax(300px,2.05fr) minmax(150px,.9fr) minmax(180px,1.05fr) minmax(330px,1.75fr)!important;
    gap:.36rem!important;
    align-items:end!important;
}
.client-billing-days-line{
    display:flex;
    align-items:center;
    gap:.42rem;
    min-width:0;
}
.client-billing-days-line .form-control{
    flex:0 0 92px;
    width:92px!important;
    max-width:92px!important;
}
.client-billing-help{
    display:block!important;
    margin:0!important;
    font-size:.63rem!important;
    line-height:1!important;
    white-space:nowrap!important;
}
.client-modal-content .client-add-row.mt-2,
.client-modal-content .client-structured-list.mt-2{
    margin-top:.18rem!important;
}
.client-modal-content .client-structured-list{
    gap:.12rem!important;
    max-height:70px!important;
}
.client-modal-content .client-structured-row{
    min-height:30px!important;
    padding:.18rem .38rem!important;
}
.client-modal-content .app-richtext-compact .app-richtext-toolbar{
    padding:.18rem .28rem!important;
    gap:.18rem!important;
}
.client-modal-content .client-edit-body .app-richtext-compact .app-richtext-editor,
.client-modal-content .client-detail-body .app-richtext-compact .app-richtext-editor{
    min-height:38px!important;
    max-height:64px!important;
}
.client-modal-content .client-access-section{
    margin-bottom:.06rem!important;
    padding-top:0!important;
    padding-bottom:.03rem!important;
}
.client-modal-content .client-access-section .client-section-title{
    margin-bottom:.10rem!important;
}
.client-access-grid{
    gap:.38rem!important;
}
.client-modal-content .password-strength{
    margin-top:1px!important;
    min-height:8px!important;
}
.client-modal-content .password-strength-bars{
    height:3px!important;
}
.client-modal-content .password-strength small{
    font-size:.58rem!important;
}
.client-modal-content .client-bottom-controls{
    margin-top:.03rem!important;
    padding:0!important;
}
.client-modal-content .client-state-choice span{
    padding:.22rem .46rem!important;
}
@media(max-width:1199.98px){
    .client-modal-dialog{
        width:min(98vw,1080px)!important;
    }
    .client-billing-grid{
        grid-template-columns:2fr .9fr 1fr 1.7fr!important;
    }
}
@media(max-width:991.98px){
    .client-billing-grid{
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
    }
    .client-billing-help{
        white-space:normal!important;
    }
}

/* v0.1.71 - Acceso web: Clave igual a Usuario y botones redondeados */
.client-access-grid [data-password-field] .input-group,
.provider-access-grid [data-password-field] .input-group{
    display:flex!important;
    flex-wrap:nowrap!important;
    align-items:stretch!important;
    gap:4px!important;
    width:100%!important;
}

.client-access-grid [data-password-field] .input-group>.form-control,
.provider-access-grid [data-password-field] .input-group>.form-control{
    flex:1 1 auto!important;
    min-width:0!important;
    margin:0!important;
    border:1px solid var(--bs-border-color,#dee2e6)!important;
    border-radius:.375rem!important;
    box-shadow:none!important;
    background-color:var(--bs-body-bg,#fff)!important;
}

.client-access-grid [data-password-field] .input-group>.btn,
.provider-access-grid [data-password-field] .input-group>.btn{
    position:relative!important;
    z-index:1!important;
    margin:0!important;
    border-radius:.375rem!important;
    border:1px solid var(--bs-border-color,#b9c3cf)!important;
    background:var(--bs-body-bg,#fff)!important;
}

.client-access-grid [data-password-toggle],
.provider-access-grid [data-password-toggle]{
    flex:0 0 34px!important;
    width:34px!important;
    padding-left:0!important;
    padding-right:0!important;
    display:grid!important;
    place-items:center!important;
}

.client-access-grid .password-generate-btn,
.provider-access-grid .password-generate-btn{
    flex:0 0 auto!important;
    white-space:nowrap!important;
    padding-left:.65rem!important;
    padding-right:.65rem!important;
}

/* Cliente: misma altura y lenguaje visual que Usuario */
.client-access-grid .form-control-sm,
.client-access-grid .input-group-sm>.form-control,
.client-access-grid .input-group-sm>.btn{
    min-height:29px!important;
    height:29px!important;
    font-family:inherit!important;
    font-size:.78rem!important;
    font-weight:400!important;
    line-height:1.2!important;
}

/* Prestador: misma altura y lenguaje visual que Usuario */
.provider-access-grid .form-control-sm,
.provider-access-grid .input-group-sm>.form-control,
.provider-access-grid .input-group-sm>.btn{
    min-height:30px!important;
    height:30px!important;
    font-family:inherit!important;
    font-size:.78rem!important;
    font-weight:400!important;
    line-height:1.2!important;
}

/* Botones mantienen iconos/texto centrados sin deformar la fila */
.client-access-grid [data-password-toggle] i,
.provider-access-grid [data-password-toggle] i,
.client-access-grid .password-generate-btn i,
.provider-access-grid .password-generate-btn i{
    line-height:1!important;
}

/* v0.1.71 - Tipografía homogénea entre combos e inputs de facturación */
.client-billing-grid .form-control-sm,
.client-billing-grid .form-select-sm{
    font-family:inherit!important;
    font-size:.78rem!important;
    font-weight:400!important;
    line-height:1.2!important;
    letter-spacing:normal!important;
    color:var(--bs-body-color,#212529)!important;
}

#providerModal .provider-grid-billing-v2 .form-control-sm,
#providerModal .provider-grid-billing-v2 .form-select-sm{
    font-family:inherit!important;
    font-size:.78rem!important;
    font-weight:400!important;
    line-height:1.2!important;
    letter-spacing:normal!important;
    color:var(--bs-body-color,#212529)!important;
}

/* Conserva altura pareja sin que el select crezca por su flecha nativa */
.client-billing-grid .form-select-sm{
    min-height:29px!important;
    height:29px!important;
    padding-top:.18rem!important;
    padding-bottom:.18rem!important;
}

#providerModal .provider-grid-billing-v2 .form-select-sm{
    min-height:32px!important;
    height:32px!important;
    padding-top:.28rem!important;
    padding-bottom:.28rem!important;
}

/* Estados focus consistentes con el resto del sistema */
.client-access-grid [data-password-field] .form-control:focus,
.provider-access-grid [data-password-field] .form-control:focus{
    border-color:var(--accent-color,#d9b300)!important;
    box-shadow:0 0 0 .08rem color-mix(in srgb,var(--accent-color,#d9b300),transparent 80%)!important;
}

@media(max-width:575.98px){
    .client-access-grid [data-password-field] .input-group,
    .provider-access-grid [data-password-field] .input-group{
        gap:3px!important;
    }
    .client-access-grid .password-generate-btn,
    .provider-access-grid .password-generate-btn{
        padding-left:.45rem!important;
        padding-right:.45rem!important;
    }
}

/* v0.1.72 - Hover amarillo para controles de contraseña */
.client-access-grid [data-password-toggle]:hover,
.client-access-grid [data-password-toggle]:focus,
.client-access-grid [data-password-toggle]:focus-visible,
.client-access-grid .password-generate-btn:hover,
.client-access-grid .password-generate-btn:focus,
.client-access-grid .password-generate-btn:focus-visible,
.provider-access-grid [data-password-toggle]:hover,
.provider-access-grid [data-password-toggle]:focus,
.provider-access-grid [data-password-toggle]:focus-visible,
.provider-access-grid .password-generate-btn:hover,
.provider-access-grid .password-generate-btn:focus,
.provider-access-grid .password-generate-btn:focus-visible{
    background:var(--bs-warning,#ffc107)!important;
    border-color:var(--bs-warning,#ffc107)!important;
    color:#111!important;
    opacity:1!important;
}

.client-access-grid [data-password-toggle]:hover i,
.client-access-grid [data-password-toggle]:focus i,
.client-access-grid [data-password-toggle]:focus-visible i,
.client-access-grid .password-generate-btn:hover i,
.client-access-grid .password-generate-btn:focus i,
.client-access-grid .password-generate-btn:focus-visible i,
.provider-access-grid [data-password-toggle]:hover i,
.provider-access-grid [data-password-toggle]:focus i,
.provider-access-grid [data-password-toggle]:focus-visible i,
.provider-access-grid .password-generate-btn:hover i,
.provider-access-grid .password-generate-btn:focus i,
.provider-access-grid .password-generate-btn:focus-visible i{
    color:#111!important;
}

.client-access-grid [data-password-toggle]:active,
.client-access-grid .password-generate-btn:active,
.provider-access-grid [data-password-toggle]:active,
.provider-access-grid .password-generate-btn:active{
    background:var(--bs-warning,#ffc107)!important;
    border-color:var(--bs-warning,#ffc107)!important;
    color:#111!important;
}

/* v0.1.76 - Hover de contraseñas específico para modo dark */
html[data-theme="dark"] .client-access-grid [data-password-toggle]:hover,
html[data-theme="dark"] .client-access-grid [data-password-toggle]:focus,
html[data-theme="dark"] .client-access-grid [data-password-toggle]:focus-visible,
html[data-theme="dark"] .client-access-grid .password-generate-btn:hover,
html[data-theme="dark"] .client-access-grid .password-generate-btn:focus,
html[data-theme="dark"] .client-access-grid .password-generate-btn:focus-visible,
html[data-theme="dark"] .provider-access-grid [data-password-toggle]:hover,
html[data-theme="dark"] .provider-access-grid [data-password-toggle]:focus,
html[data-theme="dark"] .provider-access-grid [data-password-toggle]:focus-visible,
html[data-theme="dark"] .provider-access-grid .password-generate-btn:hover,
html[data-theme="dark"] .provider-access-grid .password-generate-btn:focus,
html[data-theme="dark"] .provider-access-grid .password-generate-btn:focus-visible{
    background:#fff1b8!important;
    border-color:#ffe17a!important;
    color:#18212b!important;
    opacity:1!important;
}

html[data-theme="dark"] .client-access-grid [data-password-toggle]:hover i,
html[data-theme="dark"] .client-access-grid [data-password-toggle]:focus i,
html[data-theme="dark"] .client-access-grid [data-password-toggle]:focus-visible i,
html[data-theme="dark"] .client-access-grid .password-generate-btn:hover i,
html[data-theme="dark"] .client-access-grid .password-generate-btn:focus i,
html[data-theme="dark"] .client-access-grid .password-generate-btn:focus-visible i,
html[data-theme="dark"] .provider-access-grid [data-password-toggle]:hover i,
html[data-theme="dark"] .provider-access-grid [data-password-toggle]:focus i,
html[data-theme="dark"] .provider-access-grid [data-password-toggle]:focus-visible i,
html[data-theme="dark"] .provider-access-grid .password-generate-btn:hover i,
html[data-theme="dark"] .provider-access-grid .password-generate-btn:focus i,
html[data-theme="dark"] .provider-access-grid .password-generate-btn:focus-visible i{
    color:#18212b!important;
}

html[data-theme="dark"] .client-access-grid [data-password-toggle]:active,
html[data-theme="dark"] .client-access-grid .password-generate-btn:active,
html[data-theme="dark"] .provider-access-grid [data-password-toggle]:active,
html[data-theme="dark"] .provider-access-grid .password-generate-btn:active{
    background:#ffe79a!important;
    border-color:#ffd85a!important;
    color:#18212b!important;
}

/* v0.1.78 - Detalle Paciente: campos readonly con el mismo alto que Nuevo/Editar */
#patientModal .patient-detail-data-grid .patient-detail-field{
    height:34px!important;
    min-height:34px!important;
    max-height:34px!important;
    padding:3px .55rem!important;
    border-radius:.375rem!important;
    display:block!important;
    overflow:hidden!important;
}

#patientModal .patient-detail-data-grid .patient-detail-field span{
    display:block!important;
    margin:0 0 1px!important;
    font-size:.59rem!important;
    line-height:10px!important;
    letter-spacing:.025em!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
}

#patientModal .patient-detail-data-grid .patient-detail-field strong{
    display:block!important;
    margin:0!important;
    font-size:.78rem!important;
    font-weight:400!important;
    line-height:14px!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
}

#patientModal .patient-detail-data-grid{
    --bs-gutter-y:.45rem!important;
}


/* v0.1.80 - sesión única */
.app-session-conflict-modal{border-radius:16px;overflow:hidden}
.app-session-conflict-modal .modal-body{text-align:center;padding:1.25rem 1.5rem}
.app-session-conflict-icon{
    width:54px;height:54px;border-radius:14px;display:grid;place-items:center;
    margin:0 auto .8rem;font-size:1.45rem;color:var(--accent-color);
    background:color-mix(in srgb, var(--accent-color), transparent 88%)
}
.app-session-conflict-actions{display:flex;justify-content:flex-end;gap:.55rem}
.app-session-conflict-actions form{margin:0}
@media(max-width:575.98px){
    .app-session-conflict-actions{flex-direction:column-reverse}
    .app-session-conflict-actions form,.app-session-conflict-actions .btn{width:100%}
}


/* v0.1.81 - perfil e inactividad */
.profile-settings-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem;max-width:980px}
.profile-idle-form{max-width:620px}
.profile-idle-control{display:grid;grid-template-columns:110px auto auto;gap:.55rem;align-items:center;margin-bottom:.45rem}
.profile-idle-control .form-control{min-width:0}
@media(max-width:575.98px){
    .profile-idle-control{grid-template-columns:100px 1fr}
    .profile-idle-control .btn{grid-column:1/-1;width:100%}
}


/* v0.1.81 - perfil en modal */
.profile-modal .modal-dialog{max-width:760px}
.profile-modal .modal-content{
    border-radius:16px;
    overflow:hidden;
}
.profile-modal-header{
    padding:.95rem 1.1rem;
}
.profile-modal-body{
    padding:1rem 1.1rem 1.15rem;
}
.profile-modal-section{
    border:1px solid var(--bs-border-color,#dee2e6);
    border-radius:12px;
    padding:.9rem;
}
.profile-modal-section + .profile-modal-section{
    margin-top:.8rem;
}
.profile-modal-section-title{
    font-size:.78rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.03em;
    margin-bottom:.7rem;
    color:var(--bs-secondary-color,#6c757d);
}
.profile-modal-summary{
    margin:0;
}
.profile-idle-control-modal{
    max-width:100%;
}
.profile-modal-loading{
    min-height:210px;
    display:flex;
    align-items:center;
    justify-content:center;
    flex-direction:column;
    gap:.7rem;
}
@media(max-width:575.98px){
    .profile-modal .modal-dialog{
        margin:.6rem;
    }
    .profile-modal-body{
        padding:.8rem;
    }
}


/* v0.1.81 - nombre editable en perfil */
.profile-name-grid{
    display:grid;
    grid-template-columns:minmax(0,1.2fr) repeat(3,minmax(0,1fr));
    gap:.7rem;
    align-items:end;
}
.profile-readonly-field{
    min-height:70px;
    border:1px solid var(--bs-border-color,#dee2e6);
    border-radius:10px;
    padding:.65rem .75rem;
    display:flex;
    flex-direction:column;
    justify-content:center;
}
.profile-readonly-field span{
    font-size:.68rem;
    text-transform:uppercase;
    color:var(--bs-secondary-color,#6c757d);
    margin-bottom:.25rem;
}
.profile-readonly-field strong{
    font-size:.86rem;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.profile-name-actions{
    display:flex;
    justify-content:flex-end;
    margin-top:.7rem;
}
@media(max-width:767.98px){
    .profile-name-grid{
        grid-template-columns:1fr 1fr;
    }
}
@media(max-width:575.98px){
    .profile-name-grid{
        grid-template-columns:1fr;
    }
    .profile-name-actions .btn{
        width:100%;
    }
}


/* v0.1.82 - Datos Empresa URL */
.company-url-prefix{
    font-weight:700;
    white-space:nowrap;
}

/* v0.1.83 - Tipos de móviles: orden drag & drop */
.mobile-type-drag-cell{width:48px;text-align:center}.mobile-type-drag-handle{border:0;background:transparent;color:var(--bs-secondary-color,#6c757d);font-size:1.25rem;line-height:1;padding:.15rem .35rem;cursor:grab}.mobile-type-drag-handle:active{cursor:grabbing}.mobile-type-sortable-row.mobile-type-dragging{opacity:.45}.mobile-type-sortable-row[draggable="true"]{transition:background-color .12s ease,opacity .12s ease}

/* v0.1.83 - Ciudades por ámbito + fonéticas */
.files-city-modal-dialog{max-width:min(920px,calc(100vw - 1.25rem));margin-inline:auto}.files-city-modal-dialog .modal-content{border-radius:1rem;overflow:hidden}.city-scope-badge{display:inline-flex;padding:.25rem .5rem;border-radius:999px;background:rgba(13,110,253,.09);color:var(--bs-primary);font-size:.75rem;font-weight:700}.city-alias-preview{display:flex;gap:.3rem;flex-wrap:wrap}.city-alias-tag{display:inline-flex;padding:.2rem .45rem;border:1px solid var(--bs-border-color);border-radius:999px;font-size:.72rem;background:var(--bs-body-bg)}.city-alias-more{font-size:.72rem;color:var(--bs-secondary-color);padding:.2rem}.city-scope-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;align-items:start}.city-scope-card{border:1px solid var(--bs-border-color);border-radius:.75rem;padding:.7rem .75rem;background:var(--bs-tertiary-bg);min-width:0}.city-scope-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.45rem}.city-scope-title{display:block;font-size:.95rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.city-scope-card .form-label{font-size:.76rem;margin-bottom:.25rem;color:var(--bs-secondary-color)}.city-scope-card .form-control{min-height:2.15rem;padding:.35rem .6rem}.city-phonetic-box{border:1px solid var(--bs-border-color);border-radius:.75rem;padding:.8rem}.city-alias-row{display:grid;grid-template-columns:1fr auto;gap:.5rem;margin-bottom:.5rem}.city-alias-row:last-child{margin-bottom:0}@media(max-width:991.98px){.city-scope-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:575.98px){.files-city-modal-dialog{max-width:calc(100vw - .75rem)}.city-scope-grid{grid-template-columns:1fr}}

/* v0.1.83 - Tarifas de clientes */
.tariff-client-dialog{max-width:min(1500px,96vw)}.tariff-client-content{max-height:92vh}.tariff-client-content>.modal-body{overflow:auto}.tariff-scheme-tabs{gap:.35rem;flex-wrap:wrap}.tariff-current-card,.tariff-new-list-box,.tariff-history-box,.tariff-special-box{border:1px solid var(--bs-border-color);border-radius:.75rem;padding:.85rem;background:var(--bs-body-bg)}.tariff-new-list-box,.tariff-special-box{background:var(--bs-tertiary-bg)}.tariff-band-card{border:1px solid var(--bs-border-color);border-radius:.75rem;padding:.7rem;margin-bottom:.75rem}.tariff-band-head{display:flex;justify-content:space-between;align-items:flex-end;gap:.75rem}.tariff-km-input{width:150px}.tariff-values-table{min-width:980px}.tariff-values-table th{font-size:.72rem;white-space:nowrap}.tariff-values-table td:first-child{min-width:135px}.tariff-values-table input{min-width:92px}.tariff-special-city-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;max-height:210px;overflow:auto}.tariff-special-city-option{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.45rem;border:1px solid var(--bs-border-color);border-radius:.55rem;padding:.45rem .55rem;background:var(--bs-body-bg);cursor:pointer}.tariff-special-city-option small{color:var(--bs-secondary-color)}@media(max-width:991.98px){.tariff-special-city-grid{grid-template-columns:1fr 1fr}}@media(max-width:575.98px){.tariff-special-city-grid{grid-template-columns:1fr}.tariff-km-input{width:120px}}
.tariff-special-city-option:has(input:checked){border-color:rgba(var(--bs-primary-rgb),.45);background:rgba(var(--bs-primary-rgb),.08);box-shadow:0 0 0 1px rgba(var(--bs-primary-rgb),.08) inset}

/* v0.1.84 - Tarifarios: modal centrado, tramos resumidos y selector de localidades con tags */
#clientTariffsModal .tariff-client-dialog{
    width:calc(100% - 2rem);
    max-width:min(1500px,calc(100vw - 2rem));
    margin-left:auto!important;
    margin-right:auto!important;
}
#clientTariffsModal .tariff-modal-host{display:flex;flex-direction:column;width:100%;min-width:0}
#clientTariffsModal .tariff-client-content{
    display:flex;flex-direction:column;width:100%;min-width:0;
    max-height:calc(100vh - 2rem);max-height:calc(100dvh - 2rem);
    overflow:hidden;
}
#clientTariffsModal .tariff-client-content>.modal-header,
#clientTariffsModal .tariff-client-content>.modal-footer{flex:0 0 auto}
#clientTariffsModal .tariff-client-content>.modal-body{
    flex:1 1 auto;min-height:0;overflow-y:auto!important;overflow-x:hidden!important;
}
#clientTariffsModal [hidden]{display:none!important}
#clientTariffsModal .tariff-current-card{min-width:0}
#clientTariffsModal .tariff-band-card{padding:.65rem .75rem}
#clientTariffsModal .tariff-band-summary{display:flex;justify-content:space-between;align-items:center;gap:1rem;min-width:0}
#clientTariffsModal .tariff-band-summary-info{flex:1;min-width:0}
#clientTariffsModal .tariff-band-summary-values{display:flex;flex-wrap:wrap;gap:.25rem .65rem;margin-top:.3rem;font-size:.76rem;color:var(--bs-secondary-color)}
#clientTariffsModal .tariff-band-summary-actions{display:flex;gap:.35rem;flex-shrink:0}
#clientTariffsModal .tariff-band-editor{min-width:0}
#clientTariffsModal .tariff-special-picker{position:relative;min-width:0}
#clientTariffsModal .tariff-special-results{
    position:absolute;top:calc(100% + 3px);left:0;right:0;z-index:1080;
    max-height:min(240px,40vh);overflow:auto;
    border:1px solid var(--bs-border-color);border-radius:.6rem;
    background:var(--bs-body-bg);box-shadow:0 .55rem 1.4rem rgba(0,0,0,.14);
}
#clientTariffsModal .tariff-special-result{
    display:flex;align-items:center;justify-content:space-between;gap:.5rem;
    width:100%;border:0;border-bottom:1px solid var(--bs-border-color);border-radius:0;
    padding:.48rem .7rem;background:transparent;color:var(--bs-body-color);text-align:left;cursor:pointer;
}
#clientTariffsModal .tariff-special-result:last-of-type{border-bottom:0}
#clientTariffsModal .tariff-special-result:hover,
#clientTariffsModal .tariff-special-result:focus-visible{background:var(--bs-tertiary-bg)}
#clientTariffsModal .tariff-special-result small{font-size:.74rem;flex-shrink:0;color:var(--bs-secondary-color)}
#clientTariffsModal .tariff-special-tags{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem;min-height:0}
#clientTariffsModal .tariff-special-tags:empty{display:none}
#clientTariffsModal .tariff-special-tag{
    display:inline-flex;align-items:center;gap:.4rem;max-width:100%;padding:.2rem .35rem .2rem .6rem;
    border:1px solid var(--bs-border-color);border-radius:999px;
    background:var(--bs-body-bg);color:var(--bs-body-color);font-size:.78rem;line-height:1.35;
}
#clientTariffsModal .tariff-special-tag>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#clientTariffsModal .tariff-special-tag button{
    display:inline-grid;place-items:center;width:1.15rem;height:1.15rem;padding:0;
    border:0;border-radius:50%;background:var(--bs-tertiary-bg);color:var(--bs-body-color);
    line-height:1;cursor:pointer;
}
#clientTariffsModal .tariff-special-tag button:hover{background:var(--bs-secondary-bg)}
@media(max-width:767.98px){
    #clientTariffsModal .tariff-client-dialog{width:calc(100% - 1rem);max-width:calc(100vw - 1rem)}
    #clientTariffsModal .tariff-client-content{max-height:calc(100dvh - 1rem)}
    #clientTariffsModal .tariff-band-summary{align-items:flex-start;flex-wrap:wrap;gap:.4rem}
    #clientTariffsModal .tariff-band-summary-actions{margin-left:auto}
}

/* v0.1.88: esquema del cliente, integrado en el modal padre para no apilar backdrops */
.client-modal-content { position: relative; }
.client-schemes-overlay[hidden] { display:none !important; }
.client-schemes-overlay { position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(19,30,46,.53);border-radius:inherit; }
.client-schemes-dialog { width:min(100%,520px);max-height:min(80vh,640px);overflow:auto;background:var(--bs-body-bg,#fff);border-radius:14px;padding:20px;box-shadow:0 12px 32px rgba(0,0,0,.24);color:var(--bs-body-color,#1d2735); }
.client-scheme-options { display:grid;gap:9px; }
.client-scheme-option {display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border:1px solid var(--bs-border-color,#d6dce5);border-radius:8px;cursor:pointer;}

/* Esquemas de tarifas de cliente: ámbitos como selector segmentado */
.scheme-ambito-options .scheme-ambito-choice{position:relative;cursor:pointer;flex:1 1 110px;text-align:center}
.scheme-ambito-choice input{position:absolute;opacity:0;width:1px;height:1px}
.scheme-ambito-choice span{display:block;border:1px solid var(--bs-border-color,#d7dfed);border-radius:10px;padding:10px 16px;font-weight:600;background:var(--bs-body-bg,#fff)}
.scheme-ambito-choice input:checked+span{background:#ffd527;color:#202a39;border-color:#f6c31f}
.scheme-ambito-choice input:focus-visible+span{outline:2px solid #d0a700;outline-offset:2px}
.tariff-is-editing .tariff-list-header-controls{display:none!important}

/* v0.1.91 - Esquemas Clientes: selector compacto y estados alineados */
#clientSchemesAdmin .scheme-list-state{align-items:center;justify-content:center;min-height:26px}
#clientSchemesAdmin .scheme-list-state .form-check-input{cursor:pointer;margin:0!important;width:2.1rem!important;height:1.15rem!important}
#clientSchemesAdmin .scheme-list-state .form-check-input:disabled{cursor:not-allowed;opacity:.48}
#clientSchemesAdmin td[data-scheme-inline-action]{cursor:default}
#clientSchemeAdminModal .scheme-ambito-options{display:flex;gap:.45rem!important;max-width:440px}
#clientSchemeAdminModal .scheme-ambito-choice{flex:1 1 0;min-width:0;max-width:140px}
#clientSchemeAdminModal .scheme-ambito-choice span{padding:.47rem .65rem;border-radius:.6rem;font-size:.82rem}
#clientSchemeAdminModal .scheme-config-switches{display:grid;gap:.5rem;max-width:440px}
#clientSchemeAdminModal .scheme-config-switch{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:38px;padding:.55rem .8rem;border:1px solid var(--bs-border-color,#d7dfed);border-radius:.6rem;cursor:pointer;font-size:.88rem;font-weight:600;color:var(--bs-body-color,#1d2735)}
#clientSchemeAdminModal .scheme-config-switch .form-check{display:inline-flex;align-items:center;min-height:0;padding-left:0}
#clientSchemeAdminModal .scheme-config-switch .form-check-input{margin:0!important;float:none;width:2.2rem!important;height:1.15rem!important;cursor:pointer}
#clientSchemeAdminModal .scheme-config-switch .form-check-input:disabled{cursor:not-allowed;opacity:.5}
@media(max-width:420px){#clientSchemeAdminModal .scheme-ambito-choice span{padding:.45rem .25rem;font-size:.76rem}}

/* v0.1.92 - Centrar el contenido compacto dentro del dialogo de Esquemas Clientes.
   Bootstrap centra el modal-dialog, pero el host dinamico ocupa menos ancho. */
#clientSchemeAdminModal > .modal-dialog.modal-dialog-centered {
    justify-content: center;
}

/* v0.1.95 - Detalle de pacientes alineado con Nuevo/Editar y paginación minimalista. */
#patientModal .patient-detail-data-grid .form-label{
    display:block;
    margin-bottom:.2rem;
    font-size:.7rem;
    font-weight:750;
    color:var(--text-muted,#737d8d);
}
#patientModal .patient-detail-data-grid .patient-detail-field{
    display:flex!important;
    align-items:center;
    padding:0 .6rem!important;
}
#patientModal .patient-detail-data-grid .patient-detail-field strong{
    width:100%;
    min-width:0;
    font-size:.82rem!important;
    line-height:1.25!important;
}
#patientModal .patient-detail-data-grid{
    --bs-gutter-y:.5rem!important;
}
/* Mostrar tres registros como máximo sin barras de desplazamiento vertical anidadas. */
#patientModal [data-patient-history-paginated] .patient-history-scroll{
    max-height:none;
    overflow-y:visible;
}
#patientModal [data-patient-history-paginated] tbody tr[hidden]{display:none!important}
#patientModal .patient-history-pager{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:.8rem;
    min-height:30px;
    padding:.3rem .15rem 0;
    color:var(--bs-secondary-color);
    font-size:.72rem;
}
#patientModal .patient-history-pager[hidden]{display:none!important}
#patientModal .patient-history-page-actions{display:flex;align-items:center;gap:.4rem}
#patientModal .patient-history-page-number{min-width:2.7rem;text-align:center;font-weight:650;font-variant-numeric:tabular-nums}
#patientModal .patient-history-page-button{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:27px;
    height:27px;
    padding:0;
    border:1px solid var(--bs-border-color);
    border-radius:.45rem;
    background:var(--bs-body-bg);
    color:var(--bs-body-color);
    transition:background-color .15s,border-color .15s;
}
#patientModal .patient-history-page-button:not(:disabled):hover,
#patientModal .patient-history-page-button:not(:disabled):focus-visible{
    background:var(--bs-tertiary-bg);
    border-color:var(--accent-color,#ffd725);
}
#patientModal .patient-history-page-button:disabled{opacity:.38;cursor:default}
@media(max-width:575.98px){
    #patientModal .patient-history-pager{justify-content:space-between}
}

/* v0.1.99 — listado dinámico de ámbitos en Ciudades. No altera los formularios. */
#citiesRoot .city-list-table{table-layout:fixed;width:100%;}
#citiesRoot .city-list-table thead th:nth-child(1){width:19%;}
#citiesRoot .city-list-table thead th:nth-child(2){width:50%;}
#citiesRoot .city-list-table thead th:nth-child(3){width:23%;}
#citiesRoot .city-list-table thead th:nth-child(4){width:8%;min-width:75px;}
#citiesRoot .city-list-table td{vertical-align:middle;}
#citiesRoot .city-name-cell{overflow-wrap:anywhere;}
#citiesRoot .city-scopes-cell{min-width:0;}
#citiesRoot .city-scopes-tags{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;min-width:0;}
#citiesRoot .city-scope-tag{display:inline-flex;align-items:center;gap:.28rem;max-width:min(185px,100%);min-width:0;padding:.24rem .46rem;border:1px solid var(--bs-border-color,#d9e1ec);border-radius:.48rem;background:var(--bs-tertiary-bg,#f2f5f8);color:var(--bs-body-color,#263142);line-height:1.3;font-size:.75rem;white-space:nowrap;}
#citiesRoot .city-scope-tag-name{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;font-weight:600;}
#citiesRoot .city-scope-tag-km{flex:none;color:var(--bs-secondary-color,#62718b);font-variant-numeric:tabular-nums;}
#citiesRoot .city-scope-more{display:inline-flex;align-items:center;justify-content:center;flex:none;min-height:25px;padding:.2rem .52rem;border:1px solid color-mix(in srgb,var(--accent-color,#e5b900),transparent 45%);border-radius:.5rem;background:color-mix(in srgb,var(--accent-color,#ffdb26),transparent 90%);font-size:.74rem;font-weight:700;color:var(--bs-body-color,#263142);white-space:nowrap;cursor:pointer;}
#citiesRoot .city-scope-more:hover,#citiesRoot .city-scope-more[aria-expanded=true]{background:color-mix(in srgb,var(--accent-color,#ffdb26),transparent 77%);}
#citiesRoot .city-active-cell{text-align:center;vertical-align:middle;}
#citiesRoot .city-row-switch{align-items:center;justify-content:center;}
#citiesRoot .city-row-switch .form-check-input{margin:0!important;cursor:pointer;}
#citiesRoot .city-row-switch .form-check-input:disabled{cursor:not-allowed;opacity:.48;}
.city-scope-popover{position:fixed;z-index:1100;max-height:min(320px,60vh);width:min(290px,calc(100vw - 24px));overflow-y:auto;padding:.6rem .65rem;border:1px solid var(--bs-border-color,#d9e1ec);border-radius:.75rem;background:var(--bs-body-bg,#fff);box-shadow:0 14px 35px rgba(12,25,45,.18);color:var(--bs-body-color,#263142);}
.city-scope-popover-title{font-size:.72rem;color:var(--bs-secondary-color,#62718b);font-weight:700;margin:0 0 .35rem;letter-spacing:.02em;}
.city-scope-popover-row{display:flex;justify-content:space-between;gap:.6rem;align-items:baseline;padding:.3rem 0;border-top:1px solid var(--bs-border-color,#e6e9ef);font-size:.8rem;}
.city-scope-popover-row span:first-child{overflow-wrap:anywhere;min-width:0;}
.city-scope-popover-km{flex:none;white-space:nowrap;color:var(--bs-secondary-color,#62718b);font-variant-numeric:tabular-nums;}
@media(max-width:767.98px){#citiesRoot .city-list-table{min-width:680px;}#citiesRoot .city-list-table thead th:nth-child(1){width:22%;}#citiesRoot .city-list-table thead th:nth-child(2){width:43%;}#citiesRoot .city-list-table thead th:nth-child(3){width:23%;}#citiesRoot .city-list-table thead th:nth-child(4){width:12%;}}

/* v0.1.101 - Mi Menú: preferencias locales por usuario y empresa */
.my-menu-dialog{--bs-modal-width:min(1020px,calc(100vw - 1.5rem));max-width:var(--bs-modal-width);margin-inline:auto}
.my-menu-dialog .modal-content{min-width:0;max-height:calc(100dvh - 2rem);overflow:hidden;border-radius:1rem}
.my-menu-body{overflow:auto;overscroll-behavior:contain;padding:1rem 1.25rem;min-height:180px}
.my-menu-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.85rem}
.my-menu-editor{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:.9rem}
.my-menu-section{min-width:0;border:1px solid var(--bs-border-color);border-radius:.75rem;background:var(--bs-body-bg);padding:.65rem}
.my-menu-section-header{display:flex;align-items:center;gap:.4rem;padding-bottom:.5rem;margin-bottom:.45rem;border-bottom:1px solid var(--bs-border-color)}
.my-menu-section-header .form-control{flex:1;min-width:0;font-weight:700;background:transparent!important;border-color:transparent!important;box-shadow:none!important}
.my-menu-section-header input:not([readonly]){border-color:var(--bs-border-color)!important;background:var(--bs-tertiary-bg)!important}
.my-menu-section-items,.my-menu-children{min-height:22px;display:grid;gap:.35rem}
.my-menu-children{padding:.4rem 0 .15rem 1rem;border-left:2px solid var(--bs-border-color);margin-left:.55rem}
.my-menu-line{display:flex;align-items:center;gap:.35rem;min-width:0;padding:.37rem .45rem;border:1px solid var(--bs-border-color);border-radius:.45rem;background:var(--bs-tertiary-bg)}
.my-menu-label{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.81rem;font-weight:600}
.my-menu-group{background:color-mix(in srgb,var(--accent-color) 7%,var(--bs-body-bg));margin-top:.35rem}
.my-menu-grip{flex:none;color:var(--bs-secondary-color);cursor:grab;padding:0 .2rem}
.my-menu-actions{flex:none;display:flex;gap:1px}
.my-menu-action{border:0;border-radius:.35rem;background:transparent;color:var(--bs-secondary-color);width:27px;height:28px;display:grid;place-items:center;font-size:.8rem;cursor:pointer}
.my-menu-action:hover:not(:disabled){color:var(--bs-body-color);background:color-mix(in srgb,var(--accent-color) 18%,transparent)}
.my-menu-action:disabled{opacity:.22;cursor:default}
.my-menu-indicators{display:inline-flex;gap:.35rem;margin-left:.45rem;color:var(--accent-color)}
.my-menu-drop-hint{display:none;text-align:center;color:var(--bs-secondary-color);font-size:.73rem;padding:.45rem;border:1px dashed var(--bs-border-color);border-radius:.4rem}
.my-menu-section-items:empty .my-menu-drop-hint,.my-menu-children:empty .my-menu-drop-hint{display:block}
.my-menu-move-picker{display:flex;gap:.4rem;align-items:center;padding:.4rem 0}.my-menu-move-picker select{min-width:0;flex:1}
.my-menu-external-icon{font-size:.73rem;margin-left:auto;opacity:.8}
.my-menu-footer{display:flex;flex-wrap:wrap;gap:.4rem}
@media(max-width:900px){.my-menu-editor{grid-template-columns:minmax(0,1fr)}}
@media(max-width:600px){.my-menu-dialog{--bs-modal-width:calc(100vw - .6rem)}.my-menu-body{padding:.65rem}.my-menu-section{padding:.4rem}.my-menu-actions{gap:0}.my-menu-action{width:24px}.my-menu-footer .btn{flex:1}.my-menu-pinned-list{flex-wrap:nowrap;overflow-x:auto;max-height:none}}

/* 0.1.102 - editor jerárquico de Mi Menú; accesos directos = sin submenú. */
.my-menu-dialog{--bs-modal-width:min(1100px,calc(100vw - 1rem))}
.my-menu-editor{display:flex;flex-direction:column;gap:.8rem}
.my-menu-section{width:100%;border:1px solid var(--bs-border-color);border-radius:.8rem;padding:0;overflow:hidden;box-shadow:0 1px 4px #00000008}
.my-menu-section-header{display:flex;align-items:center;gap:.45rem;min-width:0;margin:0;padding:.65rem .8rem;border-bottom:1px solid var(--bs-border-color);background:var(--bs-tertiary-bg)}
.my-menu-section-index{display:grid;place-items:center;min-width:2.1rem;height:2rem;border-radius:.45rem;background:var(--bs-secondary-bg);color:var(--bs-secondary-color);font-weight:750;font-size:.78rem}
.my-menu-section-name{flex:1;min-width:130px}
.my-menu-section-name .form-control{font-weight:750;background:var(--bs-body-bg)!important;border-color:var(--bs-border-color)!important;min-height:32px}
.my-menu-section-count{white-space:nowrap;font-size:.75rem;color:var(--bs-secondary-color)}
.my-menu-section-actions{display:flex;gap:.2rem}
.my-menu-section-content{padding:.7rem .8rem;min-width:0}
.my-menu-section-items,.my-menu-children{display:grid;gap:.4rem;min-height:8px}
.my-menu-section-items{padding-bottom:.5rem}
.my-menu-children{margin-left:1.8rem;padding:.5rem .6rem .4rem;border-left:3px solid var(--bs-border-color);background:color-mix(in srgb,var(--bs-tertiary-bg) 46%,transparent);border-radius:0 0 .45rem .45rem;margin-bottom:.45rem}
.my-menu-entry{display:flex;align-items:center;gap:.55rem;border:1px solid var(--bs-border-color);border-radius:.55rem;background:var(--bs-body-bg);padding:.43rem .55rem;min-height:41px;min-width:0}
.my-menu-entry-main{flex:1;min-width:0;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.my-menu-entry-title{flex:1;min-width:0;display:flex;align-items:center;gap:.4rem;font-size:.86rem;font-weight:600}
.my-menu-item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.my-menu-entry-meta{display:flex;align-items:center;gap:.4rem;white-space:nowrap;font-size:.72rem;color:var(--bs-secondary-color)}
.my-menu-kind,.my-menu-quantity{border:1px solid var(--bs-border-color);border-radius:20px;padding:.08rem .4rem;font-size:.7rem}
.my-menu-group-entry{background:color-mix(in srgb,var(--accent-color) 7%,var(--bs-body-bg));border-color:color-mix(in srgb,var(--accent-color) 20%,var(--bs-border-color))}
.my-menu-group-input{min-width:120px;max-width:320px;font-weight:700}
.my-menu-order-notice{padding:.5rem .7rem;background:var(--bs-tertiary-bg);color:var(--bs-secondary-color);font-size:.79rem;border-radius:.5rem;margin-bottom:.75rem;min-height:32px}
.my-menu-last-changed{outline:2px solid color-mix(in srgb,var(--accent-color) 70%,transparent);outline-offset:1px}
.my-menu-add-submenu{margin-top:.25rem}
.my-menu-grip{touch-action:none;user-select:none;flex:none;cursor:grab;padding:.2rem .4rem}
.my-menu-touch-dragging{touch-action:none;user-select:none;cursor:grabbing}
.my-menu-drop-hint{display:block;font-size:.72rem;color:var(--bs-secondary-color);border:1px dashed var(--bs-border-color);padding:.3rem .5rem;border-radius:.35rem;opacity:.65}
.my-menu-section-items>.my-menu-drop-hint,.my-menu-children>.my-menu-drop-hint{margin-top:.15rem}
.my-menu-footer{border-top:1px solid var(--bs-border-color)}
.my-menu-direct-link>.nav-link .nav-dot{margin-right:.65rem}
@media(max-width:700px){
 .my-menu-section-header{flex-wrap:wrap;padding:.5rem}
 .my-menu-section-count{order:5;width:100%;padding-left:2.5rem}
 .my-menu-section-content{padding:.5rem}
 .my-menu-entry{gap:.25rem;flex-wrap:wrap}
 .my-menu-entry-meta{white-space:normal}
 .my-menu-entry-main{gap:.3rem}
 .my-menu-group-input{max-width:100%;width:100%}
 .my-menu-children{margin-left:1rem;padding:.4rem}
 .my-menu-actions{gap:0}
 .my-menu-footer [data-my-menu-status]{flex-basis:100%}
}

/* v0.1.103 integrado: visualización coherente en Mi Menú por posición actual. */
.my-menu-editor-icon{display:inline-flex;justify-content:center;align-items:center;flex:0 0 20px;font-size:1rem;color:var(--bs-secondary-color)}
.my-menu-editor-dot{flex:0 0 8px;width:8px;height:8px;border:2px solid var(--bs-secondary-color);border-radius:50%;margin-inline:6px;opacity:.65}
.my-menu-submenu-link>.nav-link>.nav-dot{flex-shrink:0}
.my-menu-direct-link>.nav-link>.nav-icon{flex-shrink:0}

/* v0.1.104 integrada: confirmación de Mi Menú sin window.confirm ni modal anidado. */
#myMenuModal .modal-content{position:relative}
.my-menu-confirm-layer{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:rgba(14,22,35,.58);z-index:15;border-radius:inherit}
.my-menu-confirm-layer.d-none{display:none!important}
.my-menu-confirm-panel{width:min(100%,460px);padding:1.65rem;border:1px solid var(--bs-border-color);border-radius:1rem;background:var(--bs-body-bg);color:var(--bs-body-color);box-shadow:0 18px 55px rgba(0,0,0,.22);text-align:left}
.my-menu-confirm-symbol{display:flex;align-items:center;justify-content:center;width:46px;height:46px;margin-bottom:.9rem;border-radius:.8rem;background:var(--bs-tertiary-bg);color:var(--bs-danger);font-size:1.35rem}
.my-menu-confirm-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.55rem;margin-top:1.4rem}
@media(max-width:600px){.my-menu-confirm-layer{padding:.65rem}.my-menu-confirm-panel{padding:1.15rem}.my-menu-confirm-actions>.btn{flex:1}}
/* Un acceso trasladado a cualquier submenú siempre muestra punto, nunca ícono. */
.sidebar .nav-submenu > li.my-menu-submenu-link > .nav-link > .nav-icon{display:none!important}
.sidebar .nav-submenu > li.my-menu-submenu-link > .nav-link > .nav-dot{display:inline-block!important;flex:0 0 auto}

/* MFA / Autenticación TOTP: light/dark heredan los tokens del tema vigente. */
.mfa-auth-card{max-width:530px;width:min(100%,530px);margin-inline:auto}
.mfa-auth-shield{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;border-radius:16px;background:var(--bs-primary-bg-subtle,rgba(255,210,44,.12));color:var(--bs-primary,#e6b800);font-size:26px;margin-bottom:14px}
.mfa-qr-area{display:flex;justify-content:center;margin:18px 0}
.mfa-qr{width:min(224px,100%);height:auto;aspect-ratio:1;border:10px solid white;background:white;border-radius:14px;box-shadow:0 3px 18px rgba(0,0,0,.09)}
.mfa-otp{text-align:center;letter-spacing:.3em;font-family:ui-monospace,Consolas,monospace;font-size:1.45rem!important;font-weight:650;min-height:54px}
.mfa-manual-key{margin:15px 0;padding:12px 14px;border:1px solid var(--bs-border-color,#cad1db);border-radius:12px}
.mfa-manual-key summary{cursor:pointer;font-weight:600}
.mfa-manual-key p{font-size:.83rem;margin:.6rem 0;color:var(--bs-secondary-color,#778)}
.mfa-manual-key code{display:block;overflow-wrap:anywhere;user-select:all;padding:12px;background:var(--bs-tertiary-bg,#eee);border-radius:8px}
.mfa-fineprint{font-size:.8rem;color:var(--bs-secondary-color,#667);margin:15px 0}
.mfa-recovery-codes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:18px 0}
.mfa-recovery-codes code{display:block;padding:10px 5px;text-align:center;border:1px solid var(--bs-border-color,#ccc);background:var(--bs-tertiary-bg,#f5f5f5);color:var(--bs-body-color,#222);border-radius:7px;font-size:.78rem}
@media(max-width:540px){.mfa-recovery-codes{grid-template-columns:1fr}.mfa-otp{font-size:1.2rem!important}.mfa-auth-card{padding:18px}}

/* v0.1.111: TOTP segmentado para inicio de sesión y alta. */
.mfa-otp-digits{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.55rem;max-width:420px;margin-inline:auto}
.mfa-otp-digit{min-width:0!important;width:100%;height:64px;text-align:center;padding:.45rem .1rem!important;font:700 clamp(1.3rem,3vw,1.8rem)/1 ui-monospace,SFMono-Regular,Consolas,monospace!important;letter-spacing:0!important;border:1px solid var(--bs-border-color,#cdd3df)!important;border-radius:.8rem!important;background:var(--bs-body-bg,#fff)!important;color:var(--bs-body-color,#111)!important;transition:border-color .14s,box-shadow .14s}
.mfa-otp-digit:focus{border-color:var(--bs-primary,#e5b900)!important;box-shadow:0 0 0 .22rem color-mix(in srgb,var(--bs-primary,#e5b900),transparent 76%)!important}
.mfa-otp-incomplete .mfa-otp-digit:placeholder-shown{border-color:var(--bs-danger,#dc3545)!important}
.mfa-otp-recovery[hidden]{display:none!important}
@media(max-width:480px){.mfa-otp-digits{gap:.32rem}.mfa-otp-digit{height:54px;border-radius:.55rem!important;font-size:1.25rem!important}}
