/* ============================================================================
   partesapp-ui.css — capa de tema sobre Bootstrap 5.1.3
   Carga SIEMPRE después de bootstrap.min.css y después de style.css.
   No modifica bootstrap: solo redefine variables y sobrescribe componentes.
   Modo oscuro con [data-theme="dark"] en <html>. (Bootstrap 5.1.3 no tiene
   data-bs-theme; eso llegó en 5.3. Si actualizáis a 5.3, renombrad el
   selector a [data-bs-theme="dark"] y borrad el toggle manual.)
   ========================================================================= */

/* ---- 1. Tokens ---------------------------------------------------------- */

:root {
  --pa-blue:        #0D6EFD;
  --pa-blue-ink:    #0B5ED7;
  --pa-blue-soft:   #F2F6FD;
  --pa-blue-line:   #D5E2FA;

  --pa-ink:         #10192B;
  --pa-ink-2:       #3C4658;
  --pa-muted:       #5A6474;
  --pa-label:       #8A93A3;
  --pa-faint:       #A6AEBC;

  --pa-bg:          #F4F6F9;
  --pa-surface:     #FFFFFF;
  --pa-line:        #E3E8F0;
  --pa-line-soft:   #EEF1F6;
  --pa-line-faint:  #F3F6FA;

  --pa-warn:        #B45309;
  --pa-warn-bg:     #FFFBF0;
  --pa-warn-line:   #F2E3BE;
  --pa-warn-ink:    #6B4708;
  --pa-danger:      #B91C1C;
  --pa-danger-bg:   #FDF2F2;
  --pa-danger-line: #F5D2D2;
  --pa-danger-ink:  #7A1A1A;

  --pa-r-control:   4px;
  --pa-r-card:      6px;

  --pa-sans: 'Archivo', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --pa-mono: 'IBM Plex Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;

  /* Bootstrap hereda de aquí */
  --bs-primary: #0D6EFD;
  --bs-body-color: var(--pa-ink);
  --bs-body-bg: var(--pa-bg);
  --bs-border-color: var(--pa-line);
  --bs-font-sans-serif: var(--pa-sans);
  --bs-body-font-family: var(--pa-sans);
}

[data-theme="dark"] {
  --pa-blue:        #0D6EFD;
  --pa-blue-ink:    #7FB2FF;
  --pa-blue-soft:   #142744;
  --pa-blue-line:   #21426E;

  --pa-ink:         #F1F4F9;
  --pa-ink-2:       #E8ECF3;
  --pa-muted:       #94A0B4;
  --pa-label:       #6B7688;
  --pa-faint:       #5A6678;

  --pa-bg:          #0A0F1A;
  --pa-surface:     #111927;
  --pa-line:        #1F2937;
  --pa-line-soft:   #1A2331;
  --pa-line-faint:  #182030;

  --pa-warn-bg:     #241C08;
  --pa-warn-line:   #4A3A12;
  --pa-warn-ink:    #F0C77A;
  --pa-danger-bg:   #2A1113;
  --pa-danger-line: #55211F;
  --pa-danger-ink:  #F5A9A5;

  --bs-body-color: var(--pa-ink);
  --bs-body-bg: var(--pa-bg);
  --bs-border-color: var(--pa-line);

  color-scheme: dark;
}

/* ---- 2. Base ------------------------------------------------------------ */

html, body { background: var(--pa-bg); color: var(--pa-ink); }
body { font-family: var(--pa-sans); font-size: 14px; line-height: 1.5; }

h1, h2, h3, h4, h5 { font-family: var(--pa-sans); letter-spacing: -.02em; font-weight: 700; }
h1 { font-size: 30px; } h2 { font-size: 26px; } h3 { font-size: 20px; }

a { color: var(--pa-blue-ink); text-decoration: none; }
a:hover { color: var(--pa-ink); text-decoration: underline; }

/* Todo número, hora, matrícula, nº de documento e importe. */
.pa-num, .pa-mono, .table td.pa-num {
  font-family: var(--pa-mono);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
/* La matrícula (manage_trucks/manage_trailers/vehicle_maintenance_alerts)
   también lleva .pa-num por la tipografía monoespaciada, pero al ser la
   primera columna (identificador de la fila, no un dato final como fecha
   o importe) va alineada a la izquierda -- igual que en el diseño
   original. El resto de columnas .pa-num sí son datos finales de fila. */
td.pa-num:not(:first-child), th.pa-num:not(:first-child) { text-align: right; }

/* Etiqueta en versal pequeña — el recurso tipográfico que une app y PDF. */
.pa-label {
  font-family: var(--pa-mono);
  font-size: 9px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--pa-label);
  font-weight: 400;
  display: block;
}
.pa-section-label, h2.pa-section-label {
  font-family: var(--pa-mono); font-size: 9px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--pa-label); margin: 0 0 9px; font-weight: 400;
}

/* ---- 3. Superficies: filete, no sombra ---------------------------------- */

.card, .pa-card {
  background: var(--pa-surface);
  border: 1px solid var(--pa-line);
  border-radius: var(--pa-r-card);
  box-shadow: none;
}
.card-header {
  background: transparent;
  border-bottom: 1px solid var(--pa-line-soft);
  font-weight: 600;
  padding: 11px 16px;
}
.card-body { padding: 16px; }

/* Bootstrap pinta .list-group-item en blanco fijo (no usa las variables
   --bs-*) -- las listas dentro de .pa-card (top conductores/camiones del
   dashboard, etc.) se quedaban claras encima de un fondo oscuro. */
.list-group-item {
  background: var(--pa-surface);
  border-color: var(--pa-line);
  color: var(--pa-ink);
}

/* Mismo problema que .list-group-item: Bootstrap deja .modal-content en
   blanco fijo, pero el texto suelto (h5, p sin .text-muted) sí hereda el
   color de body -- en oscuro quedaba casi blanco sobre fondo blanco. Los
   modales de confirmación (suscripción, cerrar parte, previsualización de
   imagen) se quedan siempre claros a propósito, no siguen el tema. */
.modal-content {
  background: var(--pa-surface);
  color: var(--pa-ink);
  border: 1px solid var(--pa-line);
  border-radius: var(--pa-r-card);
}
.modal-header, .modal-footer { border-color: var(--pa-line-soft); }
[data-theme="dark"] .modal .btn-close { filter: invert(1) grayscale(100%) brightness(200%); }

/* Mismo problema otra vez: .accordion (FAQ de suscripción) y .dropdown-menu
   (Cuenta, Datos maestros... en el navbar superior) también son fondos
   fijos en blanco de Bootstrap. Aquí el texto no queda invisible (el
   propio Bootstrap le pone color fijo a .accordion-button/.dropdown-item),
   pero el bloque entero desentona como una isla clara en una página
   oscura -- ver también el chevron del acordeón, con el mismo problema
   del icono del botón de cerrar. */
.accordion-item { background: var(--pa-surface); border-color: var(--pa-line); }
.accordion-button {
  background: var(--pa-surface); color: var(--pa-ink);
}
.accordion-button:not(.collapsed) {
  background: var(--pa-blue-soft); color: var(--pa-blue-ink);
  box-shadow: inset 0 -1px 0 var(--pa-line);
}
.accordion-button:focus { box-shadow: inset 0 -1px 0 var(--pa-line); }
[data-theme="dark"] .accordion-button::after { filter: invert(1) grayscale(100%) brightness(200%); }

.dropdown-menu {
  background: var(--pa-surface); border-color: var(--pa-line);
}
.dropdown-item { color: var(--pa-ink-2); }
.dropdown-item:hover, .dropdown-item:focus {
  background: var(--pa-line-faint); color: var(--pa-ink);
}
.dropdown-divider { border-color: var(--pa-line-soft); }

/* Select2 (camión, cliente, dirección...) abre su desplegable en un bloque
   propio fuera del <select>, con fondo blanco fijo -- mismo problema que
   .dropdown-menu/.modal-content de arriba, pasado por alto hasta ahora.
   select2.min.css se carga DESPUÉS de este fichero (ver base.html), así que
   sin !important sus reglas (misma especificidad, más tarde) ganan siempre. */
.select2-dropdown {
  background: var(--pa-surface) !important; border-color: var(--pa-line) !important; color: var(--pa-ink) !important;
}
.select2-search--dropdown .select2-search__field {
  background: var(--pa-surface) !important; border-color: var(--pa-line) !important; color: var(--pa-ink) !important;
}
.select2-results__option { color: var(--pa-ink-2) !important; }
.select2-results__message { color: var(--pa-muted) !important; }
.select2-results__option--highlighted[aria-selected] {
  background: var(--pa-blue) !important; color: #fff !important;
}
.select2-results__option[aria-selected="true"] {
  background: var(--pa-line-faint) !important; color: var(--pa-ink) !important;
}

.shadow, .shadow-sm, .shadow-lg { box-shadow: none !important; }

/* ---- 4. Cabecera -------------------------------------------------------- */

/* La cabecera deja de ser un bloque azul y pasa a ser superficie con
   filete azul de 2px, igual que la cabecera de los PDF. */
header.bg-primary {
  background: var(--pa-surface) !important;
  color: var(--pa-ink) !important;
  border-bottom: 2px solid var(--pa-blue);
  padding: 0 !important;
  margin-bottom: 0 !important;
}
header.bg-primary .navbar { min-height: 56px; padding: 0 8px; margin-top: 0 !important; }
header.bg-primary .nav-link { color: var(--pa-ink-2) !important; font-weight: 500; font-size: 13.5px; }
header.bg-primary .nav-link:hover,
header.bg-primary .nav-link.active { color: var(--pa-blue-ink) !important; }

/* El lockup vuelve a su versión en color sobre cabecera clara:
   quitad variant="invert" del include en base.html. */
.pa-logo__text { color: var(--pa-ink); }

/* Superadmin: cabecera en tinta para diferenciar el ámbito de un vistazo. */
body.pa-superadmin header.bg-primary { background: #10192B !important; }
body.pa-superadmin header.bg-primary .nav-link { color: #C3CEE0 !important; }
body.pa-superadmin .pa-logo__text,
body.pa-superadmin .pa-logo__text b { color: #fff; }
.pa-scope-tag {
  font-family: var(--pa-mono); font-size: 9px; letter-spacing: .14em;
  text-transform: uppercase; color: #8FA3C4;
  border: 1px solid #2C3A54; border-radius: 3px; padding: 2px 7px;
}

/* Identidad del transportista en la cabecera (nombre + avatar), delante
   del desplegable de Cuenta -- no forma parte de las capas de header.bg-primary
   descritas en el README, pero está en la captura 1b y solo aplica a
   transportistas autenticados en escritorio (ver base.html). */
.pa-header-company {
  font-family: var(--pa-mono); font-size: 11px; letter-spacing: .06em;
  text-transform: uppercase; color: var(--pa-muted);
  padding-right: 12px; border-right: 1px solid var(--pa-line);
}
.pa-header-avatar {
  width: 30px; height: 30px; border-radius: 50%;
  border: 1px solid var(--pa-blue-line); background: var(--pa-blue-soft);
  color: var(--pa-blue-ink); font-family: var(--pa-mono); font-weight: 600; font-size: 12px;
  display: inline-flex; align-items: center; justify-content: center;
}

/* ---- 5. Navegación lateral (transportista) ------------------------------ */

/* Sustituye la fila horizontal de 7 elementos + dropdowns. A partir de xl
   es columna fija; por debajo se colapsa en el menú de Bootstrap. */
.pa-shell { display: flex; min-height: calc(100vh - 56px); align-items: stretch; }
.pa-side {
  width: 228px; flex: 0 0 228px;
  background: var(--pa-surface);
  border-right: 1px solid var(--pa-line);
  padding: 18px 0;
  display: flex; flex-direction: column;
}

/* Bloque de suscripción al pie del sidebar -- no forma parte de la
   navegación, se empuja al fondo con margin-top:auto (.pa-side ya es
   flex-column) en vez de vivir en una fila más de enlaces. */
.pa-side-sub {
  margin: auto 20px 4px;
  padding: 12px 14px;
  border: 1px solid var(--pa-line);
  border-radius: var(--pa-r-card);
  background: var(--pa-surface);
}
.pa-side-sub .pa-label { padding: 0 0 4px; }
.pa-side-sub__status { font-weight: 700; font-size: 14px; color: var(--pa-ink); }
.pa-side-sub__detail { font-size: 11.5px; color: var(--pa-muted); margin-top: 2px; }
.pa-side .pa-label { padding: 0 20px 8px; }
.pa-side a {
  display: flex; align-items: center; justify-content: space-between;
  padding: 9px 20px 9px 22px;
  font-size: 14px; font-weight: 500; color: var(--pa-ink-2);
  border-left: 2px solid transparent; text-decoration: none;
}
.pa-side a:hover { background: var(--pa-line-faint); color: var(--pa-ink); }
.pa-side a.active {
  background: var(--pa-blue-soft);
  border-left-color: var(--pa-blue);
  color: var(--pa-blue-ink); font-weight: 600;
}
.pa-side .pa-side-count { font-family: var(--pa-mono); font-size: 10px; color: var(--pa-faint); }
/* Aviso (no simple contador): mismo pill rojo que .pa-mmenu__badge del panel
   móvil, para que "Mantenimiento e ITV" se vea igual de urgente en los dos
   menús -- ver _pa_mobile_menu.html. */
.pa-side .pa-side-badge {
  font-family: var(--pa-mono); font-size: 10px; font-weight: 600; color: #fff;
  background: var(--pa-danger); border-radius: 999px; min-width: 18px; height: 18px;
  display: inline-flex; align-items: center; justify-content: center; padding: 0 5px;
}
.pa-side hr { border-color: var(--pa-line-soft); margin: 14px 20px; opacity: 1; }
.pa-side-secondary a { font-size: 13.5px; font-weight: 400; color: var(--pa-muted); }
.pa-main { flex: 1 1 auto; min-width: 0; padding: 26px 32px 40px; }

@media (max-width: 1199.98px) {
  .pa-shell { display: block; }
  .pa-side { display: none; }
  .pa-main { padding: 18px 16px 24px; }
}

/* ---- 6. Tarjeta de indicador ------------------------------------------- */

.pa-kpi {
  background: var(--pa-surface); border: 1px solid var(--pa-line);
  border-radius: var(--pa-r-card); padding: 15px 16px;
}
/* Tarjeta con apartado propio (ver apps/carrier/views.py::widget_values,
   clave 'url') -- el resto de KPI (sin url) se queda como antes, sin
   ningún tratamiento de enlace. */
a.pa-kpi { display: block; text-decoration: none; color: inherit; transition: border-color .15s; }
a.pa-kpi:hover { border-color: var(--pa-blue); }
/* En modo "Personalizar" se arrastra/reordena/quita -- un click en el
   cuerpo de la tarjeta no debe navegar fuera del dashboard mientras tanto. */
.pa-kpi-grid--editing a.pa-kpi { pointer-events: none; }
.pa-kpi__value {
  font-size: 27px; font-weight: 700; letter-spacing: -.02em;
  line-height: 1.1; margin-top: 7px; color: var(--pa-ink);
}
.pa-kpi__unit { font-size: 13px; color: var(--pa-label); font-weight: 500; margin-left: 5px; }
.pa-kpi__note { font-size: 11.5px; color: var(--pa-muted); margin-top: 3px; }
.pa-kpi-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.pa-kpi-grid--5 { grid-template-columns: repeat(5, 1fr); }
@media (max-width: 991.98px) { .pa-kpi-grid--5 { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 767.98px) { .pa-kpi-grid, .pa-kpi-grid--5 { grid-template-columns: 1fr 1fr; gap: 10px; } }

/* Dashboard personalizable (home_transportista.html) -- el número de
   tarjetas de "Estado actual" ya no es fijo (4 de serie, hasta 8 si el
   transportista añade las nuevas). --auto solo se aplica por JS cuando el
   recuento se sale de 4, para no cambiar ni un píxel el caso de siempre. */
.pa-kpi-grid--auto { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
/* [hidden] pierde contra cualquier regla propia que fije `display` (grid,
   flex...) con el mismo origen -- gana la de autor aunque no sea la última
   ni tenga más especificidad. Sin este !important, #dash-widget-pool/
   #dash-widget-actions se verían siempre, hidden o no. */
#dash-widget-pool[hidden], #dash-widget-actions[hidden] { display: none !important; }

.pa-kpi-wrap { position: relative; }
.pa-kpi-toolbar { display: none; align-items: center; justify-content: flex-end; gap: 4px; margin-bottom: 4px; }
.pa-kpi-grid--editing .pa-kpi-toolbar { display: flex; }
.pa-kpi-toolbar button {
  width: 22px; height: 22px; border-radius: 6px; border: 1px solid var(--pa-line);
  background: var(--pa-surface); color: var(--pa-muted); font-size: 12px; line-height: 1;
  cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0;
}
.pa-kpi-toolbar button:hover { background: var(--pa-line-soft); color: var(--pa-ink); }
.pa-kpi-toolbar .pa-kpi-remove:hover { color: var(--pa-danger); border-color: var(--pa-danger); }

.pa-kpi--add {
  background: transparent; border: 1px dashed var(--pa-line); border-radius: var(--pa-r-card);
  padding: 15px 16px; text-align: left; cursor: pointer; color: var(--pa-muted); width: 100%;
}
.pa-kpi--add:hover { border-color: var(--pa-blue); color: var(--pa-blue); background: var(--pa-line-soft); }
.pa-kpi--add .pa-kpi__value { opacity: .55; }
.pa-kpi--add .pa-label { color: inherit; }

/* ---- 7. Tabla de métricas ---------------------------------------------- */

/* Los nueve indicadores del periodo dejan de ser nueve tarjetas iguales:
   se leen mejor como tabla, y comparar cifras es el caso de uso real. */
.pa-metrics { width: 100%; border-collapse: collapse; font-size: 13px; }
.pa-metrics th {
  font-family: var(--pa-mono); font-size: 8.5px; letter-spacing: .11em;
  text-transform: uppercase; color: var(--pa-faint); font-weight: 500;
  padding: 10px 0 7px; border-bottom: 1px solid var(--pa-ink); text-align: left;
}
.pa-metrics td { padding: 10px 0; border-bottom: 1px solid var(--pa-line-soft); }
.pa-metrics td:first-child { font-weight: 500; }
.pa-metrics .pa-num { font-size: 14px; font-weight: 500; text-align: right; }
.pa-metrics .pa-detail { font-size: 12px; color: var(--pa-muted); text-align: right; }
@media (max-width: 767.98px) { .pa-metrics .pa-detail, .pa-metrics th:last-child { display: none; } }

/* Tablas de datos generales */
.table { --bs-table-bg: transparent; font-size: 13px; color: var(--pa-ink); }
.table > :not(caption) > * > * { padding: 9px 10px; border-bottom-color: var(--pa-line-soft); }
.table > thead th {
  font-family: var(--pa-mono); font-size: 8.5px; letter-spacing: .11em;
  text-transform: uppercase; color: var(--pa-faint); font-weight: 500;
  border-bottom: 1px solid var(--pa-ink);
}
.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-accent-bg: var(--pa-line-faint); color: var(--pa-ink); }

/* ---- 8. Píldoras de estado (nunca emoji) -------------------------------- */

.pa-pill {
  display: inline-block;
  font-family: var(--pa-mono); font-size: 9.5px; letter-spacing: .08em;
  text-transform: uppercase; white-space: nowrap;
  border: 1px solid var(--pa-line); color: var(--pa-muted);
  border-radius: 3px; padding: 3px 8px; background: transparent;
}
.pa-pill--on { border-color: var(--pa-blue); background: var(--pa-blue-soft); color: var(--pa-blue-ink); }
.pa-pill--warn { border-color: var(--pa-warn-line); background: var(--pa-warn-bg); color: var(--pa-warn); }
.pa-pill--danger { border-color: var(--pa-danger-line); background: var(--pa-danger-bg); color: var(--pa-danger); }
.badge { font-family: var(--pa-mono); font-weight: 600; letter-spacing: .04em; border-radius: 3px; }

/* Píldora-botón de los interruptores de plataforma (pre-lanzamiento,
   mantenimiento) -- mismo aspecto que .pa-pill pero como <button>, con un
   estado deshabilitado propio para "forzado por entorno". */
button.pa-pill { cursor: pointer; }
button.pa-pill:disabled { cursor: not-allowed; opacity: .7; }
.pa-platform-row {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 14px 0; border-bottom: 1px solid var(--pa-line-soft);
}
.pa-platform-row:last-child { border-bottom: none; }
.pa-platform-row__desc { font-size: 12.5px; color: var(--pa-muted); margin-top: 2px; }

/* ---- 9. Avisos ---------------------------------------------------------- */

.pa-alert {
  border: 1px solid var(--pa-line); border-left: 2px solid var(--pa-muted);
  border-radius: var(--pa-r-control); padding: 11px 14px;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  font-size: 13px; background: var(--pa-surface);
}
.pa-alert--warn { background: var(--pa-warn-bg); border-color: var(--pa-warn-line); border-left-color: var(--pa-warn); color: var(--pa-warn-ink); }
.pa-alert--danger { background: var(--pa-danger-bg); border-color: var(--pa-danger-line); border-left-color: var(--pa-danger); color: var(--pa-danger-ink); }
.pa-alert strong, .pa-alert .pa-num { font-family: var(--pa-mono); font-weight: 600; }
.pa-alert-row { display: flex; gap: 12px; margin-bottom: 24px; }
.pa-alert-row > * { flex: 1; }
@media (max-width: 767.98px) { .pa-alert-row { flex-direction: column; } }
.alert { border-radius: var(--pa-r-control); border-width: 1px; }

/* ---- 10. Controles ------------------------------------------------------ */

.form-control, .form-select {
  border-radius: var(--pa-r-control);
  border: 1px solid var(--pa-line);
  background: var(--pa-surface);
  color: var(--pa-ink);
  height: 42px; font-size: 14px; padding: 0 12px;
}
/* select2.min.css se carga después de este fichero (ver base.html) y su
   .select2-selection--single tiene la misma especificidad -- sin
   !important, el fondo blanco de Select2 gana siempre. */
.select2-container--default .select2-selection--single {
  border-radius: var(--pa-r-control) !important;
  border: 1px solid var(--pa-line) !important;
  background: var(--pa-surface) !important;
  color: var(--pa-ink) !important;
  height: 42px !important; font-size: 14px !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--pa-ink) !important; }
.select2-container--default .select2-selection--single .select2-selection__arrow b { border-color: var(--pa-ink-2) transparent transparent transparent !important; }
.form-control:focus, .form-select:focus {
  border-color: var(--pa-blue);
  box-shadow: 0 0 0 3px rgba(13,110,253,.14);
}
/* :disabled/:read-only tienen más especificidad que .form-control a secas --
   sin esto gana el gris claro fijo de Bootstrap (apenas se lee en oscuro,
   p.ej. el nombre de usuario -- siempre disabled -- en editar_conductor, o
   el CIF -- siempre readonly -- en el perfil del transportista). */
.form-control:disabled, .form-select:disabled,
.form-control:read-only {
  background: var(--pa-line-soft);
  color: var(--pa-muted);
  border-color: var(--pa-line);
}
.form-label, label {
  font-family: var(--pa-mono); font-size: 9px; letter-spacing: .12em;
  text-transform: uppercase; color: var(--pa-label); margin-bottom: 6px;
}

.btn { border-radius: var(--pa-r-control); font-size: 14px; font-weight: 600; padding: 0 18px; height: 40px;
       display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.btn-primary { background: var(--pa-blue); border-color: var(--pa-blue); }
.btn-primary:hover { background: var(--pa-blue-ink); border-color: var(--pa-blue-ink); }
.btn-outline-primary { color: var(--pa-blue-ink); border-color: var(--pa-blue); }
.btn-lg { height: 44px; font-size: 15px; }
.btn-sm { height: 32px; font-size: 12.5px; padding: 0 13px; }
@media (max-width: 767.98px) { .btn { height: 44px; } }

/* Filtros de periodo en móvil */
.pa-chip {
  height: 32px; padding: 0 13px; border-radius: 16px;
  border: 1px solid var(--pa-line); background: var(--pa-surface);
  color: var(--pa-muted); font-size: 12.5px; font-weight: 500;
  display: inline-flex; align-items: center;
}
.pa-chip--on { background: var(--pa-blue); border-color: var(--pa-blue); color: #fff; font-weight: 600; }

/* ---- 11. Login ---------------------------------------------------------- */

.pa-auth { min-height: calc(100vh - 108px); display: flex; align-items: center; justify-content: center; padding: 24px 16px; }
.pa-auth__card { width: 420px; max-width: 100%; background: var(--pa-surface);
  border: 1px solid var(--pa-line); border-radius: var(--pa-r-card); padding: 34px 34px 30px; }
.pa-auth__rule { width: 34px; height: 3px; background: var(--pa-blue); border-radius: 2px; margin-bottom: 18px; }
.pa-auth__sub { font-size: 13.5px; color: var(--pa-muted); margin: 0 0 26px; }

/* ---- 12. Pie ------------------------------------------------------------ */

footer, .pa-footer {
  border-top: 1px solid var(--pa-line); background: transparent;
  font-size: 11.5px; color: var(--pa-label);
  padding: 16px 0; text-align: center;
}
footer a { color: var(--pa-label); }

/* ---- 13. Gráficas ------------------------------------------------------- */

.pa-bars { display: flex; align-items: flex-end; gap: 5px; height: 118px; }
.pa-bars > div { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; height: 100%; }
.pa-bar { width: 100%; border-radius: 2px 2px 0 0; background: #C3D8F8; }
.pa-bar--hi { background: var(--pa-blue); }
[data-theme="dark"] .pa-bar { background: #21426E; }
[data-theme="dark"] .pa-bar--hi { background: var(--pa-blue); }

.pa-track { flex: 1; height: 8px; background: var(--pa-line-faint); border-radius: 2px; overflow: hidden; }
.pa-track > div { height: 100%; background: var(--pa-blue); border-radius: 2px; }
