/*! bs4-compat.css — compatibilidad Bootstrap 4 -> Bootstrap 5 (utilidades y componentes legados). */
.ml-0{margin-left:0!important}
.mr-0{margin-right:0!important}
.pl-0{padding-left:0!important}
.pr-0{padding-right:0!important}
.ml-1{margin-left:.25rem!important}
.mr-1{margin-right:.25rem!important}
.pl-1{padding-left:.25rem!important}
.pr-1{padding-right:.25rem!important}
.ml-2{margin-left:.5rem!important}
.mr-2{margin-right:.5rem!important}
.pl-2{padding-left:.5rem!important}
.pr-2{padding-right:.5rem!important}
.ml-3{margin-left:1rem!important}
.mr-3{margin-right:1rem!important}
.pl-3{padding-left:1rem!important}
.pr-3{padding-right:1rem!important}
.ml-4{margin-left:1.5rem!important}
.mr-4{margin-right:1.5rem!important}
.pl-4{padding-left:1.5rem!important}
.pr-4{padding-right:1.5rem!important}
.ml-5{margin-left:3rem!important}
.mr-5{margin-right:3rem!important}
.pl-5{padding-left:3rem!important}
.pr-5{padding-right:3rem!important}
.ml-auto{margin-left:auto!important}
.mr-auto{margin-right:auto!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.float-left{float:left!important}
.float-right{float:right!important}
@media (min-width:576px){.ml-sm-0{margin-left:0!important}.mr-sm-0{margin-right:0!important}.pl-sm-0{padding-left:0!important}.pr-sm-0{padding-right:0!important}.ml-sm-1{margin-left:.25rem!important}.mr-sm-1{margin-right:.25rem!important}.pl-sm-1{padding-left:.25rem!important}.pr-sm-1{padding-right:.25rem!important}.ml-sm-2{margin-left:.5rem!important}.mr-sm-2{margin-right:.5rem!important}.pl-sm-2{padding-left:.5rem!important}.pr-sm-2{padding-right:.5rem!important}.ml-sm-3{margin-left:1rem!important}.mr-sm-3{margin-right:1rem!important}.pl-sm-3{padding-left:1rem!important}.pr-sm-3{padding-right:1rem!important}.ml-sm-4{margin-left:1.5rem!important}.mr-sm-4{margin-right:1.5rem!important}.pl-sm-4{padding-left:1.5rem!important}.pr-sm-4{padding-right:1.5rem!important}.ml-sm-5{margin-left:3rem!important}.mr-sm-5{margin-right:3rem!important}.pl-sm-5{padding-left:3rem!important}.pr-sm-5{padding-right:3rem!important}.ml-sm-auto{margin-left:auto!important}.mr-sm-auto{margin-right:auto!important}.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.float-sm-left{float:left!important}.float-sm-right{float:right!important}}
@media (min-width:768px){.ml-md-0{margin-left:0!important}.mr-md-0{margin-right:0!important}.pl-md-0{padding-left:0!important}.pr-md-0{padding-right:0!important}.ml-md-1{margin-left:.25rem!important}.mr-md-1{margin-right:.25rem!important}.pl-md-1{padding-left:.25rem!important}.pr-md-1{padding-right:.25rem!important}.ml-md-2{margin-left:.5rem!important}.mr-md-2{margin-right:.5rem!important}.pl-md-2{padding-left:.5rem!important}.pr-md-2{padding-right:.5rem!important}.ml-md-3{margin-left:1rem!important}.mr-md-3{margin-right:1rem!important}.pl-md-3{padding-left:1rem!important}.pr-md-3{padding-right:1rem!important}.ml-md-4{margin-left:1.5rem!important}.mr-md-4{margin-right:1.5rem!important}.pl-md-4{padding-left:1.5rem!important}.pr-md-4{padding-right:1.5rem!important}.ml-md-5{margin-left:3rem!important}.mr-md-5{margin-right:3rem!important}.pl-md-5{padding-left:3rem!important}.pr-md-5{padding-right:3rem!important}.ml-md-auto{margin-left:auto!important}.mr-md-auto{margin-right:auto!important}.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.float-md-left{float:left!important}.float-md-right{float:right!important}}
@media (min-width:992px){.ml-lg-0{margin-left:0!important}.mr-lg-0{margin-right:0!important}.pl-lg-0{padding-left:0!important}.pr-lg-0{padding-right:0!important}.ml-lg-1{margin-left:.25rem!important}.mr-lg-1{margin-right:.25rem!important}.pl-lg-1{padding-left:.25rem!important}.pr-lg-1{padding-right:.25rem!important}.ml-lg-2{margin-left:.5rem!important}.mr-lg-2{margin-right:.5rem!important}.pl-lg-2{padding-left:.5rem!important}.pr-lg-2{padding-right:.5rem!important}.ml-lg-3{margin-left:1rem!important}.mr-lg-3{margin-right:1rem!important}.pl-lg-3{padding-left:1rem!important}.pr-lg-3{padding-right:1rem!important}.ml-lg-4{margin-left:1.5rem!important}.mr-lg-4{margin-right:1.5rem!important}.pl-lg-4{padding-left:1.5rem!important}.pr-lg-4{padding-right:1.5rem!important}.ml-lg-5{margin-left:3rem!important}.mr-lg-5{margin-right:3rem!important}.pl-lg-5{padding-left:3rem!important}.pr-lg-5{padding-right:3rem!important}.ml-lg-auto{margin-left:auto!important}.mr-lg-auto{margin-right:auto!important}.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.float-lg-left{float:left!important}.float-lg-right{float:right!important}}
@media (min-width:1200px){.ml-xl-0{margin-left:0!important}.mr-xl-0{margin-right:0!important}.pl-xl-0{padding-left:0!important}.pr-xl-0{padding-right:0!important}.ml-xl-1{margin-left:.25rem!important}.mr-xl-1{margin-right:.25rem!important}.pl-xl-1{padding-left:.25rem!important}.pr-xl-1{padding-right:.25rem!important}.ml-xl-2{margin-left:.5rem!important}.mr-xl-2{margin-right:.5rem!important}.pl-xl-2{padding-left:.5rem!important}.pr-xl-2{padding-right:.5rem!important}.ml-xl-3{margin-left:1rem!important}.mr-xl-3{margin-right:1rem!important}.pl-xl-3{padding-left:1rem!important}.pr-xl-3{padding-right:1rem!important}.ml-xl-4{margin-left:1.5rem!important}.mr-xl-4{margin-right:1.5rem!important}.pl-xl-4{padding-left:1.5rem!important}.pr-xl-4{padding-right:1.5rem!important}.ml-xl-5{margin-left:3rem!important}.mr-xl-5{margin-right:3rem!important}.pl-xl-5{padding-left:3rem!important}.pr-xl-5{padding-right:3rem!important}.ml-xl-auto{margin-left:auto!important}.mr-xl-auto{margin-right:auto!important}.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.float-xl-left{float:left!important}.float-xl-right{float:right!important}}
.font-weight-bold{font-weight:700!important}
.font-weight-bolder{font-weight:bolder!important}
.font-weight-normal{font-weight:400!important}
.font-weight-light{font-weight:300!important}
.font-weight-lighter{font-weight:lighter!important}
.font-italic{font-style:italic!important}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
/* --- Boton de cierre BS4 (.close) ----------------------------------------
   BS5 lo reemplazo por .btn-close. El markup legado (694 usos) es
   <button class="close">&times;</button>, a veces con <span aria-hidden>.
   En BS4 se alineaba con float:right, pero .modal-header de BS5 es flex y
   ahi el float se ignora -> la caja colapsaba a 0px y no era clicable.
   Solucion: caja explicita (inline-flex + width/height) + margin-left:auto
   para el caso flex, conservando float:right para contenedores no-flex. */
.close{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;float:right;width:1.5em;height:1.5em;margin-left:auto;padding:0;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5;background-color:transparent;border:0;border-radius:.25rem;cursor:pointer;-webkit-appearance:none;appearance:none}
.close>span{display:block;line-height:1;pointer-events:none}
.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.9}
.close:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.close.disabled,.close:disabled{pointer-events:none;opacity:.25}
.modal-header .close{padding:0;margin:-.25rem -.25rem -.25rem auto}
/* Geometria tomada de .alert-dismissible .btn-close del core BS5 5.3.8. */
.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;width:auto;height:auto;padding:1.25rem 1rem;color:inherit}
.badge-primary{color:#fff!important;background-color:#0d6efd!important}
.badge-secondary{color:#fff!important;background-color:#6c757d!important}
.badge-success{color:#fff!important;background-color:#198754!important}
.badge-danger{color:#fff!important;background-color:#dc3545!important}
.badge-warning{color:#000!important;background-color:#ffc107!important}
.badge-info{color:#000!important;background-color:#0dcaf0!important}
.badge-light{color:#000!important;background-color:#f8f9fa!important}
.badge-dark{color:#fff!important;background-color:#212529!important}
.btn-block{display:block!important;width:100%!important}
.btn-block+.btn-block{margin-top:.5rem}
.no-gutters{margin-right:0!important;margin-left:0!important}
.no-gutters>.col,.no-gutters>[class*='col-']{padding-right:0!important;padding-left:0!important}
.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}
.form-row>.col,.form-row>[class*='col-']{padding-right:5px;padding-left:5px}
/* --- input-group-prepend / -append ---------------------------------------
   BS5 elimino los wrappers: ahora los hijos van sueltos dentro de
   .input-group. Con el markup legado esos <div> intermedios colapsaban a
   offsetWidth 0 porque no recibian flex-basis. Se les devuelve caja propia
   y se rehacen los radios de esquina que BS5 solo aplica a hijos directos. */
.input-group-prepend,.input-group-append{display:flex;align-items:stretch}
.input-group>.input-group-prepend,.input-group>.input-group-append{display:flex;flex:0 0 auto;width:auto;align-items:stretch}
.input-group-prepend{margin-right:-1px}
.input-group-append{margin-left:-1px}
.input-group>.input-group-prepend>.btn,.input-group>.input-group-append>.btn{position:relative;z-index:2}
.input-group>.input-group-prepend>.btn:focus,.input-group>.input-group-append>.btn:focus{z-index:5}
/* Esquinas: recto hacia el interior del grupo, redondeado hacia afuera. */
.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}
.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}
.form-inline{display:flex;flex-flow:row wrap;align-items:center}
.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}
.custom-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}
.custom-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.custom-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}
.custom-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}
.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}
.custom-control-inline{display:inline-flex;margin-right:1rem}
.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}
.custom-control-label{position:relative;margin-bottom:0;vertical-align:top;cursor:pointer}
.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:'';background-color:#fff;border:1px solid #adb5bd}
.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:'';background:50%/50% 50% no-repeat}
.custom-checkbox .custom-control-label::before{border-radius:.25rem}
.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#0d6efd;background-color:#0d6efd}
.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}
.custom-switch{padding-left:2.25rem}
.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;border-radius:.5rem}
.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out}
.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}
.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}
.media{display:flex;align-items:flex-start}
.media-body{flex:1}

/* =========================================================================
   AMPLIACION COMPAT BS4 -> BS5 5.3.8
   Solo geometria y utilidades estructurales. Sin colores de marca, sombras
   ni tipografia: la capa visual es Tailwind (prefijo tw:), que carga despues.
   Orden real en head.php: BS5 core -> bs4-compat -> netgob-custom ->
   ui-fixes -> tailwind. Por eso casi ninguna regla necesita !important.
   ========================================================================= */

/* --- Formularios ---------------------------------------------------------
   .form-group desaparecio en BS5 (556 usos en 74 archivos). Sin ella los
   campos quedan pegados: margin-bottom medido = 0px. Valor BS4 6.x: 1rem.
   Nota: css/netgob-custom.css:1620 ya define .form-group{margin-bottom:1.5rem
   !important} y carga despues, asi que ahi sigue mandando esa regla; esta es
   la linea base para el resto. */
.form-group{margin-bottom:1rem}
.form-group>label{display:inline-block;margin-bottom:.5rem}

/* .form-inline: el core del archivo ya trae el contenedor y .form-control.
   Se completan los hijos que BS4 solo activaba desde el breakpoint sm. */
.form-inline .form-check{width:100%}
@media (min-width:576px){
.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}
.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}
.form-inline .form-control-plaintext{display:inline-block}
.form-inline .input-group,.form-inline .custom-select{width:auto}
.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}
.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}
.form-inline .custom-control{align-items:center;justify-content:center}
.form-inline .custom-control-label{margin-bottom:0}
}

/* --- custom-file (BS5 lo unifico en .form-control[type=file]) ------------- */
.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}
.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}
.custom-file-input:focus~.custom-file-label{border-color:#86b7fe;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.375rem}
.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Examinar";background-color:#e9ecef;border-left:inherit;border-radius:0 .375rem .375rem 0}
.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}

/* --- custom-radio (completa la familia custom-control ya presente) -------- */
.custom-radio .custom-control-label::before{border-radius:50%}
.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}

/* --- Badges --------------------------------------------------------------
   .badge-pill se renombro a .rounded-pill (15 usos exactos). El hover de los
   badges enlazados existia en BS4 y BS5 lo elimino; se resuelve con filter
   para no introducir hexadecimales de marca. */
.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}
a.badge-primary:hover,a.badge-primary:focus,a.badge-secondary:hover,a.badge-secondary:focus,a.badge-success:hover,a.badge-success:focus,a.badge-danger:hover,a.badge-danger:focus,a.badge-warning:hover,a.badge-warning:focus,a.badge-info:hover,a.badge-info:focus,a.badge-light:hover,a.badge-light:focus,a.badge-dark:hover,a.badge-dark:focus{text-decoration:none;filter:brightness(.9)}

/* --- Tablas: thead-light / thead-dark ------------------------------------
   BS5 pinta las celdas con .table>:not(caption)>*>* (mas especifico que
   .thead-dark th), asi que se opera sobre sus custom properties. Colores
   literales de BS4 6.x. Se deja ademas la regla directa para <table> sin
   la clase .table. */
.thead-light{--bs-table-color:#495057;--bs-table-bg:#e9ecef;--bs-table-border-color:#dee2e6}
.thead-dark{--bs-table-color:#fff;--bs-table-bg:#343a40;--bs-table-border-color:#454d55}
.thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}
.thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}

/* --- Bordes direccionales (BS5: border-start / border-end) ----------------
   !important IMPRESCINDIBLE: compiten con .border y .border-0 del core BS5,
   que son utilidades declaradas con !important. Sin el, "border border-left-0"
   no quitaria nada. Mismo criterio que usaba BS4. */
.border-left{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}
.border-right{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}
.border-left-0{border-left:0!important}
.border-right-0{border-right:0!important}

/* --- Radios de esquina ---------------------------------------------------
   BS5 elimino .rounded-sm/.rounded-lg (ahora .rounded-1 .. .rounded-5) y
   cambio las medidas. Se restituyen los valores BS4 6.x. Sin !important:
   los 13 usos de .rounded-lg se combinan con .border, nunca con .rounded. */
.rounded-sm{border-radius:.2rem}
.rounded-lg{border-radius:.3rem}

/* --- Dropdown: alineacion y direcciones ----------------------------------
   OJO: en BS5 la alineacion real la decide Popper leyendo la clase
   .dropdown-menu-end (JS), no el CSS. Estas reglas solo cubren el caso
   estatico / sin Popper. Los 43 usos de .dropdown-menu-right y los 14 de
   .dropleft/.dropright requieren ademas un alias de clase en
   compat/jquery-bs5-shim.js. */
.dropdown-menu-right,.dropdown-menu-right[data-bs-popper]{right:0;left:auto}
.dropdown-menu-left,.dropdown-menu-left[data-bs-popper]{right:auto;left:0}
.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:0;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}
.dropleft .dropdown-toggle::after{display:none}
.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:0;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}

/* --- Utilidades de texto -------------------------------------------------
   .text-monospace -> .font-monospace en BS5. Reutiliza --bs-font-monospace. */
.text-monospace{font-family:var(--bs-font-monospace)}
.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}
.text-justify{text-align:justify}

/* --- Accesibilidad -------------------------------------------------------
   !important IMPRESCINDIBLE: .sr-only (ya definido arriba) usa !important en
   todas sus declaraciones, replicando BS4; el estado enfocado debe poder
   revertirlas. BS5 equivalente: .visually-hidden-focusable. */
.sr-only-focusable:active,.sr-only-focusable:focus{position:static!important;width:auto!important;height:auto!important;overflow:visible!important;clip:auto!important;white-space:normal!important}

/* --- Jumbotron (0 usos actuales; se completa la familia ya presente) ------ */
.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}
@media (min-width:576px){.jumbotron{padding:4rem 2rem}}

/* --- Card deck / card columns (0 usos actuales) --------------------------- */
.card-deck{display:flex;flex-direction:column}
.card-deck .card{margin-bottom:15px}
@media (min-width:576px){
.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}
.card-deck .card{flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}
}
.card-columns .card{margin-bottom:.75rem}
@media (min-width:576px){
.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}
.card-columns .card{display:inline-block;width:100%}
}

/* --- Embed responsive (BS5: .ratio) — 0 usos actuales -------------------- */
.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}
.embed-responsive::before{display:block;content:""}
.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}
.embed-responsive-21by9::before{padding-top:42.85714286%}
.embed-responsive-16by9::before{padding-top:56.25%}
.embed-responsive-4by3::before{padding-top:75%}
.embed-responsive-1by1::before{padding-top:100%}

/* ── <hr>: BS5 le aplica opacity:.25, BS4 no ────────────────────────────
   El separador rojo de 8 plantillas de impresion (40 usos con estilo
   inline color/background #f00) salia rosa palido en los documentos que
   la gente imprime. Restituir el comportamiento BS4 es justo para lo que
   existe este archivo.
   No pisa a quien SI quiere transparencia: los 3 <hr class="opacity-25">
   usan la utilidad de BS5, que lleva !important y gana a esta regla. */
hr { opacity: 1; }
