/*
 * CISJET 360° v1.0 — capa final de presentación, 18-10-2026.
 * Usa B-01 / V-01 / HV-360 existentes. Sin clases de permiso, rutas ni estados de negocio.
 * 38px es el objetivo desktop; el contenido puede crecer por accesibilidad.
 */
body[data-cisjet-ui] :is(.button, .icon-button, .notification-button, [data-cisjet-action], input[type="submit"], input[type="button"]) {
    box-sizing: border-box;
    min-height: var(--sis-action-height, 38px);
    height: auto;
    max-width: 100%;
}
body[data-cisjet-ui] :is(.button, input[type="submit"], input[type="button"]) {
    padding: var(--sis-action-compact-padding, .48rem .68rem);
    font-size: var(--sis-action-compact-font-size, .76rem);
    line-height: 1.15;
    white-space: normal;
    overflow-wrap: anywhere;
}
body[data-cisjet-ui] :is(.icon-button, .notification-button) {
    min-width: var(--sis-action-height, 38px);
    padding: .3rem;
    line-height: 1;
}
body[data-cisjet-ui] :is(.button, [data-cisjet-action])[hidden] {
    display: none;
}
body[data-cisjet-ui] [data-cisjet-action]:focus-visible {
    outline: 2px solid var(--button-action-focus, #2563EB);
    outline-offset: 2px;
}
/* Solo el título redundante ya documentado. La descripción y acciones NO se eliminan. */
.cisjet-duplicate-title {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}
/* Paginación: geometría compartida, no selección de sección ni franja de tab. */
body[data-cisjet-ui] .pagination {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .38rem;
    margin-block: .55rem 0;
}
body[data-cisjet-ui] .pagination > :is(a,button) {
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--sis-action-height, 38px);
    min-width: var(--sis-action-height, 38px);
    height: auto;
    padding: .45rem .65rem;
    border: 1px solid var(--color-border);
    border-radius: var(--sis-action-radius, 9px);
    font-size: .78rem;
    line-height: 1.15;
    text-decoration: none;
    color: var(--color-primary-dark);
    background: var(--color-surface);
}
body[data-cisjet-ui] .pagination > :is(a,button).is-active {
    background: var(--color-primary-soft);
    border-color: var(--color-primary);
    font-weight: 850;
}
body[data-cisjet-ui] .pagination > :is(a,button):focus-visible {
    outline: 2px solid var(--button-action-focus, #2563EB);
    outline-offset: 2px;
}
/* Mensajes que ya existen en las vistas: completa su presentación sin crear notificaciones. */
body[data-cisjet-ui] .alert-success {background:var(--color-success-soft);color:var(--color-primary-dark);border:1px solid var(--color-accent-dark)}
body[data-cisjet-ui] .alert-warning {background:var(--color-warning-soft);color:var(--color-primary-dark);border:1px solid var(--color-warning-dark)}
body[data-cisjet-ui] .alert-info {background:var(--color-primary-soft);color:var(--color-primary-dark);border:1px solid var(--color-border-strong)}
body[data-cisjet-ui] .pill-success {background:var(--color-success-soft);color:var(--color-primary-dark)}
body[data-cisjet-ui] .pill-warning {background:var(--color-warning-soft);color:var(--color-primary-dark)}
body[data-cisjet-ui] .pill-danger {background:var(--color-danger-soft);color:var(--color-danger-dark)}
body[data-cisjet-ui] .pill-info {background:var(--color-primary-soft);color:var(--color-primary-dark)}
/* No recortar selección múltiple ni ayudas: los 36px de V-01 son contextuales. */
body[data-cisjet-ui] .sis-compact-form select[multiple],
body[data-cisjet-ui] .sis-compact-form select[size]:not([size="1"]) {
    height: auto;
    min-height: 5.5rem;
}
body[data-cisjet-ui] :is(.form-stack,.form-grid,.form-actions,.page-actions,.table-actions) {
    min-width: 0;
}
body[data-cisjet-ui] :is(.form-actions,.page-actions,.table-actions) > .button {
    flex-shrink: 0;
    align-self: center;
}
/* HV-360 administra esta clase SOLO cuando la medición confirma que todo cabe.
 * El documento conserva su flujo: no se bloquea html/body ni se fijan tarjetas. */
body[data-cisjet-ui] .content .sis-viewport-table-region.cisjet-fixed-table-region {
    box-sizing: border-box;
    min-height: 0;
    height: auto;
    max-height: var(--cisjet-region-height);
    max-width: 100%;
    overflow: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    scroll-padding-top: var(--cisjet-table-header-height, 40px);
}
body[data-cisjet-ui] .cisjet-fixed-table-region > table > thead > tr > th {
    position: sticky;
    top: 0;
    z-index: 6;
    background: var(--color-surface-soft, #F8FBFE);
    box-shadow: 0 1px 0 var(--color-border);
}
@media (max-width: 767px), (max-height: 619px) {
    body[data-cisjet-ui] .content .sis-viewport-table-region,
    body[data-cisjet-ui] .content .sis-viewport-table-region.cisjet-fixed-table-region {
        max-height: none;
        min-height: 0;
        overscroll-behavior: auto;
    }
    body[data-cisjet-ui] :is(.button, [data-cisjet-action], .pagination > a) {
        height: auto;
        max-width: 100%;
    }
    body[data-cisjet-ui] :is(.form-actions,.page-actions,.table-actions) > .button {
        flex-shrink: 1;
    }
}
@media print {
    .cisjet-duplicate-title {
        position: static;
        width: auto;
        height: auto;
        padding: 0;
        margin: 0 0 .35rem;
        overflow: visible;
        clip-path: none;
        white-space: normal;
    }
    body[data-cisjet-ui] .content .sis-viewport-table-region.cisjet-fixed-table-region {
        max-height: none;
        height: auto;
        overflow: visible;
        scrollbar-gutter: auto;
    }
    body[data-cisjet-ui] .cisjet-fixed-table-region > table > thead > tr > th {
        position: static;
    }
}

/* SVG B-01 utilizado por acciones heredadas sin modificador semántico B-01. */
body[data-cisjet-ui] .button:not(.button-action) > svg.button-action-icon {
    width:16px;
    height:16px;
    flex:0 0 16px;
}

/* QA responsive: el mínimo intrínseco de una card/grid no debe ensanchar
 * el documento. Las tablas conservan su ancho mínimo y scroll local existentes. */
body[data-cisjet-ui] .content > :not(table),
body[data-cisjet-ui] .content .card,
body[data-cisjet-ui] .content .grid > :not(table) {
    min-width:0;
}

/* Mantener scroll horizontal local aun si una tabla corta no activa scroll-y.
 * No se cambia la estructura ni el mínimo de anchura de la tabla semántica. */
body[data-cisjet-ui] .content .sis-viewport-table-region { overflow-x:auto; }
@media print {
    body[data-cisjet-ui] .content .sis-viewport-table-region { overflow:visible; }
}

/* Devolver para corrección: contrato cromático B-01. No equivale a Rechazar.
 * Clases/eventos de confirmación heredados permanecen intactos. */
body[data-cisjet-ui] .button[data-cisjet-flow="return"] {
    background:var(--color-warning);
    color:var(--color-primary-dark);
    border:1px solid var(--color-warning-dark);
}
body[data-cisjet-ui] .button[data-cisjet-flow="return"]:hover {
    background:var(--color-warning-dark);
    color:var(--color-primary-dark);
}

/* CISJET-14 · R1: acciones de tablas sin corte de palabras.
 * Evita que el min-content de botones como "Desactivar" se reduzca a letras
 * cuando la tabla estrecha su columna. Mantiene scroll horizontal LOCAL.
 * Solo presentación: no altera enlaces, formularios ni eventos. */
body[data-cisjet-ui] .content :is(.responsive-table,.sis-table-wrap) .table-actions {
    width: max-content;
    max-width: none;
}
body[data-cisjet-ui] .content :is(.responsive-table,.sis-table-wrap) .table-actions > :is(form,a,button) {
    flex: 0 0 auto;
}
body[data-cisjet-ui] .content :is(.responsive-table,.sis-table-wrap) .table-actions .button {
    flex: 0 0 auto;
    min-width: max-content;
    max-width: none;
    white-space: nowrap;
    overflow-wrap: normal;
}
