/*
 * INFORAD - capa visual moderna del panel interno (inspirada en Porto 13.1).
 * Solo cambia apariencia (tipografia, radios, sombras, transiciones). No toca layout,
 * JS ni estructura: para volver atras basta quitar el <link> en layouts/partials/css.blade.php.
 */
:root {
    /* Paleta del manual de marca INFORAD */
    --ir-indigo: #2A3288;
    --ir-primary-dark: #0553A0;
    --ir-primary: #0079C2;
    --ir-gris: #464343;
    --ir-gris-claro: #EDEDED;
    --ir-degradado: linear-gradient(90deg, #2A3288 0%, #0553A0 50%, #0079C2 100%);
    --ir-primary-soft: rgba(0, 121, 194, .12);
    --ir-ink: #464343;
    --ir-muted: #7a7676;
    --ir-header: #1D2531;
    --ir-line: #e3e3e3;
    --ir-surface: #ffffff;
    --ir-bg: #EDEDED;
    --ir-radius: 14px;
    --ir-radius-sm: 10px;
    --ir-radio-btn: 6px;
    --ir-shadow: 0 2px 6px rgba(70, 67, 67, .05), 0 10px 30px rgba(70, 67, 67, .08);
    --ir-shadow-hover: 0 4px 10px rgba(70, 67, 67, .08), 0 16px 40px rgba(42, 50, 136, .14);
    --ir-font: "Poppins", sans-serif;
    --ir-ease: cubic-bezier(.22, .61, .36, 1);
    --bs-primary: #0079C2;
    --bs-primary-rgb: 0, 121, 194;
    --bs-link-color: #0079C2;
    --bs-link-hover-color: #0553A0;
}

/* ---------- Tipografia unificada ---------- */
body,
.pcoded,
.pcoded .pcoded-content,
.modal,
.dataTables_wrapper,
.swal2-popup,
input, select, textarea, .form-control, .form-select {
    font-family: var(--ir-font);
}
body { color: var(--ir-ink); -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: var(--ir-font); font-weight: 600; letter-spacing: -.01em; }
.pcoded .pcoded-content { background: var(--ir-bg); }

/* ---------- Botones redondeados ---------- */
.btn {
    border-radius: var(--ir-radio-btn);
    font-weight: 500;
    letter-spacing: .01em;
    transition: transform .2s var(--ir-ease), box-shadow .2s var(--ir-ease), background-color .2s, border-color .2s, color .2s;
}
.btn:not(:disabled):not(.disabled):hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(24, 37, 46, .14); }
.btn:not(:disabled):not(.disabled):active { transform: translateY(0); box-shadow: none; }
.btn-sm, .btn-group-sm > .btn { border-radius: var(--ir-radio-btn); }
/* Botones de grupo, input-group y cierre conservan su forma para no romper el acople */
.btn-group > .btn, .input-group > .btn, .btn-close, .dt-button { transform: none; }
.btn-group > .btn:not(:first-child):not(.dropdown-toggle) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.btn-group > .btn:not(:last-child):not(.dropdown-toggle) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.btn-group > .btn:first-child { border-top-left-radius: var(--ir-radio-btn); border-bottom-left-radius: var(--ir-radio-btn); }
.btn-group > .btn:last-child { border-top-right-radius: var(--ir-radio-btn); border-bottom-right-radius: var(--ir-radio-btn); }
.input-group > .btn { border-radius: 0 var(--ir-radio-btn) var(--ir-radio-btn) 0; }

/* ---------- Formularios ---------- */
.form-control, .form-select, .select2-container--default .select2-selection--single, .select2-container--default .select2-selection--multiple {
    border-radius: var(--ir-radius-sm);
    border-color: #d8e0e8;
    transition: border-color .2s, box-shadow .2s;
}
.form-control:focus, .form-select:focus,
.select2-container--default.select2-container--focus .select2-selection--multiple,
.select2-container--default.select2-container--open .select2-selection--single {
    border-color: var(--ir-primary);
    box-shadow: 0 0 0 .22rem var(--ir-primary-soft);
}
.form-label, label { font-weight: 500; color: var(--ir-ink); }
.input-group > .form-control:not(:last-child), .input-group > .form-select:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.input-group > .form-control:not(:first-child), .input-group > .form-select:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.form-check-input:checked { background-color: var(--ir-primary); border-color: var(--ir-primary); }

/* ---------- Tarjetas ---------- */
.card {
    border: 0;
    border-radius: var(--ir-radius);
    background: var(--ir-surface);
    box-shadow: var(--ir-shadow);
    transition: box-shadow .25s var(--ir-ease);
}
.card:hover { box-shadow: var(--ir-shadow-hover); }
.card > .card-header:first-child { border-radius: var(--ir-radius) var(--ir-radius) 0 0; background: transparent; border-bottom: 1px solid var(--ir-line); }
.card > .card-header h5, .card > .card-header h4 { font-weight: 600; }
.card-footer { background: transparent; border-top: 1px solid var(--ir-line); }

/* ---------- Modales ---------- */
.modal-content { border: 0; border-radius: 18px; box-shadow: 0 24px 70px rgba(24, 37, 46, .28); overflow: hidden; }
.modal-header { border-bottom: 1px solid var(--ir-line); padding: 1rem 1.4rem; }
.modal-footer { border-top: 1px solid var(--ir-line); }
.modal-title { font-weight: 600; }

.modal-backdrop.show { opacity: .5; backdrop-filter: blur(3px); }

/* ---------- Tablas y DataTables ---------- */
.table { color: var(--ir-ink); }
.table > thead > tr > th {
    font-size: .74rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em;
    border-bottom: 1px solid var(--ir-line);
}
.table > thead.table-light > tr > th, .table > thead > tr.table-light > th { color: var(--ir-muted); }
.table > tbody > tr { transition: background-color .15s; }
.table-hover > tbody > tr:hover { background-color: var(--ir-primary-soft); }
.table-responsive { border-radius: var(--ir-radius-sm); }
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select { border-radius: var(--ir-radius-sm); border: 1px solid #d8e0e8; padding: .35rem .75rem; }
.dataTables_wrapper .dataTables_filter input:focus { border-color: var(--ir-primary); box-shadow: 0 0 0 .2rem var(--ir-primary-soft); outline: 0; }
.dataTables_wrapper .dataTables_info { color: var(--ir-muted); font-size: .85rem; }
.page-link { border-radius: var(--ir-radio-btn) !important; margin: 0 2px; border: 0; color: var(--ir-ink); transition: background-color .2s, color .2s; }
.page-item.active .page-link { background: #0553A0; color: #fff; box-shadow: 0 4px 10px rgba(5, 83, 160, .3); }
.page-link:hover { background: var(--ir-primary-soft); color: var(--ir-primary-dark); }

/* ---------- Insignias, alertas, pestañas, menus ---------- */
.badge { border-radius: 50rem; font-weight: 500; padding: .4em .75em; }
.alert { border: 0; border-radius: var(--ir-radius-sm); box-shadow: 0 2px 10px rgba(24, 37, 46, .06); }
.nav-tabs .nav-link { border: 0; border-radius: var(--ir-radius-sm) var(--ir-radius-sm) 0 0; font-weight: 500; color: var(--ir-muted); transition: color .2s, background-color .2s; }
.nav-tabs .nav-link.active { color: var(--ir-primary); background: var(--ir-surface); box-shadow: inset 0 -3px 0 var(--ir-primary); }
.nav-pills .nav-link { border-radius: 50rem; }
.dropdown-menu { border: 0; border-radius: var(--ir-radius-sm); box-shadow: var(--ir-shadow-hover); padding: .4rem; }
.dropdown-item { border-radius: 8px; transition: background-color .15s; }
.progress { border-radius: 50rem; }
.progress-bar { border-radius: 50rem; }

/* ---------- Barra superior y menu lateral (solo apariencia) ---------- */
.pcoded .pcoded-navbar .pcoded-item > li > a,
.pcoded .pcoded-navbar .pcoded-submenu > li > a { transition: background-color .2s, color .2s, padding-left .2s var(--ir-ease); }
.pcoded .pcoded-navbar .pcoded-item > li > a { border-radius: 0 50rem 50rem 0; }
.pcoded .pcoded-navbar .pcoded-item > li > a:hover { padding-left: 1.5rem; }
.navbar-wrapper .navbar-logo { transition: background-color .2s; }

/* ---------- SweetAlert2 ---------- */
.swal2-container .swal2-popup { border-radius: 20px; padding: 1.8rem; }
.swal2-title { font-weight: 600; }
.swal2-styled { border-radius: var(--ir-radio-btn) !important; font-weight: 500; transition: transform .2s var(--ir-ease), box-shadow .2s; }
.swal2-styled:hover { transform: translateY(-1px); }
.swal2-input, .swal2-textarea, .swal2-select { border-radius: var(--ir-radius-sm); }

/* ---------- Detalles finos ---------- */
::selection { background: var(--ir-primary-soft); }
* { scrollbar-width: thin; scrollbar-color: #c3cdd6 transparent; }
a { transition: color .15s; }

@media (prefers-reduced-motion: reduce) {
    *:not(.modal):not(.modal-backdrop):not(.modal-dialog):not(.swal2-popup):not(.collapsing):not(.ir-titila):not([src*="Spin-1s-200px"]), *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
    .btn:hover { transform: none !important; }
}

/* ---------- Titulos sobre fondo oscuro: siempre blancos ---------- */
.modal-header { background-color: #1D2531; color: #fff; }
.modal-header .modal-title, .modal-header h1, .modal-header h2, .modal-header h3,
.modal-header h4, .modal-header h5, .modal-header h6, .modal-header label, .modal-header strong,
.bgn-dark, .bgn-dark h1, .bgn-dark h2, .bgn-dark h3, .bgn-dark h4, .bgn-dark h5, .bgn-dark h6, .bgn-dark strong,
.bg-dark:not(.btn), .bg-dark h1, .bg-dark h2, .bg-dark h3, .bg-dark h4, .bg-dark h5, .bg-dark h6,
.navbar-logo h5, .pcoded-navigation-label h4, .pcoded-navigation-label h5 { color: #fff; }
/* X de cerrar: borde y aspa blancos (los define misEstilos.css; aqui solo tamano, centrado y efecto) */
.modal-header .btn-close { margin: 0 !important; flex-shrink: 0; align-self: center; border-radius: 10px; opacity: 1; filter: none; transition: transform .2s var(--ir-ease), box-shadow .2s; }
.modal-header .btn-close:hover { transform: scale(1.08); box-shadow: 0 0 0 3px rgba(255, 255, 255, .22); }
/* Cabecera: contenido siempre centrado en vertical */
.modal-header { display: flex; align-items: center; min-height: 3.6rem; }
.modal-header .modal-title { margin: 0; line-height: 1.3; display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }
.modal-header .modal-title.text-center { justify-content: center; }
.modal-header .modal-title strong, .modal-header .modal-title span:not(.badge), .modal-header .modal-title .text-primary { color: #fff !important; }

/* ---------- Botones de solo icono (<i class="fa ... btn">): icono centrado ---------- */
i.btn, a.btn:has(> i:only-child), button.btn:has(> i:only-child), .btn:has(> [class*="icon-"]:only-child) {
    display: inline-flex; align-items: center; justify-content: center; line-height: 1;
}
i.btn { vertical-align: middle; }

/* ---------- Modales: apertura y cierre tipo macOS ----------
   Bootstrap espera la PRIMERA duracion de transicion: .modal al cerrar y el dialogo al abrir.
   El cierre se mantiene corto (~.35 s en total) porque el codigo de la app (hideModal/clearModal)
   cierra y reutiliza el mismo modal; un cierre largo vaciaba ventanas recien abiertas. */
.modal.fade { transition: opacity .22s ease !important; }
.modal.fade .modal-dialog {
    opacity: 0;
    transform: scale(.86) translateY(22px);
    transform-origin: 50% 35%;
    transition: opacity .2s ease-in, transform .26s cubic-bezier(.4, 0, 1, 1);          /* cierre: se encoge y se desvanece */
}
.modal.fade.show .modal-dialog {
    opacity: 1;
    transform: none;
    transition: opacity .35s ease-out, transform .7s cubic-bezier(.34, 1.56, .64, 1);   /* apertura: resorte con rebote */
}
.modal-backdrop.fade { opacity: 0 !important; transition: opacity .12s ease !important; }
.modal-backdrop.fade.show { opacity: 1 !important; }
.modal.modal-static .modal-dialog { transform: scale(1.025); }
.modal-backdrop.show { backdrop-filter: blur(4px) saturate(120%); }
/* SweetAlert2 inyecta su CSS despues del nuestro: se sube la especificidad para que el efecto gane. */
.swal2-container.swal2-backdrop-show, .swal2-container.swal2-noanimation { backdrop-filter: blur(4px) saturate(120%); }
.swal2-container .swal2-popup.swal2-show { animation: ir-swal-pop .65s cubic-bezier(.34, 1.56, .64, 1) !important; }
.swal2-container .swal2-popup.swal2-hide { animation: ir-swal-out .35s cubic-bezier(.4, 0, .6, 1) forwards !important; }
@keyframes ir-swal-pop { 0% { transform: scale(.82) translateY(16px); opacity: 0; } 60% { opacity: 1; } 100% { transform: scale(1) translateY(0); opacity: 1; } }
@keyframes ir-swal-out { 0% { transform: scale(1); opacity: 1; } 100% { transform: scale(.88) translateY(10px); opacity: 0; } }

/* ---------- Resumen del examen (vista examenes/partials/resumen_examen) ---------- */
.ir-resumen { background: var(--ir-surface); border-radius: var(--ir-radius); box-shadow: var(--ir-shadow); overflow: hidden; margin-bottom: 1.25rem; }
.ir-resumen__cabecera { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; padding: 1rem 1.4rem; background: var(--ir-header); color: #fff; }
.ir-resumen__numero { display: flex; flex-wrap: wrap; align-items: baseline; gap: .6rem; }
.ir-resumen__numero-label { font-size: .75rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; opacity: .85; }
.ir-resumen__numero-valor { font-size: 1.6rem; font-weight: 700; letter-spacing: -.01em; color: #fff; }
.ir-chip-estado { display: inline-flex; align-items: center; gap: .45rem; padding: .35rem .9rem; border-radius: 50rem; background: #fff; color: #2b2b2b; font-weight: 600; font-size: .85rem; box-shadow: 0 2px 8px rgba(0, 0, 0, .15); }
.ir-chip-estado i { color: var(--ir-estado, var(--ir-primary)); }
.ir-resumen__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin: 0; background: var(--ir-line); }
.ir-dato { background: var(--ir-surface); padding: .85rem 1.4rem; transition: background-color .2s; }
.ir-dato:hover { background: #f4f5f7; }
.ir-dato--ancho { grid-column: 1 / -1; }
.ir-dato dt { margin: 0 0 .15rem; font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--ir-header); }
.ir-dato dt i { margin-right: .35rem; opacity: .8; }
.ir-dato dd { margin: 0; font-weight: 600; color: #2b2b2b; word-break: break-word; }
.ir-dato__dni { display: inline-block; margin-right: .4rem; padding: .05rem .55rem; border-radius: 50rem; background: #eceef1; color: var(--ir-header); font-size: .85em; }
.ir-dato--nota dd { font-weight: 400; color: var(--ir-muted); }
.ir-antecedentes { padding: 1.1rem 1.4rem 1.3rem; border-top: 1px solid var(--ir-line); }
.ir-antecedentes__titulo { margin: 0 0 .5rem; font-size: 1rem; font-weight: 600; color: var(--ir-header); }
.ir-antecedentes__texto { padding: .75rem 1rem; border-left: 4px solid var(--ir-header); background: #f4f5f7; border-radius: 0 var(--ir-radius-sm) var(--ir-radius-sm) 0; word-wrap: break-word; }
@media (max-width: 767.98px) { .ir-resumen__grid { grid-template-columns: 1fr; } .ir-resumen__numero-valor { font-size: 1.35rem; } }

/* ---------- Tablas: bordes redondeados, filas suaves, contenido centrado en vertical ---------- */
.table { --bs-table-border-color: #e6ebf0; --bs-table-striped-bg: rgba(0, 121, 194, .035); --bs-table-hover-bg: rgba(0, 121, 194, .08); }
table.dataTable, .table-bordered, .card .table { border-collapse: separate; border-spacing: 0; border: 1px solid var(--ir-line); border-radius: var(--ir-radius-sm); }
table.dataTable > thead > tr > th:first-child, .table > thead > tr > th:first-child { border-top-left-radius: var(--ir-radius-sm); }
table.dataTable > thead > tr > th:last-child, .table > thead > tr > th:last-child { border-top-right-radius: var(--ir-radius-sm); }
table.dataTable > tbody > tr:last-child > td:first-child, .table > tbody > tr:last-child > td:first-child { border-bottom-left-radius: var(--ir-radius-sm); }
table.dataTable > tbody > tr:last-child > td:last-child, .table > tbody > tr:last-child > td:last-child { border-bottom-right-radius: var(--ir-radius-sm); }
table.dataTable > :not(caption) > * > *, .table > :not(caption) > * > * { vertical-align: middle; }
.table-bordered > :not(caption) > * > * { border-color: var(--ir-line); }
table.dataTable > tbody > tr > td { padding-top: .7rem; padding-bottom: .7rem; }
table.dataTable > tbody > tr { transition: background-color .15s; }
table.dataTable > tbody > tr:hover > * { --bs-table-accent-bg: rgba(0, 121, 194, .08); }
table.dataTable > thead > tr > th { padding-top: .85rem; padding-bottom: .85rem; font-weight: 600; letter-spacing: .04em; }
.dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter { margin-bottom: .75rem; }
.dataTables_wrapper .dataTables_filter input { min-width: 14rem; border-radius: 50rem; padding: .4rem 1rem; }
.dataTables_wrapper .dataTables_length select { border-radius: 50rem; padding: .35rem 1.8rem .35rem 1rem; }
.dataTables_wrapper .dataTables_paginate { margin-top: .75rem; }
.dt-buttons .dt-button, .dt-button { border-radius: var(--ir-radio-btn) !important; border: 0; padding: .3rem 1rem; font-weight: 500; transition: transform .2s var(--ir-ease), box-shadow .2s; }
.dt-button:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(70, 67, 67, .18); }

/* ---------- Controles: altura uniforme y texto centrado en vertical ---------- */
.form-control:not(.form-control-sm):not(textarea):not(.form-check-input):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]), .form-select:not(.form-select-sm) { min-height: 2.6rem; }
/* Interruptores y casillas que llevan .form-control: tamano propio de Bootstrap, no el de un campo de texto */
.form-check-input.form-control, input[type="checkbox"].form-control, input[type="radio"].form-control { min-height: 0; width: auto; padding: 0; }
.form-switch .form-check-input.form-control { width: 2em; height: 1em; }
.select2-container .select2-selection--single { min-height: 2.6rem; display: flex; align-items: center; }
.select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 1.4; padding-left: .85rem; flex: 1; }
.select2-container--default .select2-selection--single .select2-selection__arrow { height: 100%; top: 0; right: .35rem; }
.select2-container--default .select2-selection--multiple { min-height: 2.6rem; display: flex; align-items: center; }
.select2-dropdown { border-radius: var(--ir-radius-sm); border-color: var(--ir-line); box-shadow: var(--ir-shadow-hover); overflow: hidden; }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--ir-primary); }
.card-block.table-border-style, .table-responsive { border-radius: var(--ir-radius-sm); }

/* En tablas redondeadas (border-collapse: separate) cada celda solo dibuja derecha/abajo para no duplicar lineas */
table.dataTable.table-bordered > :not(caption) > * > *, .table-bordered > :not(caption) > * > * { border-width: 0 1px 1px 0; }
table.dataTable.table-bordered > :not(caption) > * > *:last-child, .table-bordered > :not(caption) > * > *:last-child { border-right-width: 0; }
table.dataTable.table-bordered > tbody > tr:last-child > *, .table-bordered > tbody > tr:last-child > * { border-bottom-width: 0; }

/* ---------- Colapsables (capas con collapse): transicion lenta y visible, tambien con "reducir movimiento" ---------- */
.collapsing { transition: height .65s cubic-bezier(.4, 0, .2, 1) !important; }

/* El resumen es un bloque de ancho completo aunque lo envuelva una .row con .row-cols-* */
.row > .ir-resumen { flex: 0 0 100%; width: 100%; max-width: 100%; }

/* ---------- Cabeceras de tabla: siempre azul oscuro (el contenido de las celdas conserva sus colores) ---------- */
.table > thead, table.dataTable > thead { --bs-table-bg: var(--ir-header); --bs-table-color: #fff; --bs-table-accent-bg: transparent; --bs-table-striped-bg: transparent; --bs-table-hover-bg: transparent; }
.table > thead > tr > th, .table > thead > tr > td,
table.dataTable > thead > tr > th, table.dataTable > thead > tr > td,
.dataTables_scrollHead table > thead > tr > th, .table > thead.table-light > tr > th, .table > thead > tr.table-light > th {
    background-color: var(--ir-header) !important;
    color: #fff !important;
    border-color: rgba(255, 255, 255, .14) !important;
}
.table > thead > tr > th a, table.dataTable > thead > tr > th a { color: inherit; }
.table > thead.table-light > tr > th, .table > thead > tr.table-light > th { color: #fff !important; }

.ir-resumen__numero > *:not(.badge):not(.ir-resumen__numero-label) { color: #fff; }

/* ---------- Modales y resumenes: sin azules claros (los listados de examenes conservan los suyos) ---------- */
.modal-body { background-color: #f3f4f6; }
.modal .table { --bs-table-striped-bg: rgba(29, 37, 49, .035); --bs-table-hover-bg: rgba(29, 37, 49, .06); }
.modal table.dataTable > tbody > tr:hover > * { --bs-table-accent-bg: rgba(29, 37, 49, .06); }

/* ---- Botones: solo forma (los colores son los originales de misEstilos.css / style.css) ---- */
.btn-group > .btn + .btn, .btn-group > .btn-group + .btn { margin-left: -1px; }
.btn:disabled, .btn.disabled { opacity: .5; box-shadow: none; }

/* ---------- Resumen del examen integrado a ras de los bordes de su contenedor ---------- */
.ir-resumen { border-radius: 0; box-shadow: none; margin: 0 0 1px; }
.modal-body > .ir-resumen, .modal-body > #divResumenExamenstadoExamenAcordion { margin-left: calc(var(--bs-modal-padding, 1rem) * -1); margin-right: calc(var(--bs-modal-padding, 1rem) * -1); }
.modal-body > #dxExamenEspecialMeta + .ir-resumen { margin-top: calc(var(--bs-modal-padding, 1rem) * -1); }

/* ---------- Botones de solo icono: cuadrados con esquinas suaves ---------- */
i.btn { width: 2.25rem; height: 2.25rem; padding: 0; border-radius: var(--ir-radio-btn); }
