:root {
  --color-primary: #0f6e5c;
  --color-primary-dark: #0b5445;
  --color-primary-light: #e2f3ef;
  --color-dark: #111827;
  --color-text: #374151;
  --color-muted: #6b7280;
  --color-bg: #ffffff;
  --color-bg-alt: #f5f6f8;
  --color-border: #e5e7eb;
  --color-success: #157347;
  --color-error: #c8102e;
  --font-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --radius: 10px;
  --container-width: 1080px;
}

* { box-sizing: border-box; }

/* El atributo hidden (usado por JS para esconder secciones como los datos
   de embarcación en el formulario de activo) pierde por defecto contra
   cualquier regla propia que ponga display en el mismo elemento (p. ej.
   .form-grid con display:grid) — las reglas del sitio siempre ganan a las
   del navegador aunque la especificidad sea igual. Con esta regla explícita,
   hidden vuelve a ocultar de verdad pase lo que pase. */
[hidden] { display: none !important; }

body {
  margin: 0;
  font-family: var(--font-base);
  color: var(--color-text);
  background: var(--color-bg-alt);
  line-height: 1.55;
}

h1, h2, h3 { color: var(--color-dark); margin: 0 0 0.5em; }
h1 { font-size: 1.7rem; }
h2 { font-size: 1.25rem; }
p { margin: 0 0 1em; }
a { color: var(--color-primary); text-decoration: none; }
a:hover, a:focus { text-decoration: underline; }

.container { max-width: var(--container-width); margin: 0 auto; padding: 0 20px; }

/* Para páginas con tablas de muchas columnas (p. ej. Personal, con nombre,
   email, puesto, departamento, especialidad, teléfono, usuario y estado):
   el ancho normal del container las deja cortadas con scroll horizontal.
   Se activa pasando anchoCompleto:true al incluir partials/header. */
.container-ancho { max-width: 1400px; }

.btn {
  display: inline-block;
  padding: 0.6em 1.2em;
  border-radius: var(--radius);
  font-weight: 600;
  border: 2px solid transparent;
  cursor: pointer;
  font-size: 0.95rem;
}
.btn:hover, .btn:focus { text-decoration: none; }
.btn-primary { background: var(--color-primary); color: #fff; }
.btn-primary:hover, .btn-primary:focus { background: var(--color-primary-dark); color: #fff; }
.btn-secondary { background: transparent; color: var(--color-dark); border-color: var(--color-border); }
.btn-secondary:hover, .btn-secondary:focus { border-color: var(--color-primary); color: var(--color-primary); }
.btn-sm { padding: 0.4em 0.9em; font-size: 0.85rem; }

.app-header { background: var(--color-dark); color: #fff; }
.app-header-inner { display: flex; align-items: center; justify-content: space-between; min-height: 60px; flex-wrap: wrap; gap: 8px; }
.app-header .logo { color: #fff; font-weight: 700; display: flex; flex-direction: column; line-height: 1.2; text-decoration: none; }
.app-header .logo-empresa { font-size: 1.02rem; }
.app-header .logo-programa { font-size: .78rem; font-weight: 400; color: #cbd2dc; }
.app-nav { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.app-nav a, .app-nav span { color: #cbd2dc; font-weight: 500; font-size: 0.92rem; }
.app-nav a:hover, .app-nav a:focus { color: #fff; }
.app-main { padding: 32px 0 64px; }

/* Botón cuadrado del menú móvil, oculto en escritorio */
.nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, 0.25);
  border-radius: 8px;
  background: transparent;
  cursor: pointer;
  flex-shrink: 0;
}
.nav-toggle span { display: block; width: 20px; height: 2px; background: #fff; border-radius: 1px; }

.nav-dropdown { position: relative; }
.nav-dropdown > summary { list-style: none; cursor: pointer; }
.nav-dropdown > summary::-webkit-details-marker { display: none; }
.nav-dropdown > summary::after { content: " ▾"; font-size: 0.75em; }
.nav-dropdown[open] > summary { color: #fff; }
.nav-dropdown-menu { position: absolute; top: calc(100% + 10px); left: 0; background: #1f2531; border: 1px solid #3a4250; border-radius: var(--radius); padding: 6px; display: flex; flex-direction: column; min-width: 160px; z-index: 10; }
.nav-dropdown-menu a { padding: 6px 10px; border-radius: 6px; white-space: nowrap; }
.nav-dropdown-menu a:hover, .nav-dropdown-menu a:focus { background: #2a3140; text-decoration: none; }
/* Submenú dentro de un desplegable (Almacenes > Almacenes > Almacén central):
   en escritorio se abre a la izquierda (Almacenes está al final de la barra y
   a la derecha se saldría de pantalla); en móvil, debajo y sangrado. */
.nav-submenu { position: relative; }
.nav-submenu > summary { list-style: none; cursor: pointer; padding: 6px 10px; border-radius: 6px; white-space: nowrap; }
.nav-submenu > summary::-webkit-details-marker { display: none; }
.nav-submenu > summary::after { content: " ◂"; font-size: 0.75em; }
.nav-submenu[open] > summary::after { content: " ▾"; }
.nav-submenu > summary:hover, .nav-submenu[open] > summary { background: #2a3140; }
.nav-submenu-menu { position: absolute; top: 0; right: calc(100% + 8px); background: #1f2531; border: 1px solid #3a4250; border-radius: var(--radius); padding: 6px; display: flex; flex-direction: column; min-width: 160px; z-index: 11; }
.nav-submenu-menu a { padding: 6px 10px; border-radius: 6px; white-space: nowrap; }
.nav-submenu-menu a:hover, .nav-submenu-menu a:focus { background: #2a3140; text-decoration: none; }

.selector-empresa { display: flex; align-items: center; gap: 6px; color: #cbd2dc; font-size: 0.92rem; }
.selector-empresa select { padding: 0.2em 0.5em; border-radius: 6px; border: 1px solid #3a4250; background: #1f2531; color: #fff; font: inherit; }

.link-button { background: none; border: none; padding: 0; color: inherit; font: inherit; cursor: pointer; text-decoration: underline; }
.link-button.danger { color: var(--color-error); }
.logout-form { display: inline; }

.auth-panel { max-width: 440px; margin: 60px auto; background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 32px; }
.auth-form .form-group { margin-bottom: 16px; }
.auth-secondary { margin-top: 16px; font-size: 0.9rem; color: var(--color-muted); }

.page-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; margin-bottom: 20px; }

.table-wrap { overflow-x: auto; background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); margin-bottom: 24px; }
.data-table { width: 100%; border-collapse: collapse; min-width: 560px; }
.data-table th, .data-table td { text-align: left; padding: 10px 14px; border-bottom: 1px solid var(--color-border); font-size: 0.9rem; }
.data-table th { background: var(--color-bg-alt); font-weight: 600; color: var(--color-dark); }
.table-actions { display: flex; gap: 10px; white-space: nowrap; }

.badge { display: inline-block; padding: 0.2em 0.7em; border-radius: 999px; font-size: 0.78rem; font-weight: 600; }
.badge-vehiculo { background: var(--color-primary-light); color: var(--color-primary-dark); }
.badge-embarcacion { background: #e4ecf7; color: #1d4ed8; }
.badge-otro_activo { background: #fdf1d6; color: #92600a; }
.badge-aprobada { background: var(--color-primary-light); color: var(--color-success); }
.badge-pendiente { background: #fdf1d6; color: #92600a; }
.badge-rechazada { background: #fbe1e4; color: var(--color-error); }

.badge-operativo { background: var(--color-primary-light); color: var(--color-success); }
.badge-mantenimiento { background: #fdf1d6; color: #92600a; }
.badge-fuera_servicio { background: #fbe1e4; color: var(--color-error); }
.badge-baja { background: #e5e7eb; color: var(--color-muted); }

.admin-form { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 20px; margin-bottom: 24px; }
.form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; }
.form-group-wide { grid-column: 1 / -1; }
.form-group { margin-bottom: 14px; }
.form-group label { display: block; font-weight: 600; margin-bottom: 5px; color: var(--color-dark); font-size: 0.9rem; }
.form-group input, .form-group select, .form-group textarea {
  width: 100%; padding: 0.55em 0.75em; border: 1px solid var(--color-border); border-radius: 8px; font: inherit; background: #fff;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus { outline: 2px solid var(--color-primary); outline-offset: 1px; }
.field-hint { display: block; font-size: 0.82rem; color: var(--color-muted); margin-top: 4px; }

.form-status { margin-top: 12px; font-weight: 600; }
.form-status.error { color: var(--color-error); }
.form-status.success { color: var(--color-success); }

.ficha-vehiculo { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 20px; margin-bottom: 24px; }
.ficha-vehiculo dl { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin: 0; }
.ficha-vehiculo dt { font-size: 0.78rem; color: var(--color-muted); text-transform: uppercase; letter-spacing: 0.02em; }
.ficha-vehiculo dd { margin: 2px 0 0; font-weight: 600; color: var(--color-dark); }

.empty-state { padding: 24px; text-align: center; color: var(--color-muted); }

.dashboard-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 16px; margin: 20px 0; }
.dashboard-card { display: block; background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 18px; text-align: center; }
.dashboard-card h3 { font-size: 1.9rem; color: var(--color-primary); margin-bottom: 0.2em; }
.dashboard-card p { color: var(--color-muted); margin: 0; font-size: 0.88rem; }

.aviso-pendientes { border-color: #92600a; background: #fdf8ee; }

.manuales-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; margin: 20px 0; }
.manual-card { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 16px; }
.manual-card video { width: 100%; border-radius: calc(var(--radius) - 4px); background: #000; margin-bottom: 12px; }
.manual-card h3 { margin: 0 0 6px; font-size: 1.05rem; }
.manual-card p { margin: 0 0 6px; color: var(--color-dark); font-size: 0.92rem; }

.proximamente { background: #f5f6f8; border: 1px dashed var(--color-border); border-radius: var(--radius); padding: 20px; margin-bottom: 24px; }
.proximamente h3 { margin: 0 0 8px; font-size: 1rem; }
.proximamente ul { margin: 0; padding-left: 20px; color: var(--color-muted); font-size: 0.9rem; }

.hero { padding: 56px 0; }
.hero-inner { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 48px; align-items: center; }
.hero-text h1 { font-size: 2.2rem; line-height: 1.15; margin-bottom: 0.4em; }
.hero-subtitle { color: var(--color-muted); font-size: 1.05rem; max-width: 46ch; }
.hero-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 20px; }
.hero-image img {
  width: 100%;
  height: auto;
  border-radius: var(--radius);
  box-shadow: 0 12px 32px rgba(17, 24, 39, 0.12);
}

.features { padding: 8px 0 64px; }
.features h2 { text-align: center; margin-bottom: 28px; }
.features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; }
/* Cuadros de próximas revisiones (Panel y Técnico): cada aviso en una fila que cabe en el cuadro. */
.cuadro-revisiones { min-width: 0; }
.lista-revisiones { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--color-border); }
.lista-revisiones li { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 2px; border-bottom: 1px solid var(--color-border); }
.lr-texto { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.lr-texto strong { color: var(--color-dark); font-size: 0.92rem; }
.lr-texto span { color: var(--color-muted); font-size: 0.85rem; }
.lista-revisiones .badge { white-space: nowrap; flex-shrink: 0; }
.feature-card { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 22px; }
.feature-card h3 { font-size: 1.05rem; margin-bottom: 0.4em; color: var(--color-primary-dark); }
.feature-card p { margin: 0; color: var(--color-muted); font-size: 0.92rem; }

.grid-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }

@media (max-width: 860px) {
  .hero-inner { grid-template-columns: 1fr; }
  .hero-image { order: -1; }
  .grid-2col { grid-template-columns: 1fr; }
}

@media (max-width: 720px) {
  .app-header-inner { padding: 10px 0; }

  /* El botón de hamburguesa y el colapsado solo existen en las páginas con
     sesión iniciada (partials/header.ejs, nav con id="appNav" y su botón
     #navToggle) — la portada pública (views/portada.ejs) tiene su propio
     <nav class="app-nav"> con un único botón "Iniciar sesión" y NINGÚN
     botón de hamburguesa, así que no puede colapsarse o se queda inaccesible
     (ver aviso del cliente: el botón "desaparecía" en móvil). Por eso estas
     reglas van por #appNav, no por la clase .app-nav en general. */
  .nav-toggle { display: flex; }

  #appNav {
    display: none;
    position: absolute;
    top: 60px;
    left: 0;
    right: 0;
    flex-direction: column;
    flex-wrap: nowrap; /* .app-nav envuelve (wrap): en columna partía el menú en dos */
    align-items: stretch;
    gap: 0;
    background: var(--color-dark);
    border-top: 1px solid rgba(255, 255, 255, 0.12);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.25);
    max-height: calc(100vh - 60px);
    overflow-y: auto;
    z-index: 50;
  }
  #appNav.is-open { display: flex; }
  #appNav > a, #appNav > span, #appNav > .logout-form, #appNav > .selector-empresa {
    padding: 14px 20px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  }
  #appNav .link-button { display: block; width: 100%; text-align: left; }
  #appNav .nav-dropdown { border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
  #appNav .nav-dropdown > summary { padding: 14px 20px; }
  #appNav .nav-dropdown-menu { position: static; border: none; background: #171c26; border-radius: 0; }
  #appNav .nav-submenu-menu { position: static; border: none; background: transparent; border-radius: 0; padding: 0 0 0 16px; }
}

/* "Almacén asignado" (views/almacenes/formulario.ejs): campos dentro de la
   tabla con el mismo aspecto que el resto del formulario; en móvil cada
   artículo se apila como una tarjeta con su etiqueta en cada campo. */
.tabla-articulos input, .tabla-articulos select {
  width: 100%; min-width: 0; box-sizing: border-box; padding: 0.45em 0.6em; border: 1px solid var(--color-border); border-radius: 8px; font: inherit; background: #fff;
}
/* --- Gráficos (utils/graficos.js + views/partials/grafico.ejs) --- */
.graficos-grid { display: grid; align-items: start; grid-template-columns: repeat(auto-fill, minmax(min(100%, 460px), 1fr)); gap: 16px; margin: 16px 0 24px; }
.grafico-card { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 16px 18px; min-width: 0; }
.grafico-titulo { margin: 0; font-size: 1.05rem; }
.grafico-subtitulo { margin: 2px 0 10px; color: var(--color-muted); font-size: 0.88rem; }
.grafico-leyenda { list-style: none; display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 0 0 8px; padding: 0; font-size: 0.85rem; color: var(--color-text); }
.grafico-leyenda li { display: inline-flex; align-items: center; gap: 6px; }
.grafico-muestra { width: 10px; height: 10px; border-radius: 2px; display: inline-block; }
.grafico-svg { width: 100%; height: auto; display: block; font-variant-numeric: tabular-nums; }
.grafico-svg .grafico-zona { cursor: default; }
.grafico-svg a .grafico-zona { cursor: pointer; }
.grafico-svg .grafico-zona:hover { fill: rgba(17, 24, 39, 0.04); }
.grafico-total { margin: 6px 0 0; font-size: 0.88rem; color: var(--color-text); }
.grafico-vacio { color: var(--color-muted); margin: 12px 0; }
.grafico-datos { margin-top: 8px; font-size: 0.88rem; }
.grafico-datos summary { cursor: pointer; color: var(--color-primary); }
.grafico-datos .data-table { font-size: 0.85rem; font-variant-numeric: tabular-nums; }
.graficos-filtros { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; }
.graficos-filtros .form-group { margin: 0; }
.graficos-seccion { margin-top: 8px; }

.tabla-articulos input:focus, .tabla-articulos select:focus { outline: 2px solid var(--color-primary); outline-offset: 1px; }
.tabla-articulos td[data-label^="Artículo"] { min-width: 340px; }
.tabla-articulos td[data-label^="Categoría"] select { max-width: 230px; }
.tabla-articulos input[type="number"] { max-width: 110px; }

@media (max-width: 720px) {
  .tabla-articulos { min-width: 0; }
  .tabla-articulos thead { display: none; }
  .tabla-articulos, .tabla-articulos tbody, .tabla-articulos tr, .tabla-articulos td { display: block; width: 100%; box-sizing: border-box; }
  .tabla-articulos tr { padding: 10px 12px; border-bottom: 1px solid var(--color-border); }
  .tabla-articulos td, .tabla-articulos td[data-label^="Artículo"] { border: none; padding: 4px 0; min-width: 0; }
  .tabla-articulos td[data-label]::before { content: attr(data-label); display: block; font-size: 0.8rem; font-weight: 600; color: var(--color-muted); margin-bottom: 2px; }
  .tabla-articulos input[type="number"], .tabla-articulos td[data-label^="Categoría"] select { max-width: none; }
  .tabla-articulos .celda-quitar { text-align: right; }
  .tabla-articulos .celda-quitar:empty { display: none; }
}
.botones-articulos { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.botones-articulos select { padding: 0.35em 0.6em; border: 1px solid var(--color-border); border-radius: 8px; font: inherit; font-size: 0.9rem; background: #fff; }

/* Puntos a chequear (views/revisiones/puntos.ejs): columnas Sí/No vacías
   para marcar a mano en la hoja impresa, como el PDF de inspección. */
.tabla-puntos td:first-child { width: 40px; color: var(--color-muted); }
.tabla-puntos th:nth-child(3), .tabla-puntos th:nth-child(4), .tabla-puntos .casilla { width: 56px; text-align: center; border-left: 1px solid var(--color-border); }
@media print {
  .app-header, .no-imprimir, #asistente-flotante { display: none !important; }
  .table-wrap { border: none; overflow: visible; }
  .tabla-puntos { min-width: 0; }
  .tabla-puntos tr { break-inside: avoid; }
}
.acciones-punto { white-space: nowrap; width: 1%; border-left: 1px solid var(--color-border); }
.nav-submenu-vacio { padding: 6px 10px; color: #9aa4b2; font-size: 0.85rem; white-space: normal; max-width: 220px; }

/* Checklist (views/checklists/nuevo.ejs y ejecucion-detalle.ejs): parte
   mecánica y sanitaria con Sí / No y filas por debajo del mínimo en rojo. */
.checklist-parte { margin-top: 24px; margin-bottom: 8px; }
.checklist-parte h2 { margin: 0; }
.tabla-checklist .casilla-sino { width: 56px; text-align: center; }
/* Radios con aspecto de casilla (checkbox): solo uno de Sí / No por fila. */
.tabla-checklist .casilla-sino input { appearance: none; -webkit-appearance: none; width: 22px; height: 22px; margin: 0; border: 2px solid #8a94a3; border-radius: 4px; background: #fff; cursor: pointer; display: inline-grid; place-content: center; vertical-align: middle; }
.tabla-checklist .casilla-sino input:checked { border-color: var(--color-primary); background: var(--color-primary); }
.tabla-checklist .casilla-sino input:checked::after { content: "✓"; color: #fff; font-size: 15px; font-weight: 700; line-height: 1; }
.tabla-checklist .casilla-sino input[value="no"]:checked { border-color: #c62828; background: #c62828; }
.tabla-checklist .casilla-sino input:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.tabla-checklist .input-cantidad-real { width: 90px; padding: 0.35em 0.5em; border: 1px solid var(--color-border); border-radius: 8px; font: inherit; }
.fila-grupo { background: var(--color-bg-alt); font-weight: 600; }
.fila-bajo-minimo td { background: #fdecec; }
@media (max-width: 720px) {
  /* En el móvil las tablas del checklist caben a lo ancho (sin desplazar):
     el texto del punto/artículo se parte en líneas y Sí / No quedan a la vista. */
  .tabla-checklist { min-width: 0; table-layout: auto; }
  .tabla-checklist th, .tabla-checklist td { padding: 8px 4px; font-size: 0.82rem; }
  .tabla-checklist td:first-child, .tabla-checklist th:first-child { padding-left: 8px; overflow-wrap: anywhere; }
  .tabla-checklist .casilla-sino { width: 30px; padding-left: 1px; padding-right: 1px; }
  .tabla-checklist .casilla-sino input { width: 20px; height: 20px; }
  .tabla-checklist .input-cantidad-real { width: 48px; padding: 0.3em 0.3em; }
  .checklist-parte { flex-wrap: wrap; gap: 8px; }
}
.caducidad-checklist { display: flex; align-items: center; gap: 6px; margin-top: 4px; font-size: 0.8rem; color: var(--color-muted); font-weight: 400; }
.caducidad-checklist input { padding: 0.2em 0.4em; border: 1px solid var(--color-border); border-radius: 6px; font: inherit; font-size: 0.8rem; color: var(--color-dark); max-width: 140px; }
@media (max-width: 720px) {
  .caducidad-checklist { display: block; overflow-wrap: normal; }
  .caducidad-checklist input { display: block; width: 100%; max-width: 150px; margin-top: 2px; }
}

/* Tablas nuevas que en el móvil caben a lo ancho (sin desplazar): el texto
   se parte en líneas y las columnas secundarias (.solo-escritorio) se ocultan. */
@media (max-width: 720px) {
  .tabla-ajustada { min-width: 0; }
  .tabla-ajustada th, .tabla-ajustada td { padding: 8px 6px; font-size: 0.82rem; }
  /* Solo se parte por cualquier sitio el texto largo (artículo o punto, en la
     primera o segunda columna); cifras y encabezados quedan enteros. */
  .tabla-ajustada td:first-child, .tabla-puntos.tabla-ajustada td:nth-child(2) { overflow-wrap: anywhere; }
  .tabla-ajustada th { overflow-wrap: normal; word-break: normal; hyphens: none; }
  .tabla-ajustada .solo-escritorio { display: none; }
  .tabla-ajustada .badge { white-space: nowrap; }
  .tabla-puntos.tabla-ajustada td:first-child { width: 24px; }
  .tabla-puntos.tabla-ajustada .casilla, .tabla-puntos.tabla-ajustada th:nth-child(3), .tabla-puntos.tabla-ajustada th:nth-child(4) { width: 30px; }
  .tabla-puntos.tabla-ajustada .acciones-punto { white-space: normal; width: 64px; text-align: center; }
  .tabla-puntos.tabla-ajustada .acciones-punto form { display: block !important; margin-top: 4px; }
}
@media (max-width: 720px) {
  /* Listado de un almacén y de almacenes: la columna de acciones se apila. */
  .tabla-ajustada td:last-child form { display: block !important; margin-top: 4px; }
  .tabla-almacen td:last-child, .tabla-almacen th:last-child { width: 62px; }
}

/* --- Parte asistencial (views/partesAsistencia/*, public/js/parteAsistencia.js) --- */
.nav-dropdown-titulo { padding: 8px 10px 2px; margin-top: 4px; border-top: 1px solid #3a4250; font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: #9aa4b2; }
.nav-dropdown-menu a.nav-subitem { padding-left: 20px; }
.pa-miniaturas, .pa-fotos { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.pa-miniaturas img, .pa-fotos img { width: 72px; height: 96px; object-fit: cover; border-radius: 6px; border: 1px solid var(--color-border); display: block; }
.pa-doc { display: inline-block; padding: 6px 10px; border: 1px solid var(--color-border); border-radius: 6px; font-size: 0.8rem; background: var(--color-bg-alt); }
.pa-estado { display: inline-block; padding: 0.15em 0.65em; border-radius: 999px; font-size: 0.78rem; font-weight: 600; }
.pa-estado-borrador { background: #fdf1d6; color: #92600a; }
.pa-estado-cerrado { background: var(--color-primary-light); color: var(--color-primary-dark); }
.pa-estado-anulado { background: #fde8e8; color: var(--color-error); }
.pa-sva-etiqueta { display: inline-block; background: #1d4e89; color: #fff; font-size: 0.68rem; font-weight: 700; padding: 1px 6px; border-radius: 4px; vertical-align: middle; letter-spacing: .03em; }
.pa-errores ul { margin: 6px 0 0; padding-left: 20px; font-weight: 400; }
.pa-seccion { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); margin-bottom: 10px; }
.pa-seccion > summary { cursor: pointer; padding: 12px 16px; font-weight: 700; color: var(--color-dark); list-style: none; display: flex; align-items: center; gap: 8px; }
.pa-seccion > summary::-webkit-details-marker { display: none; }
.pa-seccion > summary::after { content: "▾"; margin-left: auto; color: var(--color-muted); }
.pa-seccion:not([open]) > summary::after { content: "▸"; }
.pa-num { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; background: #8b1a1a; color: #fff; font-size: 0.78rem; flex: none; }
.pa-seccion-sva .pa-num { background: #1d4e89; }
.pa-seccion-cuerpo { padding: 0 16px 14px; }
.pa-campos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px 16px; align-items: end; }
.pa-campo { min-width: 0; margin: 0; }
.pa-campo > label { display: block; font-weight: 600; font-size: 0.85rem; margin-bottom: 4px; color: var(--color-dark); }
.pa-campo input[type=text], .pa-campo input[type=date], .pa-campo input[type=time], .pa-campo select, .pa-campo textarea { width: 100%; box-sizing: border-box; }
.pa-ancho-2 { grid-column: span 2; } .pa-ancho-3 { grid-column: span 3; } .pa-ancho-4 { grid-column: 1 / -1; }
fieldset.pa-opciones { border: 0; padding: 0; }
fieldset.pa-opciones legend { font-weight: 600; font-size: 0.85rem; margin-bottom: 6px; color: var(--color-dark); padding: 0; }
.pa-opciones-lista { display: flex; flex-wrap: wrap; gap: 6px; }
.pa-opcion { display: inline-flex; align-items: center; gap: 6px; padding: 7px 11px; border: 1px solid var(--color-border); border-radius: 8px; cursor: pointer; font-size: 0.88rem; background: #fff; min-height: 38px; box-sizing: border-box; }
.pa-opcion:has(input:checked) { border-color: var(--color-primary); background: var(--color-primary-light); color: var(--color-primary-dark); font-weight: 600; }
.pa-opcion input { margin: 0; }
.pa-si .pa-opcion { width: 100%; }
.pa-tabla-wrap { margin-bottom: 0; }
.pa-tabla { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.pa-tabla th { background: var(--color-bg-alt); padding: 6px; text-align: center; font-weight: 600; white-space: nowrap; }
.pa-tabla td { padding: 3px; border-top: 1px solid var(--color-border); text-align: center; }
.pa-tabla input, .pa-tabla select { width: 100%; min-width: 58px; box-sizing: border-box; padding: 6px; }
.pa-glasgow-total { font-weight: 700; min-width: 54px; }
.pa-legal { font-size: 0.82rem; color: var(--color-text); background: var(--color-bg-alt); border-left: 3px solid #8b1a1a; padding: 8px 12px; border-radius: 0 6px 6px 0; }
.pa-firma { border: 1px dashed #9aa4b2; border-radius: 8px; padding: 6px; background: #fbfcfd; }
.pa-firma canvas { width: 100%; height: 150px; display: block; background: #fff; border-radius: 6px; touch-action: none; cursor: crosshair; }
.pa-firma canvas[hidden], .pa-firma [hidden] { display: none !important; }
.pa-firma-guardada { max-width: 100%; max-height: 150px; display: block; background: #fff; }
.pa-firma-acciones { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-top: 4px; }
.pa-acciones { position: sticky; bottom: 0; background: rgba(255,255,255,.96); border-top: 1px solid var(--color-border); padding: 12px 0; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; z-index: 5; }
.pa-documento { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 22px 26px; }
.pa-doc-cabecera { display: flex; justify-content: space-between; gap: 16px; border-bottom: 3px solid #8b1a1a; padding-bottom: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.pa-doc-cabecera h2 { margin: 2px 0; color: #8b1a1a; font-size: 1.25rem; }
.pa-doc-empresa { margin: 0; font-weight: 700; color: var(--color-dark); }
.pa-doc-sub { margin: 0; font-size: 0.8rem; color: var(--color-muted); }
.pa-doc-numero { display: grid; grid-template-columns: auto auto; gap: 2px 12px; margin: 0; font-size: 0.9rem; align-content: start; }
.pa-doc-numero dt { font-weight: 700; color: var(--color-muted); }
.pa-doc-numero dd { margin: 0; }
.pa-anulado { background: #fde8e8; color: var(--color-error); padding: 8px 12px; border-radius: 6px; }
.pa-doc-seccion { margin-bottom: 12px; break-inside: avoid; }
.pa-doc-seccion h3 { font-size: 0.95rem; margin: 0 0 6px; padding: 4px 8px; background: #f4e6e6; color: #8b1a1a; border-radius: 4px; }
.pa-doc-campos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 20px; margin: 0; font-size: 0.9rem; }
.pa-doc-campos dt { font-size: 0.75rem; color: var(--color-muted); font-weight: 600; }
.pa-doc-campos dd { margin: 0 0 4px; white-space: pre-wrap; color: var(--color-dark); }
.pa-doc-ancho { grid-column: 1 / -1; }
.pa-doc-firma img { max-height: 90px; max-width: 100%; border-bottom: 1px solid var(--color-border); }
.pa-tabla-ver td, .pa-tabla-ver th { border: 1px solid var(--color-border); padding: 4px 6px; }
.pa-doc-pie { margin-top: 14px; border-top: 1px solid var(--color-border); padding-top: 8px; font-size: 0.78rem; color: var(--color-muted); }
@media (max-width: 760px) {
  .pa-campos { grid-template-columns: 1fr 1fr; }
  .pa-ancho-2, .pa-ancho-3, .pa-ancho-4 { grid-column: 1 / -1; }
  .pa-doc-campos { grid-template-columns: 1fr; }
  .pa-documento { padding: 14px; }
}
@media print {
  .app-header, .no-imprimir { display: none !important; }
  .pa-documento { border: 0; padding: 0; }
  body { background: #fff; }
}
/* Parte asistencial: envío por WhatsApp/correo y enlace compartido */
.pa-enviar { display: grid; gap: 10px; }
.pa-enviar-form label { display: block; font-weight: 600; font-size: 0.85rem; margin-bottom: 4px; color: var(--color-dark); }
.pa-enviar-fila { display: flex; gap: 8px; flex-wrap: wrap; }
.pa-enviar-fila input { flex: 1 1 200px; min-width: 0; }
.btn-whatsapp { background: #25d366; color: #fff; border-color: #25d366; }
.btn-whatsapp:hover { background: #1ebe5a; color: #fff; }
.pa-envios { width: 100%; border-collapse: collapse; font-size: 0.82rem; margin-top: 4px; }
.pa-envios th, .pa-envios td { text-align: left; padding: 5px 8px; border-bottom: 1px solid var(--color-border); }
.pa-envios th { background: var(--color-bg-alt); }
.pa-envio-error { color: var(--color-error); font-weight: 600; }
.pa-celda-enviar { min-width: 110px; }
.pa-fila-envio > td { background: var(--color-bg-alt); padding: 12px 14px; }
.pa-fila-envio[hidden] { display: none; }
.pa-compartido { background: var(--color-bg-alt); }
.pa-compartido-aviso { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; background: #fff4e0; border: 1px solid #f2d39b; color: #7a4f05; border-radius: 8px; padding: 8px 12px; margin-bottom: 12px; font-size: 0.85rem; }
.pa-compartido-fotos { display: grid; gap: 14px; margin-top: 12px; }
.pa-compartido-fotos img { max-width: 100%; height: auto; display: block; border: 1px solid var(--color-border); border-radius: 6px; }

/* Aviso al entrar: versión estándar / fase de implantación */
.aviso-implantacion { position: fixed; inset: 0; z-index: 2000; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(15, 23, 42, 0.55); }
.aviso-implantacion[hidden] { display: none; }
.aviso-implantacion-caja { position: relative; background: #fff; border-radius: 12px; max-width: 520px; width: 100%; padding: 28px 24px 22px; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25); text-align: center; }
.aviso-implantacion-caja h2 { margin: 0 24px 12px; font-size: 1.3rem; }
.aviso-implantacion-caja p { margin: 0 0 12px; line-height: 1.5; color: var(--color-text); }
.aviso-implantacion-caja .btn { margin-top: 8px; min-width: 140px; }
.aviso-implantacion-x { position: absolute; top: 10px; right: 12px; border: none; background: none; font-size: 1.2rem; cursor: pointer; color: var(--color-muted); line-height: 1; padding: 4px; }

/* Parte de trabajo: fotos de los daños */
.fotos-danos { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; margin-top: 4px; }
.foto-dano { display: flex; flex-direction: column; gap: 4px; font-weight: normal; border: 1px dashed var(--color-border); border-radius: 8px; padding: 8px 10px; }
.foto-dano span { font-size: 0.85rem; font-weight: 600; }
.foto-dano input[type="file"] { width: 100%; min-width: 0; font-size: 0.85rem; }
.fotos-danos-galeria { display: flex; flex-wrap: wrap; gap: 10px; }
.fotos-danos-galeria img { width: 120px; height: 90px; object-fit: cover; border-radius: 8px; border: 1px solid var(--color-border); display: block; }

/* Activos: «Daños a día» */
.danos-activo-cabecera { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.danos-activo-cabecera label { margin: 0; }
.danos-activo-cabecera input[type="date"] { width: auto; }

/* Registro de limpiezas */
.limpieza-procedimiento { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 10px 14px; margin-bottom: 18px; }
.limpieza-procedimiento summary { cursor: pointer; font-weight: 600; color: var(--color-primary); }
.limpieza-procedimiento p { font-size: 0.92rem; line-height: 1.5; margin: 10px 0 0; }
.limpieza-checklist { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 12px 14px; }
.limpieza-checklist h3 { font-size: 1rem; margin: 14px 0 6px; }
.limpieza-checklist ul { list-style: none; margin: 0; padding: 0; }
.limpieza-checklist li { border-bottom: 1px solid var(--color-border); }
.limpieza-checklist li label { display: flex; align-items: flex-start; gap: 12px; padding: 10px 2px; font-weight: normal; cursor: pointer; margin: 0; }
.limpieza-checklist input[type="checkbox"] { width: 22px; height: 22px; flex-shrink: 0; margin: 0; accent-color: var(--color-primary); }
.limpieza-ver { list-style: none; margin: 0; padding: 0; background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); }
.limpieza-ver li { padding: 8px 14px; border-bottom: 1px solid var(--color-border); }
.limpieza-ver li span { display: inline-block; width: 1.4em; font-weight: 700; }
.limpieza-ver li.hecho span { color: #15803d; }
.limpieza-ver li.pendiente { color: var(--color-muted); }
.limpieza-ver li.pendiente span { color: #b91c1c; }
.limpieza-ver .limpieza-ver-grupo { background: var(--color-bg-alt); font-weight: 600; }

/* Registro de limpiezas: documento imprimible / PDF y libro */
.limpieza-libro-form { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 12px 14px; margin-bottom: 18px; }
.limpieza-libro-campos { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; margin-top: 8px; }
.limpieza-libro-campos label { display: flex; flex-direction: column; gap: 4px; font-size: 0.85rem; font-weight: 600; margin: 0; }
.limpieza-libro-campos select, .limpieza-libro-campos input { min-width: 0; }
.limpieza-documento { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 22px; }
.limpieza-membrete { display: flex; flex-direction: column; font-size: 0.82rem; color: var(--color-muted); border-bottom: 2px solid #c00; padding-bottom: 8px; margin-bottom: 14px; }
.limpieza-membrete strong { color: #c00; font-size: 1rem; }
.limpieza-doc-titulo { text-align: center; text-transform: uppercase; margin: 6px 0 14px; }
.limpieza-doc-datos { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin: 0 0 14px; }
.limpieza-doc-datos dt { font-size: 0.75rem; color: var(--color-muted); text-transform: uppercase; }
.limpieza-doc-datos dd { margin: 2px 0 0; font-weight: 600; }
.limpieza-doc-obs { margin-top: 12px; }
.limpieza-doc-firmas { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 34px; }
.limpieza-doc-firmas div { border-top: 1px solid #333; padding-top: 6px; display: flex; flex-direction: column; font-size: 0.85rem; }
.limpieza-doc-firmas em { font-style: normal; font-weight: 600; }
.limpieza-doc-pie { font-size: 0.75rem; color: var(--color-muted); margin: 18px 0 0; }
.limpieza-libro-portada { text-align: center; padding-bottom: 20px; }
.limpieza-libro-portada .limpieza-membrete { text-align: left; }
.limpieza-libro-portada h2 { font-size: 1.6rem; margin: 40px 0 26px; }
.limpieza-libro-dato { font-size: 1.2rem; margin: 10px 0; }
.limpieza-libro-nota { font-weight: 600; max-width: 520px; margin: 30px auto 0; }
.limpieza-libro-seccion { margin-top: 26px; }
.limpieza-libro-seccion p { line-height: 1.5; font-size: 0.92rem; }
.limpieza-libro-tabla { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.limpieza-libro-tabla th, .limpieza-libro-tabla td { border: 1px solid #999; padding: 6px; text-align: left; vertical-align: top; }
.limpieza-libro-tabla th { background: #f1f1f1; }
@media print {
  .limpieza-documento { border: 0; padding: 0; }
  .limpieza-libro-portada, .limpieza-libro-seccion + .limpieza-libro-seccion { break-after: page; }
  .limpieza-libro-tabla tr, .limpieza-ver li { break-inside: avoid; }
  .limpieza-membrete strong { color: #c00 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* Registro de limpiezas: firmas de los dos técnicos */
.limpieza-firmas { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; }
.limpieza-doc-firmas { align-items: end; }
.limpieza-doc-firmas img { max-width: 100%; max-height: 90px; object-fit: contain; display: block; margin-bottom: 4px; }
.limpieza-doc-firmas div:has(img) { border-top: 0; }
.limpieza-doc-firmas div:has(img) span { border-top: 1px solid #333; padding-top: 6px; }
.limpieza-libro-firmas img { display: block; max-width: 110px; max-height: 40px; object-fit: contain; }

/* Registro de limpiezas: envío por correo */
.limpieza-correo { background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 12px 14px; margin: 0 0 16px; }
.limpieza-correo[hidden] { display: none; }
.limpieza-correo label { display: block; font-weight: 600; font-size: 0.85rem; margin-bottom: 6px; }
.limpieza-correo-fila { display: flex; gap: 8px; flex-wrap: wrap; }
.limpieza-correo-fila input { flex: 1 1 220px; min-width: 0; }

/* Pantalla Técnico: botones grandes de acceso directo */
.boton-tecnico { display: block; padding: 20px; text-align: center; font-size: 1.05rem; }
