html {
  font-size: 14px;
}

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

html {
  position: relative;
  min-height: 100%;
}

body {
  margin-bottom: 60px;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
  color: var(--bs-secondary-color);
  text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
  text-align: start;
}
/* Inicio por tarjetas */
.icono-modulo { width: 3rem; height: 3rem; border-radius: .75rem; display: flex; align-items: center; justify-content: center; font-size: 1.4rem; font-weight: 600; flex-shrink: 0; }
.tarjeta-modulo:hover, .tarjeta-opcion:hover { box-shadow: 0 .25rem .75rem rgba(0,0,0,.12); transform: translateY(-1px); transition: all .12s; }
.tarjeta-opcion .estrella { color: #c8c8c8; font-size: 1.1rem; line-height: 1; text-decoration: none; }
.tarjeta-opcion .estrella.activa { color: #f0b429; }
.navbar .breadcrumb-item + .breadcrumb-item::before { color: rgba(255,255,255,.5); }

/* Combos con búsqueda (combo.js) */
.combo { position: relative; }
.combo .combo-oculto { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; left: 0; bottom: 0; }
.combo-lista { position: absolute; z-index: 1050; left: 0; max-height: 18rem; width: max-content; max-width: calc(100vw - 1rem); overflow-y: auto; background: #fff; border: 1px solid #ced4da; border-radius: .375rem; box-shadow: 0 .5rem 1rem rgba(0,0,0,.15); margin-top: 2px; min-width: 100%; }
.combo-item { padding: .25rem .6rem; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.combo-item:hover, .combo-item.activo { background: #0d6efd; color: #fff; }
.combo-mas { padding: .25rem .6rem; color: #6c757d; font-style: italic; }
td .combo .combo-lista { min-width: 24rem; }

/* Cuadros de cliente/proveedor con búsqueda (buscador.js) */
.buscador { position: relative; }
form.d-flex > .buscador { display: inline-block; vertical-align: top; }
.buscador .combo-lista { min-width: 28rem; }
.buscador-nombre { position: absolute; left: .25rem; top: 100%; white-space: nowrap; line-height: 1.1; }
.input-group > .buscador { display: flex; flex: 0 0 auto; }
.input-group > .buscador > .form-control { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.input-group > .buscador .buscador-nombre { display: none; }
.input-group > .buscador .combo-lista { min-width: 32rem; }

/* Filtros en línea: los campos no ocupan todo el ancho */
form.d-flex > .form-control, form.d-flex > .form-select, form.d-flex > .buscador > .form-control { width: auto; }
form.d-flex > input[type=date] { width: 10rem; }

/* El encabezado fijo de los listados no debe tapar los menús de Filtros/Columnas */
thead.sticky-top { z-index: 5; }

/* Grupos de los listados */
tr.grupo { background: #f1f3f5; cursor: pointer; }
tr.grupo.nivel-1 td:first-child { padding-left: 1.5rem; }
tr.grupo .flecha { display: inline-block; width: 1em; color: #6c757d; }
tr.fila-de td:first-child { padding-left: 1.5rem; }

/* Spinner de los campos numéricos con formato (site.js). */
.num-wrap { position: relative; display: block; }
.num-wrap > input { padding-right: 1.4rem; }
.num-spin { position: absolute; top: 1px; right: 1px; bottom: 1px; width: 1.1rem; display: flex; flex-direction: column; opacity: .55; }
.num-wrap:hover .num-spin, .num-wrap:focus-within .num-spin { opacity: 1; }
.num-spin button { flex: 1; border: 0; padding: 0; line-height: 1; font-size: .5rem; background: transparent; color: inherit; cursor: pointer; }
.num-spin button:hover { background: rgba(13,110,253,.12); }
input[disabled] + .num-spin, input[readonly] + .num-spin { display: none; }
