/* Disaroca · Ecosistema de Recursos Humanos
   Bootstrap 5 (vendor/bootstrap.min.css) + tema Disaroca. Misma estructura que el ecosistema Busport:
   topbar de color con áreas en pastillas, barra clara de secciones, tarjetas de módulo.
   Marca: morado del logo #48276f, lila #7a4d9a como acento. */

/* 01. Tokens y tema de Bootstrap ------------------------------------------------------------ */
:root {
  --ds-morado: #48276f;
  --ds-morado-900: #2f1749;
  --ds-morado-700: #3c1f5e;
  --ds-morado-600: #563084;
  --ds-lila: #7a4d9a;
  --ds-lila-200: #d9cbe7;
  --ds-lila-100: #efe8f6;
  --ds-lila-50: #f8f5fb;
  --ds-fondo: #f5f3f8;
  --ds-borde: #e4dfeb;
  --ds-borde-fuerte: #cdc4d8;
  --ds-texto: #1f1a26;
  --ds-tenue: #645c6e;
  --ds-ok: #1f7a4d;
  --ds-radio: .75rem;
  --ds-radio-lg: 1rem;
  --ds-sombra: 0 1px 2px rgba(47, 23, 73, .06), 0 1px 3px rgba(47, 23, 73, .08);
  --ds-sombra-md: 0 6px 18px rgba(47, 23, 73, .12);
  --ds-max: 1320px;

  --bs-primary: #48276f;
  --bs-primary-rgb: 72, 39, 111;
  --bs-primary-text-emphasis: #2f1749;
  --bs-primary-bg-subtle: #efe8f6;
  --bs-primary-border-subtle: #d9cbe7;
  --bs-link-color: #563084;
  --bs-link-color-rgb: 86, 48, 132;
  --bs-link-hover-color: #2f1749;
  --bs-link-hover-color-rgb: 47, 23, 73;
  --bs-body-color: #1f1a26;
  --bs-body-bg: #f5f3f8;
  --bs-secondary-color: #645c6e;
  --bs-border-color: #e4dfeb;
  --bs-border-radius: .5rem;
  --bs-border-radius-lg: .75rem;
  --bs-focus-ring-color: rgba(122, 77, 154, .3);
  --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

body { background: var(--ds-fondo); color: var(--ds-texto); -webkit-text-size-adjust: 100%; }
h1, h2, h3, h4, .h1, .h2, .h3, .h4, .h5, .h6 { color: var(--ds-texto); letter-spacing: -.01em; }
.text-primary { color: var(--ds-morado) !important; }
.letra-ancha { letter-spacing: .06em; }
.req { color: #b42318; margin-left: 2px; }
[hidden] { display: none !important; }

.btn { --bs-btn-font-weight: 600; display: inline-flex; align-items: center; justify-content: center; gap: .25rem; }
.btn-primary {
  --bs-btn-bg: var(--ds-morado); --bs-btn-border-color: var(--ds-morado);
  --bs-btn-hover-bg: var(--ds-morado-700); --bs-btn-hover-border-color: var(--ds-morado-700);
  --bs-btn-active-bg: var(--ds-morado-900); --bs-btn-active-border-color: var(--ds-morado-900);
  --bs-btn-disabled-bg: var(--ds-morado); --bs-btn-disabled-border-color: var(--ds-morado);
  --bs-btn-focus-shadow-rgb: 122, 77, 154;
}
.btn-outline-primary {
  --bs-btn-color: var(--ds-morado); --bs-btn-border-color: var(--ds-borde-fuerte);
  --bs-btn-hover-color: var(--ds-morado); --bs-btn-hover-bg: var(--ds-lila-50); --bs-btn-hover-border-color: var(--ds-lila);
  --bs-btn-active-color: #fff; --bs-btn-active-bg: var(--ds-morado); --bs-btn-active-border-color: var(--ds-morado);
  --bs-btn-focus-shadow-rgb: 122, 77, 154;
  background: #fff;
}
.btn-outline-secondary { --bs-btn-color: var(--ds-tenue); --bs-btn-border-color: var(--ds-borde-fuerte); --bs-btn-hover-bg: #eeeaf2; --bs-btn-hover-color: var(--ds-texto); --bs-btn-hover-border-color: var(--ds-borde-fuerte); background: #fff; }
.btn-outline-danger { background: #fff; }
.btn-link { --bs-btn-color: var(--ds-morado-600); --bs-btn-hover-color: var(--ds-morado-900); text-decoration: none; }
.form-control, .form-select { min-height: 44px; border-color: var(--ds-borde-fuerte); font-size: 1rem; }
.form-control:focus, .form-select:focus { border-color: var(--ds-lila); box-shadow: 0 0 0 .2rem rgba(122, 77, 154, .2); }
.form-control[aria-invalid="true"], .form-select[aria-invalid="true"] { border-color: #b42318; background-color: #fffafa; }
.form-control[readonly] { background-color: var(--ds-lila-50); }
.form-label { font-weight: 600; font-size: .875rem; margin-bottom: .35rem; }
.form-check-input:checked { background-color: var(--ds-morado); border-color: var(--ds-morado); }
.form-check-input:focus { border-color: var(--ds-lila); box-shadow: 0 0 0 .2rem rgba(122, 77, 154, .2); }
.input-group-text { background: var(--ds-lila-50); border-color: var(--ds-borde-fuerte); color: var(--ds-tenue); }
.card { --bs-card-border-color: var(--ds-borde); --bs-card-border-radius: var(--ds-radio-lg); --bs-card-inner-border-radius: calc(var(--ds-radio-lg) - 1px); box-shadow: var(--ds-sombra); }
.card-footer { background: var(--ds-lila-50); }
.alert { border-radius: var(--ds-radio); }
.dropdown-menu { --bs-dropdown-link-active-bg: var(--ds-morado); --bs-dropdown-border-color: var(--ds-borde); border-radius: var(--ds-radio); min-width: 15rem; }
.breadcrumb { --bs-breadcrumb-divider-color: var(--ds-borde-fuerte); --bs-breadcrumb-item-active-color: var(--ds-tenue); font-size: .85rem; }
.breadcrumb a { color: var(--ds-tenue); text-decoration: none; }
.breadcrumb a:hover { color: var(--ds-morado); text-decoration: underline; }

.icon { width: 1.25rem; height: 1.25rem; flex: none; vertical-align: -.2em; }
.icon--sm { width: 1rem; height: 1rem; }

.skip { position: absolute; left: 1rem; top: .5rem; z-index: 100; background: #fff; padding: .5rem 1rem; border-radius: .5rem; }

/* 02. Topbar y áreas (panel) ---------------------------------------------------------------- */
.topbar { position: sticky; top: 0; z-index: 1030; background: var(--ds-morado); background-image: linear-gradient(120deg, var(--ds-morado-900) 0%, var(--ds-morado) 55%, var(--ds-morado-600) 100%); color: #fff; box-shadow: 0 2px 10px rgba(47, 23, 73, .3); }
.topbar__inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 4rem; padding: .5rem 1.25rem; max-width: var(--ds-max); margin: 0 auto; }
.topbar__brand { display: flex; align-items: center; gap: .85rem; color: #fff; text-decoration: none; min-width: 0; }
.topbar__brand:hover { color: #fff; }
.topbar__logo { height: 1.6rem; width: auto; }
.topbar__app { font-weight: 700; font-size: .8rem; letter-spacing: .1em; text-transform: uppercase; padding-left: .85rem; border-left: 1px solid rgba(255, 255, 255, .35); color: rgba(255, 255, 255, .9); white-space: nowrap; }
.usermenu { display: flex; align-items: center; gap: .65rem; background: transparent; border: 0; color: #fff; padding: .35rem .5rem; border-radius: .6rem; }
.usermenu:hover, .usermenu[aria-expanded="true"] { background: rgba(255, 255, 255, .12); }
.usermenu__who { display: flex; flex-direction: column; text-align: right; line-height: 1.2; min-width: 0; }
.usermenu__nombre { font-weight: 700; font-size: .875rem; max-width: 12rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.usermenu__rol { font-size: .75rem; color: rgba(255, 255, 255, .75); }
.usermenu__avatar { width: 2.25rem; height: 2.25rem; border-radius: 50%; background: rgba(255, 255, 255, .16); display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: .85rem; flex: none; }

.areas { max-width: var(--ds-max); margin: 0 auto; padding: 0 1.25rem .75rem; }
.areas__lista { display: flex; gap: .25rem; margin: 0; padding: 0; list-style: none; overflow-x: auto; scrollbar-width: none; }
.areas__lista::-webkit-scrollbar { display: none; }
.areas__link { display: inline-flex; align-items: center; gap: .5rem; min-height: 2.5rem; padding: .45rem 1rem; border-radius: 999px; font-size: .875rem; font-weight: 700; color: rgba(255, 255, 255, .8); text-decoration: none; white-space: nowrap; transition: background-color .15s, color .15s; }
.areas__link:hover { color: #fff; background: rgba(255, 255, 255, .12); }
.areas__link[aria-current] { background: #fff; color: var(--ds-morado); }
.areas__toggle { display: flex; align-items: center; gap: .5rem; width: 100%; min-height: 2.6rem; padding: .45rem 1rem; border: 1px solid rgba(255, 255, 255, .35); border-radius: .6rem; background: transparent; color: #fff; font-weight: 700; font-size: .875rem; }
.areas__toggle-actual { margin-left: auto; font-weight: 400; color: rgba(255, 255, 255, .8); }

.areabar { background: #fff; border-bottom: 1px solid var(--ds-borde-fuerte); box-shadow: var(--ds-sombra); }
.areabar__inner { display: flex; align-items: stretch; gap: 1rem; max-width: var(--ds-max); margin: 0 auto; padding: 0 1.25rem; overflow-x: auto; scrollbar-width: none; }
.areabar__inner::-webkit-scrollbar { display: none; }
.areabar__nombre { display: inline-flex; align-items: center; gap: .5rem; flex: none; font-size: .875rem; font-weight: 700; color: var(--ds-morado); text-decoration: none; white-space: nowrap; }
.areabar__nombre:hover { color: var(--ds-morado-900); }
.areabar__sep { margin-left: .25rem; color: var(--ds-tenue); font-weight: 400; }
.areabar__tabs { display: flex; gap: .25rem; }
.areabar__link { display: inline-flex; align-items: center; min-height: 2.9rem; padding: .5rem .85rem; border-bottom: 3px solid transparent; font-size: .875rem; font-weight: 700; color: var(--ds-tenue); text-decoration: none; white-space: nowrap; }
.areabar__link:hover { color: var(--ds-morado); border-bottom-color: var(--ds-lila-200); }
.areabar__link[aria-current="page"] { color: var(--ds-morado); border-bottom-color: var(--ds-lila); }

.page { max-width: var(--ds-max); margin: 0 auto; padding: 1.5rem 1.25rem 2.5rem; }
.app-footer { text-align: center; color: var(--ds-tenue); font-size: .8rem; padding: 0 1rem 2rem; }

/* 03. Encabezados y migas ------------------------------------------------------------------- */
.migas { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; margin-bottom: .75rem; }
.migas__volver { display: inline-flex; align-items: center; gap: .2rem; font-size: .85rem; font-weight: 700; text-decoration: none; color: var(--ds-morado-600); }
.page-header { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.page-header__eyebrow { display: block; text-transform: uppercase; letter-spacing: .08em; font-size: .72rem; font-weight: 700; color: var(--ds-lila); margin-bottom: .2rem; }
.page-header__title { font-size: 1.75rem; font-weight: 700; margin: 0; }
.page-header__sub { margin: .4rem 0 0; color: var(--ds-tenue); max-width: 60rem; }
.page-header__acciones { display: flex; gap: .5rem; flex-wrap: wrap; }
.page-header__acciones form { margin: 0; }

/* 04. Inicio y portadas --------------------------------------------------------------------- */
.welcome { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; padding: 1.75rem; margin-bottom: 1.5rem; border-radius: var(--ds-radio-lg); background: linear-gradient(120deg, var(--ds-morado-900) 0%, var(--ds-morado) 60%, var(--ds-lila) 100%); color: #fff; box-shadow: var(--ds-sombra); position: relative; overflow: hidden; }
.welcome::after { content: ""; position: absolute; right: -70px; top: -70px; width: 240px; height: 240px; border-radius: 50%; border: 28px dotted rgba(255, 255, 255, .07); pointer-events: none; }
.welcome__title { color: #fff; font-size: 1.75rem; font-weight: 700; margin: 0; }
.welcome__text { color: rgba(255, 255, 255, .82); margin: .35rem 0 0; }
.welcome__eyebrow { display: block; text-transform: uppercase; letter-spacing: .08em; font-size: .72rem; font-weight: 700; color: #d9c7ee; margin-bottom: .35rem; }
.welcome__mark { width: 4.5rem; height: auto; opacity: .95; flex: none; position: relative; z-index: 1; }
.welcome__puntos { list-style: none; padding: 0; margin: 1rem 0 0; display: grid; gap: .5rem; font-size: .93rem; }
.welcome__puntos li { display: flex; gap: .6rem; align-items: flex-start; color: rgba(255, 255, 255, .92); }
.welcome__puntos .icon { color: #d9c7ee; margin-top: .2rem; }
.welcome--form { display: block; }

.module-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.module-grid__item { display: flex; flex-direction: column; }
.module-card { position: relative; display: flex; flex-direction: column; gap: .75rem; padding: 1.5rem; background: #fff; border-radius: var(--ds-radio-lg); box-shadow: var(--ds-sombra); border: 1px solid rgba(72, 39, 111, .06); color: var(--ds-texto); text-decoration: none; flex: 1; transition: box-shadow .15s, transform .15s, border-color .15s; }
.module-card::after { content: ""; position: absolute; left: 1.5rem; right: 1.5rem; bottom: 0; height: 3px; border-radius: 3px 3px 0 0; background: var(--ds-lila); transform: scaleX(0); transform-origin: left; transition: transform .2s ease; }
.module-card:hover { color: var(--ds-texto); box-shadow: var(--ds-sombra-md); transform: translateY(-2px); border-color: var(--ds-lila-200); }
.module-card:hover::after, .module-card:focus-visible::after { transform: scaleX(1); }
.module-card__icon { display: inline-flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: var(--ds-radio); background: var(--ds-lila-100); color: var(--ds-morado); }
.module-card__icon .icon { width: 1.5rem; height: 1.5rem; }
.module-card__title { font-size: 1.15rem; font-weight: 700; margin: 0; }
.module-card__desc { color: var(--ds-tenue); font-size: .9rem; margin: 0; flex: 1; }
.module-card__cta { display: inline-flex; align-items: center; gap: .3rem; font-weight: 700; font-size: .875rem; color: var(--ds-morado-600); }
.module-card:hover .module-card__cta { color: var(--ds-lila); }
.module-card__dato { margin: .5rem .25rem 0; font-size: .82rem; color: var(--ds-tenue); }

/* 05. Componentes de pantalla --------------------------------------------------------------- */
.tarjeta-centro { max-width: 560px; margin: 2rem auto; }
.form-card { max-width: 900px; }
.vacio { text-align: center; padding: 3rem 1.25rem; }
.vacio__icono { display: inline-flex; color: var(--ds-borde-fuerte); margin-bottom: .5rem; }
.vacio__icono .icon { width: 2.6rem; height: 2.6rem; }
.tabla thead th { font-size: .74rem; text-transform: uppercase; letter-spacing: .05em; color: var(--ds-tenue); font-weight: 700; background: var(--ds-lila-50); border-bottom-color: var(--ds-borde); white-space: nowrap; }
.tabla > :not(caption) > * > * { padding: .75rem 1rem; }
.table-sm.tabla > :not(caption) > * > * { padding: .45rem .75rem; }
.tabla__principal { font-weight: 650; text-decoration: none; color: var(--ds-texto); }
.tabla__principal:hover { color: var(--ds-morado); text-decoration: underline; }
.tabla tr.inactivo td { color: var(--ds-tenue); }
.avatar { width: 2rem; height: 2rem; border-radius: 50%; background: var(--ds-lila-100); color: var(--ds-morado); display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: .75rem; flex: none; }
.chip-nuevo { background: #fff1d6; color: #8a5a00; }
.chip-revisado { background: #e8f5ee; color: var(--ds-ok); }
.chip-admin { background: var(--ds-lila-100); color: var(--ds-morado); }

.docs { display: flex; gap: .75rem; flex-wrap: wrap; }
.doc { display: flex; align-items: center; gap: .75rem; padding: .85rem 1.1rem; border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); text-decoration: none; color: var(--ds-texto); background: #fff; box-shadow: var(--ds-sombra); flex: 1 1 240px; transition: border-color .15s, background .15s; }
.doc:hover { border-color: var(--ds-lila); background: var(--ds-lila-50); color: var(--ds-texto); }
.doc .icon { width: 1.75rem; height: 1.75rem; color: var(--ds-morado); }
.doc span { display: flex; flex-direction: column; }
.doc small { color: var(--ds-tenue); font-size: .8rem; }

.detalle { display: flex; flex-direction: column; gap: .85rem; }
.detalle-sec__titulo { color: var(--ds-morado); font-size: .85rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; margin-bottom: .85rem; padding-bottom: .6rem; border-bottom: 1px solid var(--ds-borde); }
.datos { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: .65rem 1.5rem; margin: 0; }
.datos div { min-width: 0; }
.datos dt { font-size: .76rem; color: var(--ds-tenue); font-weight: 600; }
.datos dd { margin: .1rem 0 0; font-weight: 500; overflow-wrap: anywhere; }
.salud-lista { margin: 0; padding-left: 1.25rem; display: grid; gap: .35rem; font-size: .9rem; }
.salud-lista strong { margin-left: .5rem; color: var(--ds-tenue); }
.salud-lista strong.si { color: #8a5a00; }
.salud-lista em { display: block; color: var(--ds-tenue); font-size: .85rem; }
.firma-img { max-height: 110px; border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); padding: .4rem; background: #fff; margin-bottom: .75rem; }
.qr { max-width: 240px; margin: 0 auto; }
.qr svg { width: 100%; height: auto; }

.permisos { display: grid; gap: .85rem; }
.permisos__mod { border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); padding: 1rem 1.1rem; margin: 0; }
.permisos__leyenda { display: flex; flex-direction: column; font-size: 1rem; padding: 0 .35rem; margin: 0; float: none; width: auto; }
.permisos__leyenda span { font-size: .82rem; color: var(--ds-tenue); font-weight: 400; }
.permisos__lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: .6rem; margin-top: .6rem; }
.permiso { display: flex; gap: .65rem; align-items: flex-start; padding: .7rem .8rem; border-radius: .6rem; background: var(--ds-lila-50); border: 1px solid transparent; cursor: pointer; height: 100%; }
.permiso:hover { border-color: var(--ds-lila-200); }
.permiso .form-check-input { margin-top: .2rem; flex: none; }
.permiso span { display: flex; flex-direction: column; }
.permiso small { color: var(--ds-tenue); font-size: .8rem; }
.permisos--admin .permiso { opacity: .6; }
.zona-peligro { border-color: #f0c3bf; }

/* Contratos */
.tipos-contrato { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: .6rem; }
.tipo-contrato { position: relative; display: block; cursor: pointer; margin: 0; }
.tipo-contrato input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.tipo-contrato span { display: flex; flex-direction: column; gap: .15rem; height: 100%; padding: .8rem .9rem; border: 1px solid var(--ds-borde-fuerte); border-radius: var(--ds-radio); background: #fff; transition: all .15s; }
.tipo-contrato small { color: var(--ds-tenue); font-size: .78rem; line-height: 1.3; }
.tipo-contrato:hover span { border-color: var(--ds-lila); }
.tipo-contrato input:checked + span { border-color: var(--ds-morado); background: var(--ds-lila-50); box-shadow: inset 0 0 0 1px var(--ds-morado); }
.tipo-contrato input:focus-visible + span { box-shadow: 0 0 0 .2rem rgba(122, 77, 154, .35); }
.idoneidad { border: 1px dashed var(--ds-lila); border-radius: var(--ds-radio); padding: .9rem 1rem; background: var(--ds-lila-50); }
.datos--una { grid-template-columns: 1fr; }

/* Combustible ---------------------------------------------------------------------------------- */
.kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: .75rem; }
.kpi { background: #fff; border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); box-shadow: var(--ds-sombra); padding: .9rem 1rem; display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.kpi__titulo { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--ds-tenue); }
.kpi__valor { font-size: 1.5rem; font-weight: 700; color: var(--ds-texto); font-variant-numeric: tabular-nums; line-height: 1.2; }
.kpi__sub { font-size: .8rem; color: var(--ds-tenue); }
.pestanas { display: flex; gap: .25rem; overflow-x: auto; border-bottom: 1px solid var(--ds-borde-fuerte); scrollbar-width: thin; }
.pestanas__link { padding: .6rem .9rem; border-bottom: 3px solid transparent; font-weight: 700; font-size: .875rem; color: var(--ds-tenue); text-decoration: none; white-space: nowrap; }
.pestanas__link:hover { color: var(--ds-morado); border-bottom-color: var(--ds-lila-200); }
.pestanas__link[aria-current="page"] { color: var(--ds-morado); border-bottom-color: var(--ds-lila); }
.atajos .btn-link { font-weight: 600; }
.font-monospace-num { font-variant-numeric: tabular-nums; }
.multi { position: relative; }
.multi summary { list-style: none; cursor: pointer; }
.multi summary::-webkit-details-marker { display: none; }
.multi__panel { position: absolute; z-index: 30; top: calc(100% + 4px); left: 0; right: 0; max-height: 18rem; overflow-y: auto; background: #fff; border: 1px solid var(--ds-borde-fuerte); border-radius: var(--ds-radio); box-shadow: var(--ds-sombra-md); padding: .5rem .75rem; }
.multi__panel .form-check { padding-top: .2rem; padding-bottom: .2rem; }
th.ordenable { cursor: pointer; user-select: none; }
th.ordenable[aria-sort="ascending"]::after { content: " \2191"; }
th.ordenable[aria-sort="descending"]::after { content: " \2193"; }
.chip-kml-ok { background: #e8f5ee; color: var(--ds-ok); }
.chip-kml-normal { background: var(--ds-lila-100); color: var(--ds-morado); }
.chip-kml-mal { background: #fff1d6; color: #8a5a00; }
.chip-kml-sin { background: #f1eef5; color: var(--ds-tenue); font-weight: 600; }
.chip-kml-fuera { background: #eeeaf2; color: var(--ds-tenue); }
.monitor-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: .85rem; }
.monitor-card { border-top: 4px solid var(--ds-borde-fuerte); }
.monitor-card--normal { border-top-color: var(--ds-ok); }
.monitor-card--aviso { border-top-color: #c2851a; }
.monitor-card--excedio { border-top-color: #b42318; }
.monitor-card__total { font-size: .95rem; margin: .25rem 0 .5rem; }
.monitor-card__total strong { font-size: 1.4rem; }
.monitor-chip--normal { background: #e8f5ee; color: var(--ds-ok); }
.monitor-chip--aviso { background: #fff1d6; color: #8a5a00; }
.monitor-chip--excedio { background: #fdecea; color: #b42318; }
.monitor-barra--normal { background: var(--ds-ok); }
.monitor-barra--aviso { background: #c2851a; }
.monitor-barra--excedio { background: #b42318; }
.progress { height: .5rem; background: var(--ds-lila-100); }
.pct-0 { width: 0%; }
.pct-5 { width: 5%; }
.pct-10 { width: 10%; }
.pct-15 { width: 15%; }
.pct-20 { width: 20%; }
.pct-25 { width: 25%; }
.pct-30 { width: 30%; }
.pct-35 { width: 35%; }
.pct-40 { width: 40%; }
.pct-45 { width: 45%; }
.pct-50 { width: 50%; }
.pct-55 { width: 55%; }
.pct-60 { width: 60%; }
.pct-65 { width: 65%; }
.pct-70 { width: 70%; }
.pct-75 { width: 75%; }
.pct-80 { width: 80%; }
.pct-85 { width: 85%; }
.pct-90 { width: 90%; }
.pct-95 { width: 95%; }
.pct-100 { width: 100%; }

/* Gráficos SVG del servidor (copiados del módulo de Busport). */
.cb-chart { margin: 0; min-width: 0; }
.cb-chart[data-titulo]::before { content: attr(data-titulo); display: block; font-weight: 700; font-size: .85rem; text-transform: uppercase; letter-spacing: .05em; color: var(--ds-morado); margin-bottom: .6rem; }
.cb-svg { display: block; width: 100%; height: auto; }
.cb-dona { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1rem 2rem; }
.cb-svg.cb-svg--dona { width: 13rem; max-width: 100%; flex: 0 0 auto; }
.cb-leyenda { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem 1rem; margin: .75rem 0 0; padding: 0; list-style: none; font-size: .85rem; }
.cb-leyenda li { display: inline-flex; align-items: center; gap: .3rem; }
.cb-leyenda__marca { width: 10px; height: 10px; }
.cb-leyenda.cb-leyenda--dona { flex: 0 1 16rem; flex-direction: column; flex-wrap: nowrap; align-items: stretch; justify-content: flex-start; gap: .45rem; margin: 0; }
.cb-leyenda--dona li { display: flex; }
.cb-leyenda__nombre { flex: 1 1 auto; overflow-wrap: anywhere; }
.cb-leyenda__valor { padding-left: .75rem; color: var(--ds-tenue); font-variant-numeric: tabular-nums; white-space: nowrap; }
.cb-chart__vacio { margin: 0; padding: 2rem 0; text-align: center; font-size: .875rem; color: var(--ds-tenue); }
.cb-chart__link:hover rect { opacity: .8; }

/* 06. Páginas públicas ---------------------------------------------------------------------- */
.publico { min-height: 100vh; background-color: var(--ds-fondo); background-image: linear-gradient(160deg, var(--ds-morado-900) 0%, var(--ds-morado) 70%, var(--ds-morado-600) 100%); background-repeat: no-repeat; background-size: 100% 200px; }
.pub-cab { display: flex; justify-content: center; padding: 1.5rem 1rem 1rem; }
.pub-cab__marca img { height: 2.4rem; width: auto; }
.pub-main { max-width: 900px; margin: 0 auto; padding: .5rem 1rem 2rem; }
.publico--angosto .pub-main { max-width: 520px; }
.pub-pie { text-align: center; color: var(--ds-tenue); font-size: .82rem; padding: 0 1rem 2rem; }
.login { margin-top: 1rem; }
.exito__icono { display: inline-flex; align-items: center; justify-content: center; width: 3.75rem; height: 3.75rem; border-radius: 50%; background: #e8f5ee; color: var(--ds-ok); margin-bottom: .75rem; }
.exito__icono .icon { width: 1.9rem; height: 1.9rem; }

/* 07. Formulario de registro ---------------------------------------------------------------- */
.trampa { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.registro .card { margin-bottom: 1rem; }
.grilla { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1rem 1.25rem; }
.campo { display: flex; flex-direction: column; gap: .35rem; min-width: 0; margin: 0; padding: 0; border: 0; }
.campo--ancho { grid-column: 1 / -1; }
.campo__label { font-size: .875rem; font-weight: 600; color: var(--ds-texto); padding: 0; float: none; width: auto; margin: 0; }
.campo__ayuda { font-size: .8rem; color: var(--ds-tenue); }
.campo__error { font-size: .82rem; color: #b42318; font-weight: 600; }
.sub { margin: 1.5rem 0 .75rem; font-size: .82rem; color: var(--ds-morado); text-transform: uppercase; letter-spacing: .06em; font-weight: 700; }

.segmentado { display: inline-flex; flex-wrap: wrap; gap: .5rem; }
.segmentado label { position: relative; cursor: pointer; margin: 0; }
.segmentado input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.segmentado span { display: inline-flex; align-items: center; justify-content: center; min-width: 5.25rem; min-height: 2.65rem; padding: .45rem 1rem; border: 1px solid var(--ds-borde-fuerte); border-radius: .5rem; background: #fff; font-weight: 600; transition: all .15s; }
.segmentado label:hover span { border-color: var(--ds-lila); }
.segmentado input:checked + span { background: var(--ds-morado); border-color: var(--ds-morado); color: #fff; }
.segmentado input:focus-visible + span { box-shadow: 0 0 0 .2rem rgba(122, 77, 154, .35); }
.segmentado--chico span { min-width: 4rem; min-height: 2.35rem; padding: .3rem .8rem; }

.check { display: flex; align-items: flex-start; gap: .65rem; cursor: pointer; margin: 0; }
.check input { width: 1.2rem; height: 1.2rem; margin: .15rem 0 0; accent-color: var(--ds-morado); flex: none; }
.check--grande { background: var(--ds-lila-50); border: 1px solid var(--ds-borde); border-radius: .6rem; padding: .9rem; font-weight: 600; }
.check--error { border-color: #b42318; background: #fdecea; }

.progreso { position: sticky; top: 0; z-index: 20; background: rgba(245, 243, 248, .96); backdrop-filter: blur(6px); padding: .65rem 0 .5rem; margin-bottom: .5rem; }
.panel .progreso { top: 7.25rem; } /* debajo de la topbar fija (barra 4rem + fila de áreas) */
.progreso__barra { height: 6px; background: var(--ds-borde); border-radius: 99px; overflow: hidden; }
.progreso__barra span { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--ds-morado), var(--ds-lila)); border-radius: 99px; transition: width .3s; }
.progreso__texto { margin: .4rem 0 0; font-size: .85rem; color: var(--ds-tenue); display: flex; gap: .5rem; }
.progreso__texto strong { color: var(--ds-texto); }

.paso__cab { display: flex; gap: .85rem; align-items: flex-start; margin-bottom: 1.15rem; padding-bottom: .9rem; border-bottom: 1px solid var(--ds-borde); }
.paso__cab h2 { margin: .1rem 0; font-size: 1.2rem; font-weight: 700; }
.paso__cab p { margin: 0; font-size: .9rem; }
.paso__num { flex: none; width: 2.1rem; height: 2.1rem; border-radius: 50%; background: var(--ds-lila-100); color: var(--ds-morado); display: grid; place-items: center; font-weight: 700; }
.paso__nav { display: flex; justify-content: space-between; gap: .75rem; margin-top: 1.5rem; padding-top: 1.1rem; border-top: 1px solid var(--ds-borde); }
.registro.js-pasos .paso:not(.paso--activo) { display: none; }
.registro.js-pasos .registro__enviar-sinjs { display: none; }
.registro__enviar-sinjs { text-align: right; }

.tabla-form { display: flex; flex-direction: column; gap: .75rem; }
.fila-form { border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); padding: .9rem; margin: 0; background: var(--ds-lila-50); }
.fila-form legend { float: none; width: auto; font-weight: 700; color: var(--ds-morado); font-size: .88rem; padding: 0 .35rem; margin: 0; }
.js .fila-form--oculta { display: none; }
.suma { font-weight: 600; margin: .25rem 0 0; font-size: .9rem; }
.suma--ok { color: var(--ds-ok); }
.suma--mal { color: #b42318; }
.desde-dep { border: 1px dashed var(--ds-lila); border-radius: var(--ds-radio); padding: .8rem .9rem; background: var(--ds-lila-50); }
.desde-dep__titulo { font-weight: 700; color: var(--ds-morado); margin: 0 0 .1rem; font-size: .9rem; }
.desde-dep__lista { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .65rem; }
.desde-dep__lista .btn { white-space: normal; text-align: left; }

.preguntas { list-style: none; padding: 0; margin: 0; display: grid; gap: .65rem; }
.pregunta { border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); padding: .75rem .9rem; display: grid; gap: .65rem; grid-template-columns: 1fr auto; align-items: center; background: #fff; }
.pregunta--error { border-color: #b42318; background: #fffafa; }
.pregunta__texto { display: flex; gap: .65rem; align-items: baseline; font-weight: 600; }
.pregunta__num { flex: none; color: var(--ds-lila); font-size: .85rem; min-width: 1.1rem; }
.pregunta__detalle, .pregunta .campo__error { grid-column: 1 / -1; }

.declaracion { background: var(--ds-lila-50); border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); padding: 1rem; margin-bottom: 1.15rem; font-size: .9rem; }
.declaracion h3 { font-size: 1rem; font-weight: 700; }
.declaracion details { margin: .65rem 0 .9rem; }
.declaracion summary { cursor: pointer; font-weight: 600; color: var(--ds-morado); }
.declaracion ol { padding-left: 1.25rem; font-size: .84rem; color: var(--ds-tenue); }

.firma__inst { font-weight: 600; margin-bottom: .5rem; }
.firma__lienzo { position: relative; border: 2px dashed var(--ds-lila); border-radius: var(--ds-radio-lg); background: #fff; touch-action: none; }
.firma__lienzo canvas { display: block; width: 100%; height: 200px; cursor: crosshair; touch-action: none; }
.firma__linea { position: absolute; left: 8%; right: 8%; bottom: 46px; border-bottom: 1px solid var(--ds-borde-fuerte); pointer-events: none; }
.firma__acciones { margin-top: .5rem; display: flex; justify-content: flex-end; }
.firma__actual { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin-bottom: .75rem; padding: .65rem; border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); background: #fff; }
.firma__actual img { height: 60px; }

/* 08. Celular ------------------------------------------------------------------------------- */
@media (max-width: 767.98px) {
  .topbar__inner { padding: .5rem 1rem; }
  .topbar__app, .usermenu__who { display: none; }
  .areas { padding: 0 1rem .75rem; }
  .areas__lista { flex-direction: column; margin-top: .5rem; overflow: visible; }
  .areas__link { width: 100%; border-radius: .6rem; }
  .page { padding: 1.1rem 1rem 2rem; }
  .page-header__title { font-size: 1.4rem; }
  .page-header__acciones, .page-header__acciones form, .page-header__acciones .btn { width: 100%; }
  .welcome { padding: 1.25rem; }
  .welcome__title { font-size: 1.4rem; }
  .welcome__mark { width: 3rem; }
  .grilla { grid-template-columns: 1fr; }
  .fila-form .grilla { grid-template-columns: 1fr 1fr; }
  .fila-form .grilla .campo:first-child { grid-column: 1 / -1; }
  .pregunta { grid-template-columns: 1fr; }
  .paso__nav .btn { flex: 1; }
  /* En celular la topbar deja de ser fija: ocuparía casi 8rem de pantalla y taparía el progreso. */
  .topbar { position: relative; }
  .panel .progreso { top: 0; }
  .publico { background-size: 100% 150px; }
}

/* 09. Pulido: foco, toques, movimiento ------------------------------------------------------- */
/* Foco visible y consistente con teclado (Bootstrap solo lo da a controles de formulario y botones). */
a:focus-visible, button:focus-visible, summary:focus-visible, .usermenu:focus-visible {
  outline: 3px solid var(--ds-lila); outline-offset: 2px; border-radius: .35rem;
}
/* Sobre fondo morado el anillo lila no se vería: se usa blanco. */
.topbar a:focus-visible, .topbar button:focus-visible { outline-color: #fff; }
.areabar__link:focus-visible { outline-offset: -3px; }
.module-card:focus-visible, .doc:focus-visible { outline-offset: 3px; border-radius: var(--ds-radio-lg); }
.skip:focus { box-shadow: var(--ds-sombra-md); color: var(--ds-morado); font-weight: 700; }
.usermenu, .areas__toggle { transition: background-color .15s; }
.areas__toggle:hover { background: rgba(255, 255, 255, .12); }
.areas__toggle[aria-expanded="true"] { background: rgba(255, 255, 255, .16); }

/* Filas de tabla y tarjetas con la tinta de marca en lugar del gris por defecto. */
.table-hover { --bs-table-hover-bg: var(--ds-lila-50); }
.tabla tbody tr:last-child > * { border-bottom-width: 0; }
.publico .card, .publico .welcome { box-shadow: var(--ds-sombra-md); }
.publico .welcome { border: 1px solid rgba(255, 255, 255, .18); }
.btn-primary:disabled, .btn-primary.disabled { opacity: .55; }
.text-danger { --bs-danger-rgb: 180, 35, 24; } /* #b42318: 6,5:1 sobre blanco, igual que los errores del formulario */

@media (max-width: 767.98px) {
  /* Zonas táctiles de 44 px mínimo (WCAG 2.5.8 / guías móviles) en acciones de tabla, enlaces-botón y navegación. */
  .btn-sm { min-height: 2.5rem; padding-left: .85rem; padding-right: .85rem; }
  .btn-link.btn-sm { min-height: 2.75rem; }
  .paso__nav .btn { min-height: 3rem; }
  .areas__link { min-height: 2.75rem; }
  .areabar__link { min-height: 3rem; }
  .doc { flex-basis: 100%; }
  .tabla > :not(caption) > * > * { padding: .7rem .75rem; }
  .card-body.p-4 { padding: 1.25rem !important; }
  /* Fila de tabla "Ver": que el botón no se parta en dos líneas. */
  .tabla .btn { white-space: nowrap; }
  .segmentado span { min-height: 2.9rem; }
  .check input { width: 1.35rem; height: 1.35rem; }
}

/* Respeta a quien pide menos movimiento (y alivia a celulares de gama baja). */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; scroll-behavior: auto !important; }
  .module-card:hover { transform: none; }
}

/* 20. Archivos (sistema de gestión) ------------------------------------------------------- */
.min-w-0 { min-width: 0; }
.ar-titulo { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--ds-tenue); margin: 0 0 .6rem; }
.ar-buscar { margin-bottom: 1rem; }
.ar-buscar .form-control { min-height: 2.75rem; }
.ar-buscar--compacta { margin: 0; flex: 1 1 18rem; max-width: 28rem; }
.ar-nueva { background: #fff; border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); box-shadow: var(--ds-sombra); padding: 1rem; margin-bottom: 1rem; max-width: 36rem; }

.ar-carpetas { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .75rem; }
.ar-carpeta { position: relative; display: flex; align-items: center; gap: .75rem; padding: .85rem 1rem; background: #fff; border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); box-shadow: var(--ds-sombra); color: var(--ds-texto); text-decoration: none; min-width: 0; transition: border-color .15s, box-shadow .15s, transform .15s; }
.ar-carpeta:focus-visible, .ar-previa__img:focus-visible { outline: 3px solid var(--ds-lila); outline-offset: 2px; }
.ar-carpeta:hover, .ar-carpeta:focus-visible { border-color: var(--ds-lila-200); box-shadow: var(--ds-sombra-md); color: var(--ds-texto); transform: translateY(-1px); }
.ar-carpeta__icono { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; border-radius: .6rem; background: var(--ds-lila-100); color: var(--ds-morado); }
.ar-carpeta__txt { display: flex; flex-direction: column; min-width: 0; }
.ar-carpeta__nombre { font-weight: 700; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow-wrap: anywhere; }
.ar-carpeta__sub { font-size: .78rem; color: var(--ds-tenue); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ar-carpeta__candado { margin-left: auto; color: var(--ds-lila); flex: none; }

.ar-nombre { display: flex; align-items: center; gap: .65rem; min-width: 0; }
.ar-nombre__link { overflow-wrap: anywhere; }
.ar-tipo { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 2.4rem; height: 2.4rem; border-radius: .45rem; font-size: .7rem; font-weight: 800; letter-spacing: .03em; color: #fff; background: var(--ds-tenue); }
.ar-tipo--pdf { background: #b42318; }
.ar-tipo--img { background: #7a4d9a; }
.ar-tipo--doc { background: #1d5bbf; }
.ar-tipo--xls { background: #1f7a4d; }
.ar-tipo--ppt { background: #b34a12; }
.ar-tipo--txt { background: #645c6e; }
.ar-tabla td { padding-top: .6rem; padding-bottom: .6rem; }

.ar-zona { display: grid; gap: .75rem; }
.ar-zona__caja { position: relative; display: flex; align-items: center; gap: 1rem; padding: 1.1rem 1.25rem; border: 2px dashed var(--ds-borde-fuerte); border-radius: var(--ds-radio); background: var(--ds-lila-50); cursor: pointer; transition: border-color .15s, background .15s; }
.ar-zona__caja:hover, .ar-zona__caja.is-arrastre { border-color: var(--ds-morado); background: var(--ds-lila-100); }
.ar-zona__caja.is-elegido { border-style: solid; border-color: var(--ds-lila); }
.ar-zona__caja:has(.ar-zona__input:focus-visible) { outline: 3px solid var(--ds-lila); outline-offset: 2px; }
.ar-zona__icono { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; border-radius: 50%; background: #fff; color: var(--ds-morado); box-shadow: var(--ds-sombra); }
.ar-zona__txt { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.ar-zona__txt strong { overflow-wrap: anywhere; }
.ar-zona__txt small { color: var(--ds-tenue); }
.ar-zona__input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.ar-zona__acciones { display: flex; flex-wrap: wrap; gap: .5rem; }
.ar-zona__acciones .btn { min-height: 2.75rem; }
.ar-progreso { padding: .75rem 1rem; border-radius: var(--ds-radio); background: var(--ds-lila-50); border: 1px solid var(--ds-borde); font-size: .9rem; }
.ar-progreso p { font-weight: 600; }
.ar-progreso--ok { background: #e8f5ee; border-color: #bfe3cf; }
.ar-progreso--aviso { background: #fff7e6; border-color: #f6d98a; }
.ar-progreso--error { background: #fdecea; border-color: #f5c2bd; }
.ar-progreso .progress { height: .5rem; }
.ar-progreso .progress-bar { background: var(--ds-morado); transition: width .2s; }
.ar-progreso__lista { margin: .35rem 0 0; padding-left: 1.1rem; }

.ar-ficha { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 1rem; align-items: start; }
.ar-previa { overflow: hidden; }
.ar-previa__pdf { display: none; width: 100%; height: 75vh; min-height: 480px; border: 0; background: #525659; }
.ar-previa__pie { padding: .5rem .85rem; border-top: 1px solid var(--ds-borde); background: #fff; }
.ar-previa__img { display: flex; align-items: center; justify-content: center; padding: 1rem; background: repeating-conic-gradient(#f1edf6 0% 25%, #fff 0% 50%) 50% / 20px 20px; min-height: 320px; }
.ar-previa__img img { max-width: 100%; max-height: 75vh; height: auto; box-shadow: var(--ds-sombra-md); }
.ar-previa__movil { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 2rem 1.25rem; }
.ar-previa__movil .ar-tipo { width: 3.5rem; height: 3.5rem; font-size: .85rem; margin-bottom: .85rem; }
.ar-acceso-label { display: flex; justify-content: center; align-items: center; min-height: 2.75rem; margin: 0; cursor: pointer; }
.ar-acceso td, .ar-acceso th { min-width: 5.5rem; }
.ar-acceso .ar-acceso-nombre { min-width: 11rem; position: sticky; left: 0; background: #fff; z-index: 1; }
.ar-previa__sin { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 3.5rem 1.5rem; }
.ar-previa__sin .ar-tipo { width: 3.5rem; height: 3.5rem; font-size: .85rem; margin-bottom: .85rem; }
.ar-panel { padding: .85rem; border: 1px solid var(--ds-borde); border-radius: .6rem; background: var(--ds-lila-50); }
.ar-sub { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--ds-tenue); margin: 1rem 0 .4rem; }
.ar-resumen { padding: .75rem 1rem; border-left: 3px solid var(--ds-lila); background: var(--ds-lila-50); border-radius: 0 .5rem .5rem 0; }
.ar-texto summary { cursor: pointer; font-weight: 600; color: var(--bs-link-color); }
.ar-texto__pre { margin: .75rem 0 0; max-height: 28rem; overflow: auto; padding: .85rem 1rem; background: var(--ds-lila-50); border: 1px solid var(--ds-borde); border-radius: .5rem; font-size: .8rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.ar-bitacora { max-height: 26rem; overflow: auto; }
.ar-detalle { max-width: 28rem; overflow-wrap: anywhere; }
.ar-apagado { opacity: .45; }

.ar-resultados { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.ar-fragmento { margin: .6rem 0 0; font-size: .875rem; color: var(--ds-tenue); overflow-wrap: anywhere; }
.ar-fragmento mark { background: #fff1b8; color: var(--ds-texto); padding: 0 .1em; border-radius: .2em; }

/* Editor de OnlyOffice: ocupa todo el alto disponible bajo la barra del ecosistema. */
.panel--editor .page { max-width: none; padding: 0; }
.panel--editor .app-footer { display: none; }
.ar-editor-barra { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; padding: .5rem 1rem; background: #fff; border-bottom: 1px solid var(--ds-borde); }
.ar-editor-barra .migas { margin: 0; }
.ar-editor { position: relative; height: calc(100vh - 11rem); min-height: 480px; background: #fff; }
.ar-editor #ar-oo, .ar-editor iframe { width: 100%; height: 100%; border: 0; }
@media (min-width: 768px) {
  .ar-previa__pdf { display: block; }
}
@media (max-width: 991.98px) {
  .ar-ficha { grid-template-columns: 1fr; }
  .ar-previa__pdf { height: 60vh; min-height: 360px; }
  .ar-previa__img img { max-height: 50vh; }
}
@media (max-width: 767.98px) {
  .ar-tabla .btn-sm, .ar-panel .btn-sm, .card-header .btn-sm, .card-footer .btn-sm, .list-group-item .btn-sm { min-height: 2.75rem; min-width: 2.75rem; }
  .dropdown-item { min-height: 2.75rem; display: flex; align-items: center; }
  .ar-texto summary { display: flex; align-items: center; min-height: 2.75rem; }
  .ar-acceso-radio { width: 1.5rem; height: 1.5rem; }
  .ar-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ar-kpis .kpi__sub { display: none; }
}
@media (max-width: 575.98px) {
  .ar-zona__acciones .btn { flex: 1 1 100%; }
  .ar-zona__acciones [data-ar-escanear] { order: -1; }
  .ar-zona__caja { padding: .9rem; }
  .ar-buscar--compacta { flex-basis: 100%; max-width: none; }
}

/* 21. Reportes de campo --------------------------------------------------------------------- */
.rc-tipo { display: inline-block; font-size: .68rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; padding: .1rem .45rem; border-radius: .35rem; margin-bottom: .15rem; }
.rc-tipo--danio { background: #fdecea; color: #a02a1d; }
.rc-tipo--arpo { background: var(--ds-lila-100); color: var(--ds-morado); }
.rc-sub { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--ds-tenue); margin: 1rem 0 .35rem; } /* igual que .ar-sub */
.rc-indice { position: sticky; top: 0; z-index: 6; display: flex; gap: .4rem; overflow-x: auto; padding: .45rem 0; margin-bottom: .5rem; background: var(--ds-fondo); scrollbar-width: none; }
.rc-indice a { flex: none; display: inline-flex; align-items: center; min-height: 2.75rem; padding: 0 .95rem; border: 1px solid var(--ds-borde-fuerte); border-radius: 999px; background: #fff; font-weight: 600; text-decoration: none; }
.rc-indice a:focus-visible { outline: 3px solid var(--ds-lila); outline-offset: 2px; }
.rc-form [id] { scroll-margin-top: 4.25rem; }
.rc-form .form-control, .rc-form .form-select { border-color: #8a7d99; }
.rc-cuenta { margin-left: .4rem; font-size: .78rem; font-weight: 600; color: var(--ds-tenue); }
.rc-op--si.btn { --bs-btn-active-bg: var(--ds-morado); --bs-btn-active-border-color: var(--ds-morado); }
.btn-check:checked + .rc-op--no.btn { background: #645c6e; border-color: #645c6e; color: #fff; }
.btn-check:checked + .rc-op--na.btn { background: #8a7d99; border-color: #8a7d99; color: #fff; }
.rc-opciones .btn-check:focus-visible + .btn { outline: 3px solid var(--ds-lila); outline-offset: 2px; box-shadow: none; }
.rc-check:has(input:focus-visible), .rc-subir__btn:has(input:focus-visible) { outline: 3px solid var(--ds-lila); outline-offset: 2px; }
.rc-pregunta:has(input:checked:not([value=""])) { border-left: 4px solid var(--ds-lila); }
.rc-equipo:has(input:checked:not([value=""])) { background: var(--ds-lila-50); }
.rc-texto { white-space: pre-line; overflow-wrap: anywhere; }
.rc-lista { padding-left: 1.1rem; }
.rc-lista li + li { margin-top: .2rem; }
.rc-form .card-body { padding: 1.1rem 1.15rem; }
.rc-opciones { display: flex; flex-wrap: wrap; gap: .35rem; }
.rc-opciones .btn { min-height: 2.75rem; min-width: 3.25rem; font-weight: 600; }
.rc-opciones--compacta .btn { min-height: 2.5rem; min-width: 3rem; padding: .3rem .7rem; }
.rc-vehiculo, .rc-fila { border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); padding: .6rem .8rem .8rem; margin: 0 0 .6rem; }
.rc-vehiculo legend, .rc-fila legend { float: none; width: auto; font-size: .8rem; font-weight: 700; color: var(--ds-morado); padding: 0 .3rem; margin: 0; }
.rc-fila--simple { padding-bottom: .5rem; }
.rc-checks { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .35rem .9rem; }
.rc-check { display: flex; align-items: center; gap: .5rem; min-height: 2.5rem; padding: .2rem .5rem; border-radius: .45rem; cursor: pointer; }
.rc-check:hover { background: var(--ds-lila-50); }
.rc-check .form-check-input { width: 1.3rem; height: 1.3rem; margin: 0; flex: none; }
.rc-preguntas { display: grid; gap: .5rem; }
.rc-pregunta { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; padding: .55rem .7rem; border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); background: #fff; }
.rc-pregunta__texto { margin: 0; flex: 1 1 18rem; font-size: .92rem; }
.rc-pregunta__opciones { border: 0; padding: 0; margin: 0; }
.rc-apr { border: 1px solid var(--ds-borde); border-radius: var(--ds-radio); padding: .4rem .85rem; margin-bottom: .6rem; background: var(--ds-lila-50); }
.rc-apr[open] { background: #fff; padding-bottom: .9rem; }
.rc-apr > summary { cursor: pointer; font-weight: 700; color: var(--ds-morado); min-height: 2.75rem; display: flex; align-items: center; gap: .3rem; list-style: none; }
.rc-apr > summary::-webkit-details-marker { display: none; }
.rc-apr > summary::after { content: ""; margin-left: auto; width: .6rem; height: .6rem; border: solid var(--ds-morado); border-width: 0 2px 2px 0; transform: rotate(45deg); transition: transform .15s; flex: none; }
.rc-apr[open] > summary::after { transform: rotate(-135deg); }
.rc-apr[open] > summary { position: sticky; top: 3.4rem; z-index: 4; background: #fff; border-bottom: 1px solid var(--ds-borde); }
.rc-apr > summary:focus-visible { outline: 3px solid var(--ds-lila); outline-offset: 2px; }
.rc-equipos { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: .4rem .9rem; padding-top: .4rem; }
.rc-equipo { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; padding: .3rem 0; border-bottom: 1px dashed var(--ds-borde); }
.rc-equipo__nombre { font-size: .9rem; flex: 1 1 11rem; }
.rc-equipo__opciones { border: 0; padding: 0; margin: 0; }
.rc-equipo .rc-opciones .btn { min-width: 2.6rem; padding: .25rem .5rem; font-size: .82rem; }
.rc-firma { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; }
.rc-firma__vista { display: flex; align-items: center; justify-content: center; width: 12rem; height: 3.6rem; border: 2px dashed #8a7d99; border-radius: var(--ds-radio); background: #fff; }
.rc-firma__vista img { max-width: 100%; max-height: 100%; }
.rc-firma__botones { display: flex; gap: .4rem; }
.rc-firma__botones .btn { min-height: 2.5rem; }
.rc-lienzo canvas { width: 100%; height: min(60vh, 320px); touch-action: none; }
.rc-modal-cuerpo { overscroll-behavior: contain; }
#rc-modal-firma .modal-footer .btn { min-height: 2.75rem; }
.rc-barra { position: sticky; bottom: 0; z-index: 5; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; padding: .75rem 0 calc(.75rem + env(safe-area-inset-bottom)); margin-top: 1rem; background: linear-gradient(to top, var(--ds-fondo) 75%, rgba(245, 243, 248, 0)); }
.rc-barra .btn { min-height: 2.75rem; }
.rc-fotos { list-style: none; margin: 0 0 1rem; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: .75rem; }
.rc-foto { display: flex; flex-direction: column; gap: .4rem; }
.rc-foto__botones { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.rc-foto img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--ds-radio); border: 1px solid var(--ds-borde); background: var(--ds-lila-50); }
.rc-foto__form { display: grid; gap: .35rem; }
.rc-subir { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; }
.rc-subir__btn { min-height: 2.75rem; cursor: pointer; }
@media (max-width: 767.98px) {
  .rc-opciones--compacta .btn, .rc-equipo .rc-opciones .btn, .rc-firma__botones .btn, .rc-foto__form .btn { min-height: 2.75rem; }
  .rc-check { min-height: 2.75rem; }
  .rc-equipo .rc-opciones .btn { min-width: 2.9rem; }
}
@media (max-width: 575.98px) {
  .rc-barra .btn { flex: 1 1 calc(50% - .25rem); padding-inline: .5rem; }
  .rc-barra__estado { flex: 1 1 100%; }
  .rc-form .card-body { padding: .85rem; }
  .rc-vehiculo, .rc-fila { padding: .5rem .55rem .65rem; }
  .rc-apr { padding: .3rem .6rem; }
  .rc-firma__vista { width: 100%; }
  .rc-equipos { grid-template-columns: 1fr; }
}

@media print {
  .rc-indice, .rc-barra, .topbar, .areabar, .progreso, .paso__nav, .page-header__acciones, .app-footer { display: none; }
}
