/* =====================================================================================
   NIGHTMAR / NIGHTHUB · ESTILO v2 (rework visual)

   Se carga DESPUÉS de layout.css (la plantilla Chillaid). Va sustituyéndola por partes: primero
   el marco común (cabecera, menús, fondo y letra), luego página a página.

   Todo lo de aquí empieza por "nm-" para no chocar con las clases viejas.
   Colores de siempre: azul #6abcd4, rojo #bd0000 y negro. Los de los eventos salen de type_eventos
   y no se tocan.
   ===================================================================================== */

:root {
  --nm-font: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --nm-bg: #f5f7f9;
  --nm-card: #fff;
  --nm-text: #1d2733;
  --nm-muted: #6b7785;
  --nm-line: #dfe4e9;
  --nm-line-soft: #eef1f4;
  --nm-hover: #f1f4f7;
  --nm-accent: #6abcd4;
  --nm-accent-ink: #237f99;
  --nm-accent-soft: #e6f4f8;
  --nm-primary: #bd0000;
  --nm-primary-hover: #9c0000;
  --nm-radius: 12px;
  --nm-shadow: 0 1px 2px rgba(16, 24, 40, .04);
  --nm-top-h: 60px;
  --nm-side-w: 236px;
  --nm-side-plegado-w: 64px;
  --nm-abajo-h: 64px;
  --nm-enlace: #3c4855;
  --nm-enlace-icono: #8a95a1;
  --nm-bloque-t: #9aa4af;
  --nm-menu-sombra: 0 18px 50px rgba(0, 0, 0, .18);
  --nm-velo: rgba(0, 0, 0, .25);
}

/* ---------- MODO OSCURO (usuarios.Tema, ver tema.php) ----------
   "oscuro" siempre; "auto" sólo si el dispositivo está en oscuro. Los colores de los eventos
   (type_eventos) no cambian: son saturados y se leen igual sobre fondo oscuro. */
:root[data-tema="oscuro"] {
  --nm-bg: #0f1318;
  --nm-card: #171c22;
  --nm-text: #e4e8ec;
  --nm-muted: #98a2ad;
  --nm-line: #2b323b;
  --nm-line-soft: #222830;
  --nm-hover: #1f252d;
  --nm-accent-ink: #7fcfe6;
  --nm-accent-soft: #15313a;
  --nm-shadow: 0 1px 2px rgba(0, 0, 0, .4);
  --nm-enlace: #c5ccd3;
  --nm-enlace-icono: #7d8792;
  --nm-bloque-t: #6f7984;
  --nm-menu-sombra: 0 18px 50px rgba(0, 0, 0, .6);
  --nm-velo: rgba(0, 0, 0, .55);
}
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] {
    --nm-bg: #0f1318;
    --nm-card: #171c22;
    --nm-text: #e4e8ec;
    --nm-muted: #98a2ad;
    --nm-line: #2b323b;
    --nm-line-soft: #222830;
    --nm-hover: #1f252d;
    --nm-accent-ink: #7fcfe6;
    --nm-accent-soft: #15313a;
    --nm-shadow: 0 1px 2px rgba(0, 0, 0, .4);
    --nm-enlace: #c5ccd3;
    --nm-enlace-icono: #7d8792;
    --nm-bloque-t: #6f7984;
    --nm-menu-sombra: 0 18px 50px rgba(0, 0, 0, .6);
    --nm-velo: rgba(0, 0, 0, .55);
  }
}

/* Páginas que aún no se han rehecho en la v2: su contenido se queda en claro aunque el modo sea
   oscuro (sus colores están escritos a mano y saldría texto claro sobre cajas blancas). Se les
   devuelven los colores claros; la barra y los menús, que están fuera, sí van en oscuro.
   Cuando una página se rehace, pone $nm_pagina_v2 = true antes de header.php y sale de aquí. */
body.nm-v2:not(.nm-pagina-v2) .overlay {
  --nm-bg: #f5f7f9; --nm-card: #fff; --nm-text: #1d2733; --nm-muted: #6b7785; --nm-line: #dfe4e9;
  --nm-line-soft: #eef1f4; --nm-hover: #f1f4f7; --nm-accent-ink: #237f99; --nm-accent-soft: #e6f4f8;
  color-scheme: light;
}

/* ---------- fondo y letra de toda la web ---------- */
/* layout.css pinta todas las filas (tr) de blanco: aquí, del color de la tarjeta (en claro es el
   mismo blanco). Con :where() pesa lo mismo que aquella regla y no pisa ninguna otra. */
:where(body.nm-v2) tr { background-color: var(--nm-card); }
body.nm-v2 { background-color: var(--nm-bg); font-family: var(--nm-font); color: var(--nm-text); -webkit-font-smoothing: antialiased; }

/* La plantilla pintaba un fondo gris azulado (.overlay.light, en unas 60 páginas) con texto blanco
   encima y separadores en pestaña blanca. Pasa al fondo claro, y lo que iba en blanco sobre el azul
   (texto heredado, miga de pan y separadores) pasa a oscuro para seguir leyéndose. */
.nm-v2 .overlay::after, .nm-v2 .overlay.light::after { background-color: var(--nm-bg); }
.nm-v2 .overlay { color: var(--nm-text); }
.nm-v2 .bgded[style*="background-color"] { background-color: transparent !important; }
.nm-v2 .sectiontitle p.nospace { color: var(--nm-muted); font-size: 13px; }
.nm-v2 .white_separator, .nm-v2 .sep-white { border-bottom: 1px solid var(--nm-line); box-shadow: none !important; }
.nm-v2 .white_separator_span, .nm-v2 .sep-white span { background-color: transparent; color: var(--nm-muted); padding-left: 0; text-transform: uppercase; letter-spacing: .07em; font-size: 12px; }
.nm-v2 .white_separator_option { background-color: var(--nm-card); border: 1px solid var(--nm-line); border-bottom: 0; border-radius: 6px 6px 0 0; }
/* La misma cabecera en pestaña, pero escrita a mano dentro de 13 páginas (style="border-bottom: …
   solid white; float:left; width:100%"). Puente hasta que cada página tenga la suya: la raya pasa a
   gris y el texto blanco sin fondo, a oscuro. */
.nm-v2 div[style*="solid white; float:left; width:100%"] { border-bottom-color: var(--nm-line) !important; }
.nm-v2 div[style*="solid white; float:left; width:100%"] > span[style*="color:white"]:not([style*="background"]) { color: var(--nm-text) !important; }

/* La plantilla anima TODO (layout.css: * { transition: .3s }), así que cada cambio de color o de
   tamaño llega con 0,3 s de retraso: los menús, el resaltado de la paleta, el modo oscuro... En lo
   que ya es v2 se quita; las páginas viejas lo conservan hasta que se rehagan. */
body.nm-v2, .nm-top, .nm-top *, .nm-lateral, .nm-lateral *, .nm-mas, .nm-mas *, .nm-abajo, .nm-abajo *, .nm-velo,
.nm-pagina-v2 .nm-pagina, .nm-pagina-v2 .nm-pagina * { transition: none; }

/* ---------- barra negra de arriba ---------- */
.nm-top { position: sticky; top: 0; z-index: 900; background: #000; color: #fff; font-family: var(--nm-font); }
.nm-top-in { height: var(--nm-top-h); display: flex; align-items: center; gap: 22px; padding: 0 24px; }
.nm-top a, .nm-top button { color: inherit; text-decoration: none; font: inherit; }
.nm-top button { border: 0; background: transparent; cursor: pointer; margin: 0; }

.nm-logo { display: inline-flex; align-items: flex-end; flex: none; line-height: 1; }
/* El logo de NightMar es el de siempre: la N y la M de imagen y el resto en Georgia con versalitas.
   La barra vieja medía 73px (letra 25px, imágenes de 40px de ancho); esta mide 60, así que va al 82%. */
.nm-logo { align-items: center; height: 100%; }
.nm-logo-mar { display: inline-flex; align-items: center; font-family: Georgia, "Times New Roman", Times, serif; font-variant: small-caps; font-weight: normal; font-size: 20.7px; line-height: 1; letter-spacing: 0; color: #fff; white-space: nowrap; }
.nm-logo-mar img { width: 33px; height: auto; display: block; }
.nm-logo-hub { height: 30px; width: auto; display: block; }

.nm-tabs { display: flex; gap: 2px; flex: 1; min-width: 0; }
.nm-tab { display: inline-flex; align-items: center; gap: 8px; padding: 7px 13px; border-radius: 999px; color: #c9c9c9 !important; font-weight: 600; font-size: 14px; white-space: nowrap; position: relative; }
.nm-tab .fa-solid { font-size: 13px; }
.nm-tab:hover { color: #fff !important; background: #1c1c1c; }
.nm-tab.activo { background: var(--nm-primary); color: #fff !important; }
.nm-tab .nm-etiqueta { display: none; }
.nm-tab[aria-expanded="true"] { background: #262626; color: #fff !important; }

.nm-num { background: #fff; color: var(--nm-primary); font-size: 11px; line-height: 16px; min-width: 16px; text-align: center; border-radius: 999px; padding: 0 5px; font-weight: 800; }
.nm-enlace .nm-num { background: var(--nm-primary); color: #fff; margin-left: auto; }

.nm-top-der { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.nm-campana { position: relative; width: 38px; height: 38px; border-radius: 50%; background: #1a1a1a; color: #ddd !important; display: grid; place-items: center; font-size: 16px; }
.nm-campana:hover { background: #262626; color: #fff !important; }
.nm-campana-n { position: absolute; top: -3px; right: -4px; background: var(--nm-primary); color: #fff; font-size: 10.5px; font-weight: 800; line-height: 17px; min-width: 17px; padding: 0 4px; border-radius: 999px; text-align: center; box-shadow: 0 0 0 2px #000; }

.nm-usuario { position: relative; }
.nm-usuario-btn { display: flex; align-items: center; gap: 10px; padding: 4px 12px 4px 4px !important; border-radius: 999px; background: #1a1a1a !important; text-align: left; }
.nm-usuario-btn:hover, .nm-usuario.activo .nm-usuario-btn { background: #262626 !important; }
.nm-avatar { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; background: var(--nm-primary); color: #fff; font-weight: 700; font-size: 14px; flex: none; }
.nm-usuario-txt { line-height: 1.2; display: flex; flex-direction: column; font-size: 13px; }
.nm-usuario-txt small { color: #9a9a9a; font-size: 11px; }

/* ---------- desplegables: usuario y "Más" ---------- */
.nm-usuario-menu, .nm-mas { position: fixed; z-index: 950; background: var(--nm-card); color: var(--nm-text); border: 1px solid var(--nm-line); border-radius: 14px; box-shadow: var(--nm-menu-sombra); font-family: var(--nm-font); font-size: 14px; }
.nm-usuario-menu[hidden], .nm-mas[hidden], .nm-velo[hidden] { display: none !important; }
.nm-usuario-menu { position: absolute; top: calc(100% + 8px); right: 0; width: 250px; padding: 6px; }
.nm-usuario-quien { padding: 10px 12px; border-bottom: 1px solid var(--nm-line-soft); margin-bottom: 4px; line-height: 1.3; }
.nm-usuario-quien small { display: block; color: var(--nm-muted); }
.nm-usuario-menu a { display: flex; gap: 12px; align-items: center; padding: 9px 12px; border-radius: 8px; color: var(--nm-text) !important; }
.nm-usuario-menu a:hover { background: var(--nm-hover); }
.nm-usuario-menu a .fa-solid { width: 16px; color: var(--nm-muted); text-align: center; }
.nm-tema { border-top: 1px solid var(--nm-line-soft); margin-top: 4px; padding: 10px 12px 6px; }
.nm-tema-t { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--nm-bloque-t); font-weight: 700; margin-bottom: 6px; }
.nm-tema-opc { display: flex; border: 1px solid var(--nm-line); border-radius: 8px; overflow: hidden; }
.nm-tema-opc button { flex: 1; display: inline-flex; flex-direction: column; align-items: center; gap: 3px; padding: 6px 4px !important; border: 0; background: transparent !important; color: var(--nm-muted) !important; font-size: 12px; cursor: pointer; }
.nm-tema-opc button + button { border-left: 1px solid var(--nm-line); }
.nm-tema-opc button:hover { background: var(--nm-hover) !important; }
.nm-tema-opc button[aria-pressed="true"] { background: var(--nm-accent-soft) !important; color: var(--nm-accent-ink) !important; font-weight: 650; }

.nm-mas { top: calc(var(--nm-top-h) + 6px); left: 50%; transform: translateX(-50%); width: min(820px, calc(100vw - 32px)); padding: 16px 18px; max-height: calc(100vh - var(--nm-top-h) - 24px); overflow-y: auto; }
.nm-mas-h { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; font-weight: 700; }
.nm-cerrar { border: 0; background: transparent; color: var(--nm-muted); width: 30px; height: 30px; border-radius: 8px; cursor: pointer; }
.nm-cerrar:hover { background: var(--nm-hover); color: var(--nm-text); }
.nm-mas-b { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 18px; }
.nm-velo { position: fixed; inset: 0; z-index: 940; background: var(--nm-velo); }

/* ---------- enlaces de menú (lateral y "Más") ---------- */
.nm-bloque-t { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--nm-bloque-t); font-weight: 700; padding: 14px 12px 6px; }
.nm-bloque:first-child .nm-bloque-t { padding-top: 4px; }
.nm-enlace { display: flex; align-items: center; gap: 12px; padding: 8px 12px; border-radius: 8px; color: var(--nm-enlace) !important; font-weight: 500; font-size: 14px; line-height: 1.3; position: relative; text-decoration: none !important; }
.nm-enlace .fa-solid { width: 18px; text-align: center; color: var(--nm-enlace-icono); flex: none; }
.nm-enlace:hover { background: var(--nm-hover); }
.nm-enlace.activo { background: var(--nm-accent-soft); color: var(--nm-accent-ink) !important; font-weight: 650; }
.nm-enlace.activo .fa-solid { color: var(--nm-accent-ink); }
.nm-etiqueta { margin-left: auto; font-size: 10px; background: #fff1d1; color: #7a5200; border-radius: 4px; padding: 0 5px; font-weight: 700; }

/* ---------- menú lateral (todas las páginas menos Inicio) ---------- */
.nm-lateral { position: fixed; z-index: 800; top: var(--nm-top-h); left: 0; bottom: 0; width: var(--nm-side-w); overflow-y: auto; background: var(--nm-card); border-right: 1px solid var(--nm-line); padding: 14px 12px 24px; font-family: var(--nm-font); }
.nm-lateral .nm-enlace.activo::before { content: ''; position: absolute; left: -12px; top: 8px; bottom: 8px; width: 3px; border-radius: 0 3px 3px 0; background: var(--nm-accent); }
/* el hueco del lateral lo deja el <body>; la barra negra lo recupera para ir de lado a lado */
body.nm-con-lateral { padding-left: var(--nm-side-w); }
body.nm-con-lateral .nm-top { margin-left: calc(-1 * var(--nm-side-w)); }
body.nm-lateral-plegado .nm-top { margin-left: calc(-1 * var(--nm-side-plegado-w)); }

/* en el planning, plegado a iconos: la tabla necesita el ancho */
body.nm-lateral-plegado { padding-left: var(--nm-side-plegado-w); }
.nm-lateral-plegado .nm-lateral { width: var(--nm-side-plegado-w); padding: 14px 8px; }
.nm-lateral-plegado .nm-lateral .nm-txt, .nm-lateral-plegado .nm-lateral .nm-bloque-t,
.nm-lateral-plegado .nm-lateral .nm-etiqueta, .nm-lateral-plegado .nm-lateral .nm-num { display: none; }
.nm-lateral-plegado .nm-lateral .nm-enlace { justify-content: center; padding: 9px 0; }
.nm-lateral-plegado .nm-lateral .nm-enlace.activo::before { left: -8px; }
.nm-lateral-plegado .nm-lateral .nm-bloque + .nm-bloque { border-top: 1px solid var(--nm-line-soft); margin-top: 8px; padding-top: 8px; }

/* ---------- barra de abajo (sólo móvil) ---------- */
.nm-abajo { display: none; }

/* pantallas medianas: en la barra negra sólo el texto del activo */
@media (max-width: 1180px) {
  .nm-tab .nm-txt { display: none; }
  .nm-tab.activo .nm-txt, .nm-tab-mas .nm-txt { display: inline; }
}

@media (max-width: 900px) {
  :root { --nm-top-h: 54px; }
  .nm-top-in { padding: 0 14px; gap: 12px; }
  .nm-tabs, .nm-usuario-txt, .nm-lateral { display: none; }
  .nm-logo-mar { font-size: 18.6px; }
  .nm-logo-mar img { width: 29.7px; }
  .nm-logo-hub { height: 26px; }
  .nm-usuario-btn { padding: 4px !important; }
  body.nm-con-lateral, body.nm-lateral-plegado { padding-left: 0; }
  body.nm-con-lateral .nm-top, body.nm-lateral-plegado .nm-top { margin-left: 0; }
  body.nm-v2 { padding-bottom: calc(var(--nm-abajo-h) + env(safe-area-inset-bottom)); }

  .nm-abajo { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 900; background: #000; padding: 6px 6px calc(6px + env(safe-area-inset-bottom)); justify-content: space-around; font-family: var(--nm-font); }
  .nm-abajo-btn { display: flex; flex-direction: column; align-items: center; gap: 3px; color: #9a9a9a !important; font-size: 11px; font-weight: 600; padding: 5px 8px; border-radius: 12px; border: 0; background: transparent; position: relative; min-width: 60px; cursor: pointer; text-decoration: none !important; font-family: inherit; }
  .nm-abajo-btn .fa-solid { font-size: 18px; }
  .nm-abajo-btn .nm-etiqueta { display: none; }
  .nm-abajo-btn .nm-num { position: absolute; top: 0; right: 10px; font-size: 10px; }
  .nm-abajo-btn.activo { color: #fff !important; background: var(--nm-primary); }
  .nm-abajo-btn[aria-expanded="true"] { color: #fff !important; background: #262626; }

  /* "Más" sube desde abajo */
  .nm-mas { top: auto; bottom: 0; left: 0; right: 0; transform: none; width: auto; max-height: 78vh; border-radius: 18px 18px 0 0; padding: 14px 14px calc(var(--nm-abajo-h) + 20px + env(safe-area-inset-bottom)); z-index: 890; }
  .nm-mas-b { grid-template-columns: 1fr; }
  .nm-velo { z-index: 880; }
}


/* =====================================================================================
   PIEZAS COMUNES DE LAS PÁGINAS REHECHAS
   ===================================================================================== */
.nm-v2 .hoc.nm-pagina { max-width: 1440px; }
.nm-oculto { display: none !important; }
.nm-tenue { color: var(--nm-muted); font-weight: 400; }
.nm-vacio { color: var(--nm-muted); text-align: center; padding: 14px 0; }

.nm-card { background: var(--nm-card); border: 1px solid var(--nm-line); border-radius: var(--nm-radius); box-shadow: var(--nm-shadow); min-width: 0; position: relative; color: var(--nm-text); line-height: 1.45; }
.nm-card-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 16px 18px 0; }
.nm-card-h h2 { margin: 0; font-size: 15px; font-weight: 650; line-height: 1.3; font-family: var(--nm-font); color: var(--nm-text); }
.nm-card-tools { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.nm-card-b { padding: 14px 18px 18px; }

.nm-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 34px; padding: 0 12px; border-radius: 8px; border: 1px solid var(--nm-line); background: var(--nm-card); color: var(--nm-text) !important; font: 550 14px/1 var(--nm-font); white-space: nowrap; cursor: pointer; text-decoration: none !important; margin: 0; transition: background .15s, border-color .15s; }
.nm-btn:hover { background: var(--nm-hover); }
.nm-btn-icono { width: 34px; padding: 0; }
.nm-btn-acento { background: color-mix(in srgb, var(--nm-accent) 87%, #000); border-color: color-mix(in srgb, var(--nm-accent) 87%, #000); color: #fff !important; } /* un pelín más oscuro que el acento: el texto blanco se lee mejor */
.nm-btn-acento:hover { background: var(--nm-accent-ink); }
.nm-btn-primario { background: var(--nm-primary); border-color: var(--nm-primary); color: #fff !important; }
.nm-btn-primario:hover { background: var(--nm-primary-hover); }
.nm-sel { height: 34px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); padding: 0 8px; font: 14px var(--nm-font); margin: 0; }
.nm-mesnav { display: inline-flex; align-items: center; gap: 4px; }
.nm-mesnav-t { min-width: 110px; text-align: center; font-weight: 600; font-size: 14px; }

.nm-pills { display: inline-flex; gap: 4px; flex-wrap: wrap; justify-content: flex-end; }
.nm-pill { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; line-height: 1.5; padding: 1px 8px; border-radius: 999px; font-weight: 600; background: var(--nm-hover); color: var(--nm-muted); white-space: nowrap; }
.nm-pill.verde { background: #e3f4e3; color: #006400; }
.nm-pill.rojo { background: #fbe3e3; color: #8b0000; }
.nm-pill.ambar { background: #fff1d1; color: #7a5200; }

/* etiqueta de un evento: el color lo pone su clase td_but_<Index><Abrev> (de type_eventos) */
.nm-chip { display: inline-flex; align-items: center; justify-content: center; border-radius: 4px; font-size: 11px; font-weight: 700; line-height: 1.5; padding: 0 4px; white-space: nowrap; overflow: hidden; text-overflow: clip; max-width: 100%; }
.nm-chip-tachado { text-decoration: line-through; opacity: .75; }
.nm-chips { display: flex; flex-wrap: wrap; gap: 2px; justify-content: center; max-width: 100%; }

.nm-cargando { position: absolute; inset: 0; z-index: 5; display: none; align-items: center; justify-content: center; background: color-mix(in srgb, var(--nm-card) 70%, transparent); border-radius: inherit; font-size: 22px; color: var(--nm-muted); }

/* en modo oscuro, las pastillas de estado con su color pero sobre fondo oscuro */
:root[data-tema="oscuro"] .nm-pill.verde { background: #12301a; color: #7ee08f; }
:root[data-tema="oscuro"] .nm-pill.rojo { background: #3a1416; color: #ff8a8a; }
:root[data-tema="oscuro"] .nm-pill.ambar { background: #3a2c0c; color: #f3c35a; }
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] .nm-pill.verde { background: #12301a; color: #7ee08f; }
  :root[data-tema="auto"] .nm-pill.rojo { background: #3a1416; color: #ff8a8a; }
  :root[data-tema="auto"] .nm-pill.ambar { background: #3a2c0c; color: #f3c35a; }
}


/* =====================================================================================
   INICIO (resumen.php)
   ===================================================================================== */
.nm-pagina { padding: 22px 24px 60px !important; font-family: var(--nm-font); color: var(--nm-text); }

/* franja de "hoy", en negro como las barras */
.nm-hoy { display: flex; flex-wrap: wrap; gap: 14px 18px; align-items: center; justify-content: space-between; background: #000; color: #fff; border-radius: var(--nm-radius); padding: 14px 18px; margin-bottom: 18px; }
.nm-hoy-hola { display: flex; flex-direction: column; line-height: 1.3; }
.nm-hoy-fecha { font-size: 12px; color: #9a9a9a; }
.nm-hoy-hola strong { font-size: 19px; font-weight: 700; letter-spacing: -.01em; }
.nm-hoy-items { display: flex; flex-wrap: wrap; gap: 10px; }
.nm-hoy-item { display: flex; align-items: center; gap: 10px; padding: 7px 14px 7px 8px; background: #161616; border: 1px solid #262626; border-radius: 10px; color: #fff !important; text-decoration: none !important; line-height: 1.3; }
a.nm-hoy-item:hover { background: #1f1f1f; }
.nm-hoy-item > .fa-solid { width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center; background: #262626; font-size: 13px; flex: none; }
.nm-hoy-item.rojo > .fa-solid { background: var(--nm-primary); }
.nm-hoy-item.ambar > .fa-solid { background: #e0a800; color: #111; }
.nm-hoy-item span { display: block; font-size: 11px; color: #9a9a9a; }
.nm-hoy-item b { font-size: 14px; font-weight: 650; }
/* "Hoy" puede tener varias cosas (guardia, asistencia, un curso...): una por línea */
.nm-hoy-item b.nm-hoy-cosa { display: block; }
.nm-hoy-item b.nm-hoy-cosa + b.nm-hoy-cosa { margin-top: 2px; font-size: 13px; font-weight: 600; }

/* banner de la sesión de hoy */
.nm-sesion { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 12px 18px; margin-bottom: 18px; border-radius: var(--nm-radius); background: var(--nm-accent-soft); border: 1px solid color-mix(in srgb, var(--nm-accent) 35%, transparent); color: var(--nm-accent-ink); }
.nm-sesion-ic { width: 40px; height: 40px; border-radius: 10px; display: grid !important; place-items: center; background: var(--nm-card); font-size: 17px; flex: none; }
.nm-sesion-t { flex: 1 1 240px; min-width: 0; display: flex; flex-direction: column; line-height: 1.35; }
.nm-sesion-t b { font-size: 15px; overflow-wrap: anywhere; }
.nm-sesion-k { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; }
.nm-sesion-p { font-size: 13px; opacity: .85; }

/* Novedad de la web en Inicio (novedades.php): una vez, hasta que se cierra */
.nm-novedad { position: relative; display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 14px 48px 14px 18px; margin-bottom: 18px; border-radius: var(--nm-radius); background: var(--nm-card); border: 1px solid color-mix(in srgb, var(--nm-accent) 40%, transparent); box-shadow: var(--nm-shadow); color: var(--nm-text); transition: opacity .25s, transform .25s; }
.nm-novedad.is-fuera { opacity: 0; transform: translateY(-6px); }
.nm-novedad-ic { width: 42px; height: 42px; border-radius: 12px; display: grid !important; place-items: center; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font-size: 18px; flex: none; }
.nm-novedad-t { flex: 1 1 280px; min-width: 0; display: flex; flex-direction: column; gap: 1px; line-height: 1.4; }
.nm-novedad-k { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; color: var(--nm-accent-ink); }
.nm-novedad-t b { font-size: 15px; overflow-wrap: anywhere; }
.nm-novedad-p { font-size: 13px; color: var(--nm-muted); }
.nm-novedad-ir { flex: none; white-space: nowrap; }
.nm-novedad-x { position: absolute; top: 8px; right: 8px; width: 30px; height: 30px; border: 0; border-radius: 8px; background: transparent; color: var(--nm-muted); font-size: 15px; cursor: pointer; display: grid; place-items: center; }
.nm-novedad-x:hover { background: var(--nm-hover); color: var(--nm-text); }
@media (max-width: 600px) { .nm-novedad-ir { width: 100%; justify-content: center; } }

/* dos columnas: Mi mes + calendarios | semana, avisos y accesos */
.nm-resumen { display: grid; grid-template-columns: 370px minmax(0, 1fr); gap: 18px; align-items: start; }
.nm-resumen-aside, .nm-resumen-main { display: flex; flex-direction: column; gap: 18px; min-width: 0; }

/* Mi mes */
.nm-mimes { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.nm-mimes-dow { text-align: center; font-size: 11px; color: var(--nm-muted); font-weight: 700; padding-bottom: 2px; }
.nm-md { min-height: 56px; border-radius: 8px; background: var(--nm-hover); padding: 4px 3px; display: flex; flex-direction: column; align-items: center; gap: 3px; min-width: 0; }
.nm-md.fest { background: color-mix(in srgb, var(--nm-accent) 34%, var(--nm-card)); }
.nm-md.fuera { opacity: .38; }
.nm-md-n { font-size: 12px; font-weight: 600; width: 22px; height: 22px; display: grid; place-items: center; border-radius: 50%; flex: none; }
.nm-md.hoy .nm-md-n { background: var(--nm-primary); color: #fff; }
.nm-md .nm-chip { font-size: 10.5px; min-width: 70%; }

/* calendarios activos */
.nm-calgrupo + .nm-calgrupo { margin-top: 14px; }
.nm-calgrupo-m { font-size: 11px; text-transform: uppercase; letter-spacing: .07em; font-weight: 700; color: var(--nm-accent-ink); margin-bottom: 2px; }
.nm-calfila { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 7px 0; border-top: 1px solid var(--nm-line-soft); flex-wrap: wrap; }
.nm-calgrupo-m + .nm-calfila { border-top: 0; }
.nm-calfila-n { font-weight: 650; font-size: 14px; }

/* guardias de la semana */
.nm-semana { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.nm-sdia { background: var(--nm-hover); border-radius: 8px; padding: 8px; min-width: 0; min-height: 110px; }
.nm-sdia.fest { background: color-mix(in srgb, var(--nm-accent) 34%, var(--nm-card)); }
.nm-sdia.es-hoy { box-shadow: inset 0 0 0 2px var(--nm-primary); }
.nm-sdia-h { display: flex; align-items: baseline; gap: 4px; font-size: 12px; color: var(--nm-muted); margin-bottom: 6px; }
.nm-sdia-n { margin-left: auto; color: var(--nm-text); font-size: 16px; }
.nm-sdia.es-hoy .nm-sdia-n { color: var(--nm-primary); }
.nm-sdia .cal_span_special { font-size: 10px; font-weight: 700; color: var(--nm-text); background: var(--nm-card); border-radius: 4px; padding: 0 4px; white-space: nowrap; }
.nm-per { display: flex; align-items: center; gap: 6px; padding: 2px 0; font-size: 13px; min-width: 0; line-height: 1.35; }
.nm-per-cat { font-size: 10px; font-weight: 700; color: var(--nm-accent-ink); background: var(--nm-accent-soft); border-radius: 4px; padding: 0 4px; min-width: 28px; text-align: center; flex: none; }
.nm-per-nom { display: inline-flex; align-items: center; gap: 4px; min-width: 0; max-width: 100%; color: var(--nm-text); }
.nm-per-n { overflow: hidden; text-overflow: clip; white-space: nowrap; }
.nm-per.yo .nm-per-nom { color: var(--nm-primary); }
.nm-per.yo .nm-per-n { font-weight: 750; }
.nm-per-otra .nm-per-cat { color: var(--nm-primary); background: color-mix(in srgb, var(--nm-primary) 12%, transparent); }
.nm-per-otra .nm-per-nom { color: var(--nm-primary); }
.nm-sdia-vacio { color: var(--nm-muted); font-size: 13px; }
.nm-per .senior-guardia-star { color: inherit; font-size: .72em; text-shadow: none; }
.nm-per.guardia-imaginaria .nm-per-nom { color: #006fd6; }
.nm-per .guardia-imaginaria-icon { font-size: .78em; font-weight: bold; margin-left: 2px; color: #006fd6; }

/* avisos (los pinta resumen_notificaciones.php): sus cajas pasan a tarjetas */
#resumen-notificaciones:empty { display: none; }
#resumen-notificaciones .sep-white { float: none; margin: 4px 0 8px; }
#resumen-notificaciones .aside-element { float: none !important; background: var(--nm-card); border: 1px solid var(--nm-line); border-radius: var(--nm-radius); box-shadow: var(--nm-shadow); color: var(--nm-text); padding: 12px; margin: 0 0 18px; line-height: 1.45; }
#resumen-notificaciones .alert-item { background: var(--nm-hover); color: var(--nm-text); border-radius: 10px; }
#resumen-notificaciones .alert-item a { color: var(--nm-accent-ink); }
#resumen-notificaciones .nm-cambio-cabecera, #resumen-notificaciones .nm-cambio-pie { border-color: var(--nm-line); }
#resumen-notificaciones .nm-cambio-fecha { color: var(--nm-muted); }
#resumen-notificaciones .resumen-notificaciones-info { color: var(--nm-muted) !important; }

/* accesos (los mismos módulos que el menú) */
.nm-accesos-t { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--nm-muted); font-weight: 700; margin: 0 0 8px; font-family: var(--nm-font); line-height: 1.3; }
.nm-accesos-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.nm-acceso { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: var(--nm-card); border: 1px solid var(--nm-line); border-radius: var(--nm-radius); box-shadow: var(--nm-shadow); color: var(--nm-text) !important; font-weight: 600; font-size: 14px; line-height: 1.3; text-decoration: none !important; position: relative; transition: border-color .15s; }
.nm-acceso:hover { border-color: var(--nm-accent); }
/* palabras largas ("Incompatibilidades") partidas con guion en vez de salirse de la tarjeta */
.nm-acceso-l { min-width: 0; overflow-wrap: anywhere; -webkit-hyphens: auto; hyphens: auto; }
.nm-acceso-ic { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: var(--nm-accent-soft); color: var(--nm-accent-ink); flex: none; }
.nm-acceso .nm-etiqueta, .nm-acceso .nm-num { margin-left: auto; }
.nm-acceso .nm-num { background: var(--nm-primary); color: #fff; }

@media (max-width: 1100px) {
  .nm-resumen { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  .nm-pagina { padding: 14px 12px 40px !important; }
  .nm-hoy-items { width: 100%; display: grid; grid-template-columns: 1fr 1fr; }
  .nm-card-h { padding: 14px 14px 0; }
  .nm-card-b { padding: 12px 14px 14px; }
  /* la semana: un día debajo de otro, y la gente de tres en tres */
  .nm-semana { grid-template-columns: minmax(0, 1fr); }
  .nm-sdia { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 8px; min-height: 0; }
  .nm-sdia-h { flex-direction: column; align-items: flex-start; gap: 0; margin: 0; }
  .nm-sdia-n { margin-left: 0; }
  .nm-sdia-b { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2px 10px; align-content: center; }
  .nm-sdia { grid-template-columns: 44px minmax(0, 1fr); }
  /* el subgrupo encima del nombre: así el nombre tiene todo el ancho de su tercio */
  .nm-per { flex-direction: column; align-items: flex-start; gap: 1px; padding: 3px 0; }
  .nm-per-cat { min-width: 0; font-size: 9.5px; line-height: 1.4; }
  .nm-per-n { font-size: 12.5px; }
  .nm-per-nom { flex-wrap: nowrap; }
  .nm-accesos-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
}


/* =====================================================================================
   CABECERA DE PÁGINA (miga + título) Y OTRAS PIEZAS
   ===================================================================================== */
.nm-vhead { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.nm-miga { font-size: 13px; color: var(--nm-muted); line-height: 1.4; }
.nm-miga a { color: inherit !important; text-decoration: none !important; }
.nm-miga a:hover { color: var(--nm-accent-ink) !important; }
.nm-miga span { opacity: .6; margin: 0 2px; }
.nm-h1 { margin: 2px 0 0 !important; font: 700 24px/1.2 var(--nm-font) !important; letter-spacing: -.015em; color: var(--nm-text); }
.nm-ayuda { margin: 0 0 10px; color: var(--nm-muted); font-size: 13px; line-height: 1.4; }
.nm-seg { display: inline-flex; border: 1px solid var(--nm-line); border-radius: 8px; overflow: hidden; background: var(--nm-card); }
.nm-seg a { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px; color: var(--nm-text) !important; text-decoration: none !important; font-size: 14px; }
.nm-seg a + a { border-left: 1px solid var(--nm-line); }
.nm-seg a:hover { background: var(--nm-hover); }
.nm-seg a.activo { background: var(--nm-accent-soft); color: var(--nm-accent-ink) !important; font-weight: 650; }
.nm-error { margin-top: 18px; padding: 12px 16px; border-radius: var(--nm-radius); background: #fdecec; border: 1px solid #f3c2c2; color: #8b0000; font-weight: 600; line-height: 1.4; }
.nm-error > .fa-solid { float: left; margin: 2px 10px 0 0; }
:root[data-tema="oscuro"] .nm-error { background: #3a1416; border-color: #5a2226; color: #ff9b9b; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-error { background: #3a1416; border-color: #5a2226; color: #ff9b9b; } }


/* =====================================================================================
   TU CALENDARIO (tucalendario.php)
   El HTML del calendario lo pinta _showDay() y el JS de edición cuenta con él (los días son
   <li class="weekday|weekend"> dentro de <ul class="dates">, uno por semana): aquí sólo se le
   cambia el aspecto.
   ===================================================================================== */
.nm-tucal { display: grid; grid-template-columns: minmax(0, 1fr) 300px; grid-template-areas: "cal edit" "info edit"; grid-template-rows: auto 1fr; gap: 18px; align-items: start; }
.nm-tucal-main { grid-area: cal; min-width: 0; }
.nm-tucal-edit { grid-area: edit; min-width: 0; }
.nm-tucal-info { grid-area: info; min-width: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 18px; align-items: start; }
.nm-card-tucal .nm-card-h { justify-content: space-between; }
#echo_errores, #echo_info { margin: 0; }
#echo_errores:empty, #echo_info:empty { display: none; }

/* rejilla del mes */
.nm-card-tucal div#calendar ul.label, .nm-card-tucal div#calendar ul.dates { float: none; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; width: auto; margin: 0 0 4px; }
.nm-card-tucal div#calendar ul.label li { float: none; width: auto; margin: 0; background: transparent; color: var(--nm-muted); font-size: 12px; font-weight: 700; line-height: 24px; text-align: left; padding-left: 6px; }
.nm-card-tucal div#calendar ul.dates li { float: none; width: auto; margin: 0; border-radius: 8px; background: var(--nm-hover); color: var(--nm-text); min-height: 96px; padding: 5px; text-align: left; display: flex; flex-direction: column; gap: 4px; overflow: hidden; }
/* findes y festivos con el mismo tono que el calendario de Inicio (resumen.php, .nm-md.fest) */
.nm-card-tucal div#calendar ul.dates li.weekend { background: color-mix(in srgb, var(--nm-accent) 34%, var(--nm-card)); color: var(--nm-text); }
.nm-card-tucal div#calendar ul.dates li.outmonth { opacity: .4; background: var(--nm-hover); color: var(--nm-text); }
.nm-card-tucal div#calendar ul.dates li.hoy { box-shadow: inset 0 0 0 2px var(--nm-primary); }
.nm-card-tucal .date-num { float: none; width: auto; padding: 0; line-height: 1.4; font-size: 13px; font-weight: 600; text-align: left; display: flex; flex-direction: row-reverse; justify-content: flex-end; align-items: center; gap: 6px; }
.nm-card-tucal li.hoy .date-num { color: var(--nm-primary); }
.nm-card-tucal .date-num .cal_span_special { float: none; margin: 0; font-size: 10px; font-weight: 700; background: var(--nm-card); border-radius: 4px; padding: 0 4px; white-space: nowrap; }
/* OJO: el clic para poner un evento lo escucha .date-events (no el día entero), así que tiene que
   ocupar todo el hueco libre del día, también cuando está vacío */
.nm-card-tucal .date-events { float: none; width: auto; min-height: 30px; flex: 1 1 auto; display: flex; flex-direction: column; gap: 3px; border-radius: 4px; }
.nm-card-tucal .date-events-it { width: auto; margin: 0; border-radius: 4px; font-size: 11.5px; font-weight: 600; padding: 2px 6px; line-height: 1.3; white-space: normal; overflow-wrap: anywhere; text-align: left; position: relative; }
/* con un botón de la paleta elegido, los días se pueden pulsar */
.nm-tucal.editando #calendar ul.dates li:not(.outmonth) { cursor: pointer; }
.nm-tucal.editando #calendar ul.dates li:not(.outmonth):hover { box-shadow: inset 0 0 0 2px var(--nm-accent); }

/* paleta de "Editar": una lista, con la muestra de color de siempre (sus clases but_* son de type_eventos) */
#div_botones_editar.nm-paleta { display: flex; flex-direction: column; gap: 6px; }
.nm-paleta-op { display: flex; align-items: center; gap: 10px; padding: 4px 8px 4px 4px; border: 1px solid var(--nm-line); border-radius: 8px; cursor: pointer; background: var(--nm-card); }
.nm-paleta-op:hover { background: var(--nm-hover); }
.nm-paleta-op > div { margin: 0 !important; width: 36px !important; height: 26px; line-height: 22px !important; text-align: center; border-radius: 5px !important; font-weight: 700; font-size: 12px; flex: none; box-sizing: border-box; }
.nm-paleta-op > p { margin: 0; font-size: 13px; font-weight: 600 !important; cursor: pointer; flex: 1; color: var(--nm-text) !important; line-height: 1.3; }
.nm-paleta-op.activo { border-color: var(--nm-accent); box-shadow: 0 0 0 1px var(--nm-accent); background: var(--nm-accent-soft); }

/* peticiones sin guardia */
.nm-cupo + .nm-cupo { margin-top: 12px; }
.nm-cupo-l { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 4px; }
.nm-cupo-barra { height: 6px; background: var(--nm-hover); border-radius: 999px; overflow: hidden; }
.nm-cupo-barra span { display: block; height: 100%; background: darkblue; border-radius: 999px; }
.nm-cupo.lleno .nm-cupo-barra span { background: darkblue; }
.nm-cupo.pasado .nm-cupo-barra span { background: var(--nm-primary); }
.nm-cupo.pasado b { color: var(--nm-primary); }

/* estado del calendario */
.nm-estado { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; padding: 7px 0; font-size: 14px; }
.nm-estado + .nm-estado { border-top: 1px solid var(--nm-line-soft); }

/* modo tabla: la misma tabla que generador.php */
.nm-card-tucal .tabla_resp { border: 1px solid var(--nm-line); border-radius: 8px; }
.nm-card-tucal .tabla_resp table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 12px; margin: 0; }
.nm-card-tucal .tabla_resp th, .nm-card-tucal .tabla_resp td { border: 0 !important; border-right: 1px solid var(--nm-line-soft) !important; border-bottom: 1px solid var(--nm-line-soft) !important; padding: 0; text-align: center; height: 26px; }
.nm-card-tucal .tabla_resp #dayofweek td { font-weight: 700; }
.nm-card-tucal .tabla_resp #dayofweek td.dayweek { background: #ccc; color: #000; }
.nm-card-tucal .tabla_resp #dayofweek td.weekend { background: #7a7a7a; color: #fff; }
.nm-card-tucal .tabla_resp th, .nm-card-tucal .tabla_resp .transparent { background: var(--nm-card) !important; color: var(--nm-text); font-weight: 600; }
.nm-card-tucal .tabla_resp #tbody_principal td { height: 32px; font-weight: 700; }
.nm-card-tucal .tabla_resp .tu-apodo { text-align: left; padding: 0 10px; font-weight: 650; white-space: nowrap; color: var(--nm-text); }
/* el día antes y el de después de cada guardia: "aquí no cabe otra", en rojo lavado y rayado */
.nm-card-tucal #tbody_principal td.td_guardia_PRE, .nm-card-tucal #tbody_principal td.td_guardia_POST {
  background-color: #f7e2e2 !important;
  background-image: repeating-linear-gradient(135deg, rgba(160,0,0,.16) 0 3px, rgba(0,0,0,0) 3px 7px);
  color: transparent !important;
}
.nm-leyenda-gen { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 12px; font-size: 12px; color: var(--nm-muted); align-items: center; }
.nm-leyenda-gen > span { display: inline-flex; align-items: center; gap: 6px; }
.nm-muestra { display: inline-grid; place-items: center; width: 24px; height: 18px; border-radius: 3px; font-weight: 700; font-size: 11px; color: #fff; }
.nm-muestra-x { background: #bd0000; }
.nm-muestra-p { background: darkblue; }
.nm-muestra-prot { background-color: #f7e2e2; background-image: repeating-linear-gradient(135deg, rgba(160,0,0,.16) 0 3px, rgba(0,0,0,0) 3px 7px); }

@media (max-width: 1100px) {
  .nm-tucal { grid-template-columns: minmax(0, 1fr); grid-template-areas: "cal" "edit" "info"; grid-template-rows: auto; }
}
@media (max-width: 760px) {
  .nm-card-tucal div#calendar ul.label, .nm-card-tucal div#calendar ul.dates { gap: 2px; margin-bottom: 2px; }
  .nm-card-tucal div#calendar ul.label li { text-align: center; padding: 0; font-size: 11px; }
  .nm-card-tucal div#calendar ul.dates li { min-height: 58px; padding: 3px; border-radius: 6px; }
  .nm-card-tucal .date-num { font-size: 11px; flex-direction: column-reverse; align-items: flex-start; gap: 1px; }
  .nm-card-tucal .date-num .cal_span_special { font-size: 8.5px; padding: 0 2px; }
  /* en el móvil no cabe "Pedido sin guardia": se enseña la abreviatura del evento (P, V, C...) */
  .nm-card-tucal .date-events-it { font-size: 9.5px; padding: 1px 3px; text-align: center; }
  .nm-card-tucal .date-events-it[data-corto], .nm-card-tucal .nm-imp[data-corto] { font-size: 0; padding: 1px 3px; text-align: center; }
  .nm-card-tucal .date-events-it[data-corto]::before, .nm-card-tucal .nm-imp[data-corto]::before { content: attr(data-corto); font-size: 10px; }
  .nm-seg-txt { display: none; }
  .nm-seg a { padding: 0 10px; }
  /* mes, año y Calendario/Tabla en la misma línea */
  .nm-card-tucal .nm-card-h { flex-wrap: nowrap; gap: 6px; }
  .nm-card-tucal .nm-mesnav { gap: 3px; min-width: 0; }
  .nm-card-tucal .nm-mesnav .nm-btn-icono { width: 30px; }
  .nm-card-tucal .nm-sel { padding: 0 2px 0 6px; min-width: 0; }
  .nm-card-tucal #month-select { max-width: 112px; }
  .nm-card-tucal .nm-seg a { padding: 0 8px; }
  .nm-vhead .nm-h1 { font-size: 20px !important; }
}


/* =====================================================================================
   PLANNING (planning.php y verplanning.php)
   La tabla y su JS no cambian: aquí sólo su aspecto. Rejilla fina en vez de bordes negros de
   2px, cabeceras y nombres sobre la tarjeta, y en H Bellvitge el subgrupo de la guardia en rojo
   arriba a la izquierda (lo coloca nmEncajarEtiqueta(), en planning.php).
   ===================================================================================== */
:root { --nm-rejilla: #e3e7eb; --nm-finde: #eef1f4; --nm-finde-cab: #e4e8ec; --nm-diagonal-mar: #000; }
:root[data-tema="oscuro"] { --nm-rejilla: #2b323b; --nm-finde: #1b2128; --nm-finde-cab: #232a32; --nm-diagonal-mar: #c8cdd2; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] { --nm-rejilla: #2b323b; --nm-finde: #1b2128; --nm-finde-cab: #232a32; --nm-diagonal-mar: #c8cdd2; } }

/* la plantilla lo hace tan ancho como la ventana (100vw), y con el menú lateral se salía */
.nm-v2 .hoc.planning-wide-container, .nm-v2 .hoc.page-wide-container { width: auto; max-width: none; }
.nm-pagina.nm-pagina-plan { padding: 18px 18px 60px !important; }
body.nm-plan-ampliado .nm-lateral { display: none; }
body.nm-plan-ampliado { padding-left: 0 !important; }
body.nm-plan-ampliado .nm-top { margin-left: 0 !important; }

.nm-h1-tag { font-size: 13px; vertical-align: middle; padding: 2px 9px; border-radius: 999px; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font-weight: 650; letter-spacing: 0; margin-left: 4px; }
.nm-vhead-acc { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.nm-form-inline { display: inline; margin: 0; }
.nm-btn-oro { background: #c9a227; border-color: #c9a227; color: #fff !important; }
.nm-btn-oro:hover { background: #a8861c; }
.nm-aviso-caja { margin-bottom: 16px; }
.nm-aviso-caja p { padding: 10px 14px !important; border-radius: 10px; background: #fff3cd; border: 1px solid #f1d98a; color: #6b4e00; }
:root[data-tema="oscuro"] .nm-aviso-caja p { background: #3a2c0c; border-color: #5a4512; color: #f3c35a; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-aviso-caja p { background: #3a2c0c; border-color: #5a4512; color: #f3c35a; } }

/* filtros */
.nm-card-filtros { margin-bottom: 16px; }
.nm-card-filtros .nm-card-b { padding: 12px 16px; }
.nm-pagina-plan #filterForm { justify-content: flex-start; gap: 8px 10px; margin: 0; font-family: var(--nm-font); }
.nm-pagina-plan #filterForm > select { height: 34px; }
.nm-pagina-plan .multi-select { font-family: var(--nm-font); }
.nm-pagina-plan #filterForm .ms-btn { height: 34px; padding: 0 12px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); min-width: 200px; font-size: 14px; }
.nm-pagina-plan .ms-panel { background: var(--nm-card); border-color: var(--nm-line); color: var(--nm-text); }
.nm-pagina-plan .ms-item:hover { background: var(--nm-hover); }
.nm-buscar { display: inline-flex; align-items: center; gap: 6px; height: 34px; border: 1px solid var(--nm-line); border-radius: 8px; padding: 0 10px; background: var(--nm-card); color: var(--nm-muted); margin: 0; }
.nm-pagina-plan #filterForm .nm-buscar input[type="search"] { border: 0; outline: 0; background: transparent; color: var(--nm-text); width: 170px; height: 32px; padding: 0; margin: 0; font: 14px var(--nm-font); }
.nm-pagina-plan .planning-soloyo { height: 34px; font-size: 14px; color: var(--nm-text); }
.nm-pagina-plan .planning-rows-counter { color: var(--nm-muted); font-size: 13px; }

/* la tabla */
.nm-card-plan .nm-card-b { padding: 14px 16px 18px; }
.nm-pagina-plan .tabla_resp.tabla_resp_sticky { border: 1px solid var(--nm-line); border-radius: 8px; }
.nm-pagina-plan .tabla_planning { font-family: var(--nm-font); }
.nm-pagina-plan .tabla_planning th, .nm-pagina-plan .tabla_planning td,
.nm-pagina-plan .tabla_resp.tabla_resp_sticky .tabla_planning th, .nm-pagina-plan .tabla_resp.tabla_resp_sticky .tabla_planning td {
  border: 0 !important; border-right: 1px solid var(--nm-rejilla) !important; border-bottom: 1px solid var(--nm-rejilla) !important;
}
.nm-pagina-plan .tabla_planning th, .nm-pagina-plan .tabla_planning td { background-color: var(--nm-card); }
.nm-pagina-plan .tabla_planning th, .nm-pagina-plan .tabla_planning td:not([class*="td_but_"]) { color: var(--nm-text); }
.nm-pagina-plan .tabla_planning .transparent, .nm-pagina-plan .tabla_resp.tabla_resp_sticky .tabla_planning #dayofweek > :first-child { background-color: var(--nm-card) !important; border-color: var(--nm-card) !important; }
.nm-pagina-plan .tabla_planning #dayofweek td, .nm-pagina-plan .tabla_planning #dayofmonth th { font-weight: 650; font-size: 12px; color: var(--nm-muted); }
.nm-pagina-plan .tabla_planning #dayofweek td.weekend, .nm-pagina-plan .tabla_planning thead th.weekend { background-color: var(--nm-finde-cab) !important; color: var(--nm-muted); }
.nm-pagina-plan .tabla_planning #dayofweek td.dayweek, .nm-pagina-plan .tabla_planning thead th.dayweek { background-color: var(--nm-card) !important; }
.nm-pagina-plan .tabla_planning .headcol { background-color: var(--nm-card) !important; color: var(--nm-text); }
.nm-pagina-plan .tabla_planning td.td_weekend_plan:not([class*="td_but_"]) { background-color: var(--nm-finde) !important; }
/* la asistencia de cada día va sobre la tarjeta (en oscuro, oscura); los subgrupos con color propio
   (Bus, ICO, Tx, Vil) conservan su velo */
.nm-pagina-plan .tabla_planning td.td_asistencia_plan:not(.td_busca):not(.td_ICO):not(.td_trasplant):not(.td_viladecans):not([class*="nm-sg-"]):not([class*="nm-sgs-"]):not(.td_weekend_plan) { background-color: var(--nm-card) !important; color: var(--nm-text); }
/* la diagonal de la guardia de Hospital del Mar es negra: en oscuro, clara para que se vea */
.nm-pagina-plan .tabla_planning td.td_guardia_plan { background-image: linear-gradient(to bottom right, transparent calc(50% - 1px), var(--nm-diagonal-mar), transparent calc(50% + 1px)) !important; }

/* Un evento que no quita la asistencia (R, refuerzo de guardia) en día laborable: la asistencia se
   queda y encima va una diagonal roja con la letra arriba a la izquierda (como la guardia de Bellvitge) */
.nm-pagina-plan .tabla_planning td.td_marca_ev { position: relative; background-image: linear-gradient(to bottom right, transparent calc(50% - 0.7px), rgba(185, 0, 0, 0.7), transparent calc(50% + 0.7px)) !important; }
.nm-pagina-plan .tabla_planning td.td_marca_ev::after { content: attr(data-marca); position: absolute; top: 1px; left: 1px; font-size: 9.5px; line-height: 1; font-weight: 800; color: #bd0000; pointer-events: none; }
:root[data-tema="oscuro"] .nm-pagina-plan .tabla_planning td.td_marca_ev::after { color: #ff8a8a; }
.nm-pagina-plan .tabla_planning td.td_marca_ev.td_SES::after { left: 8px; } /* el punto de la sesión va en la misma esquina */

/* Evento de unas horas (tipos_evento_reglas.php, nmEventoHorasHtml): una raya abajo según las horas,
   sobre el día de 8 a 20, encima de un carril tenue. Sin raya = todo el día */
.nm-card-tucal .date-events-it .nm-horas-regla, .tabla_planning td .nm-horas-regla { position: absolute; left: 1px; right: 1px; bottom: 1px; height: 4px; border-radius: 2px; background: rgba(0,0,0,.07); pointer-events: none; z-index: 4; }
.nm-card-tucal .date-events-it .nm-horas, .tabla_planning td .nm-horas { position: absolute; bottom: 1px; height: 4px; border-radius: 2px; box-shadow: 0 0 0 1px var(--nm-card, #fff); pointer-events: none; z-index: 5; }
:root[data-tema="oscuro"] .tabla_planning td .nm-horas-regla { background: rgba(255,255,255,.12); }
/* Guardias, generador, Ver guardias, Tu calendario en tabla (horas_tablas.js): la misma raya, dibujada
   por el CSS para que no se pierda si la tabla reescribe la celda. Sobre un evento o una guardia
   (cualquier td_but_ salvo el rayado de antes/después de guardia) va en blanco */
/* Hasta tres eventos de unas horas el mismo día, cada uno con su raya (la 2 y la 3, si no hay, del color del carril) */
td[data-nm-horas] { position: relative; --nm-h-carril: rgba(0,0,0,.07); --nm-h-raya: var(--nm-h-color, #999);
  --nm-h-raya2: var(--nm-h-color2, var(--nm-h-carril)); --nm-h-raya3: var(--nm-h-color3, var(--nm-h-carril)); }
/* sólo ::before (carril y rayas, con un degradado): el ::after es de la etiqueta de la guardia del generador (td[data-etq]).
   Las rayas 2 y 3 empiezan 1px más tarde, para que se distingan si una acaba justo cuando empieza la otra */
td[data-nm-horas]::before { content: ""; position: absolute; left: 1px; right: 1px; bottom: 1px; height: 4px; border-radius: 2px; pointer-events: none; z-index: 5;
  --nm-h-a: calc(var(--nm-h-ini, 0) * 100%); --nm-h-b: max(calc(var(--nm-h-fin, 1) * 100%), calc(var(--nm-h-ini, 0) * 100% + 3px));
  --nm-h-a2: calc(var(--nm-h-ini2, 1) * 100% + 1px); --nm-h-b2: max(calc(var(--nm-h-fin2, 1) * 100%), calc(var(--nm-h-ini2, 1) * 100% + 4px));
  --nm-h-a3: calc(var(--nm-h-ini3, 1) * 100% + 1px); --nm-h-b3: max(calc(var(--nm-h-fin3, 1) * 100%), calc(var(--nm-h-ini3, 1) * 100% + 4px));
  background: linear-gradient(to right,
    var(--nm-h-carril) var(--nm-h-a), var(--nm-h-raya) var(--nm-h-a), var(--nm-h-raya) var(--nm-h-b), var(--nm-h-carril) var(--nm-h-b),
    var(--nm-h-carril) var(--nm-h-a2), var(--nm-h-raya2) var(--nm-h-a2), var(--nm-h-raya2) var(--nm-h-b2), var(--nm-h-carril) var(--nm-h-b2),
    var(--nm-h-carril) var(--nm-h-a3), var(--nm-h-raya3) var(--nm-h-a3), var(--nm-h-raya3) var(--nm-h-b3), var(--nm-h-carril) var(--nm-h-b3)); }
/* encima del propio evento o de una guardia (celdas con algo escrito), en blanco; no en el rayado de antes/después de la guardia */
td[data-nm-horas][class*="td_but_"]:not(:empty):not(.td_guardia_proteccion):not(.td_guardia_PRE):not(.td_guardia_POST) { --nm-h-raya: var(--nm-h-encima, rgba(255,255,255,.92));
  --nm-h-raya2: var(--nm-h-encima2, var(--nm-h-carril)); --nm-h-raya3: var(--nm-h-encima3, var(--nm-h-carril)); }
:root[data-tema="oscuro"] td[data-nm-horas] { --nm-h-carril: rgba(255,255,255,.12); }

/* Generador, paso 9 de puentes y navidades: el aviso al soltar una guardia con avisos (generadornew_puentes_calendar.js) */
.gn-aviso-arrastre { position: fixed; inset: 0; z-index: 10050; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(15, 18, 22, .45); }
.gn-aviso-arrastre[hidden] { display: none; }
.gn-aviso-arrastre-caja { width: min(480px, 100%); max-height: calc(100vh - 32px); overflow: auto; padding: 18px 18px 14px; border-radius: 14px; background: var(--nm-card, #fff); color: var(--nm-text, #1d2733); box-shadow: 0 18px 48px rgba(0,0,0,.28); font-family: var(--nm-font); }
.gn-aviso-arrastre-caja h3 { margin: 0 0 10px; font: 750 16px var(--nm-font); display: flex; align-items: center; gap: 8px; }
.gn-aviso-arrastre-caja h3 .fa-solid { color: #d98a00; }
.gn-aviso-arrastre-lista { margin: 0 0 10px; padding: 0 0 0 18px; display: grid; gap: 5px; font: 13.5px/1.45 var(--nm-font); }
.gn-aviso-arrastre-pie { margin: 0 0 14px !important; color: var(--nm-muted, #6b7785); font: 12.5px/1.45 var(--nm-font); }
.gn-aviso-arrastre-botones { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }

/* Tu calendario: el nombre, las horas debajo en pequeño y la raya abajo */
.nm-card-tucal .date-events-it.nm-con-horas { padding-bottom: 7px; }
.nm-card-tucal .date-events-it .nm-ev-horas { display: block; font-weight: 500; font-size: 10.5px; opacity: .92; }
.nm-card-tucal .date-events-it .nm-horas { box-shadow: none; }
@media (max-width: 760px) { .nm-card-tucal .date-events-it .nm-ev-horas { display: none; } } /* en el móvil sólo cabe la abreviatura: "C" y la raya */

/* H Bellvitge: texto de la celda a la derecha, y el subgrupo de la guardia arriba a la izquierda y en rojo */
.nm-hub .nm-pagina-plan #tbody_principal td:not(.headcol) { text-align: right; padding-right: 4px; }
.nm-pagina-plan .tabla_planning td.td_guardia_plan_hub { position: relative; }
.nm-pagina-plan .tabla_planning td.td_guardia_plan_hub > span:first-child { position: absolute; top: 1px; left: 1px; transform: none; transform-origin: 0 100%; font-size: 9.5px; line-height: 1; color: #bd0000 !important; font-weight: 800; white-space: nowrap; pointer-events: none; text-align: left; }
/* la estrella del Senior, del mismo color que el subgrupo y centrada con él */
.nm-pagina-plan .tabla_planning td.td_guardia_plan_hub > span:first-child { display: inline-flex; align-items: center; gap: 1px; }
.nm-pagina-plan .tabla_planning td.td_guardia_plan_hub > span:first-child .planning-guardia-senior-star { color: inherit !important; font-size: .85em; line-height: 1; display: block; }
.nm-pagina-plan .tabla_planning td.td_guardia_imaginaria_hub > span:first-child { color: #006fd6 !important; }

/* control de asistencias */
.nm-pagina-plan .planning-control { margin-top: 18px; font-family: var(--nm-font); }
.nm-pagina-plan .planning-control-title { color: var(--nm-text); font-size: 15px; font-weight: 650; }
.nm-pagina-plan .planning-control-legend { color: var(--nm-muted); }
.nm-pagina-plan .planning-control-scroll { border: 1px solid var(--nm-line); border-radius: 8px; }

/* barra de editar / leyenda */
.nm-pagina-plan .planning-editbar { justify-content: flex-start; margin-top: 14px; font-family: var(--nm-font); }
.nm-pagina-plan .planning-editbar-rotulo { color: var(--nm-muted); font-size: 11px; }
.nm-pagina-plan .planning-editbar-grupo { background: var(--nm-hover); border-color: var(--nm-line); border-radius: 10px; }
.nm-pagina-plan .planning-editbar-titulo { color: var(--nm-muted); font-size: 10px; }
.nm-pagina-plan .planning-editbar [class*="checked"] { outline-color: var(--nm-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--nm-accent) 30%, transparent); }
.nm-pagina-plan #echo_errores, .nm-pagina-plan #echo_info { margin: 0; }

@media (max-width: 760px) {
  .nm-pagina.nm-pagina-plan { padding: 12px 8px 40px !important; }
  .nm-vhead-acc { width: 100%; }
  .nm-vhead-acc #nmAmpliar { display: none; }
  .nm-pagina-plan #filterForm .nm-buscar input[type="search"] { width: 120px; }
  .nm-card-plan .nm-card-b, .nm-card-filtros .nm-card-b { padding: 10px; }
}

/* =====================================================================================
   INICIO: retoques (v2.0.0, 2.ª tanda)
   ===================================================================================== */
/* la plantilla le daba 254px fijos a #calendario-mini */
.nm-v2 #calendario-mini { width: auto; text-align: left; }

/* asistencia (la que dice el planning): blanca con un filo, y con el color de su módulo si lo tiene */
.nm-chip-asis { background: var(--nm-card); color: var(--nm-text); box-shadow: inset 0 0 0 1px #d7dce1; font-weight: 650; }
:root[data-tema="oscuro"] .nm-chip-asis { box-shadow: inset 0 0 0 1px #3a424c; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-chip-asis { box-shadow: inset 0 0 0 1px #3a424c; } }
.nm-chip-asis.td_ICO { background: color-mix(in srgb, #cc8800 14%, var(--nm-card)); }
.nm-chip-asis.td_busca { background: color-mix(in srgb, #0000D0 12%, var(--nm-card)); }
.nm-chip-asis.td_trasplant { background: color-mix(in srgb, #70b594 16%, var(--nm-card)); }
.nm-chip-asis.td_viladecans { background: color-mix(in srgb, #c73bb9 14%, var(--nm-card)); }

/* botones pequeños de sí / no */
.nm-btn-ok { color: #0a6b2b !important; border-color: #b9e0c4; background: #ecf8f0; }
.nm-btn-ok:hover { background: #dcf2e3; }
.nm-btn-no { color: #8b0000 !important; border-color: #f0c4c4; background: #fdf0f0; }
.nm-btn-no:hover { background: #fbe1e1; }
:root[data-tema="oscuro"] .nm-btn-ok { color: #7ee08f !important; border-color: #24452c; background: #12301a; }
:root[data-tema="oscuro"] .nm-btn-no { color: #ff9b9b !important; border-color: #5a2226; background: #3a1416; }
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] .nm-btn-ok { color: #7ee08f !important; border-color: #24452c; background: #12301a; }
  :root[data-tema="auto"] .nm-btn-no { color: #ff9b9b !important; border-color: #5a2226; background: #3a1416; }
}

/* AVISOS: tarjeta plegable debajo de los accesos */
.nm-avisos-cab { display: flex; align-items: center; gap: 10px; width: 100%; padding: 14px 18px; background: transparent; border: 0; color: var(--nm-text); font: 650 15px var(--nm-font); cursor: pointer; text-align: left; border-radius: var(--nm-radius); }
.nm-avisos-cab:hover { background: var(--nm-hover); }
.nm-avisos-ic { color: var(--nm-muted); }
.nm-avisos-cab .nm-num { background: var(--nm-primary); color: #fff; }
.nm-avisos-cab .nm-tenue { font-size: 13px; }
.nm-avisos-flecha { margin-left: auto; color: var(--nm-muted); font-size: 12px; }
.nm-avisos-cab[aria-expanded="true"] .nm-avisos-flecha { transform: rotate(180deg); }
.nm-avisos-cuerpo { padding: 0 18px 16px; }
.nm-avisos-cuerpo[hidden] { display: none; }
#resumen-notificaciones .nm-avisos-bloque { float: none !important; display: block; width: auto; background: transparent; border: 0; box-shadow: none; padding: 0; margin: 0 0 16px; line-height: 1.45; color: var(--nm-text); border-radius: 0; }
.nm-avisos-bloque-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 0 8px; border-top: 1px solid var(--nm-line-soft); margin-bottom: 6px; }
.nm-avisos-bloque:first-child .nm-avisos-bloque-h { border-top: 0; padding-top: 0; }
.nm-avisos-bloque-t { font-size: 11px; text-transform: uppercase; letter-spacing: .07em; font-weight: 700; color: var(--nm-muted); margin-right: auto; }
.nm-avisos-bloque-h .nm-btn, #resumen-notificaciones .alert-item .nm-btn { height: 28px; padding: 0 10px; font-size: 13px; }
/* cada aviso de un cambio en un calendario: una fila */
#resumen-notificaciones .alert-item.nm-aviso-ev { float: none; display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; width: auto; padding: 8px 10px; margin: 0 0 4px; background: var(--nm-hover); color: var(--nm-text); border-radius: 8px; font-size: 13.5px; }
.nm-aviso-ev-t { flex: 1 1 260px; min-width: 0; display: inline-flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.nm-aviso-ev-t .nm-chip { font-size: 11px; padding: 1px 6px; }
.nm-aviso-ev-dia { font-variant-numeric: tabular-nums; }
.nm-aviso-ev-links { font-size: 12.5px; color: var(--nm-muted); }
.nm-aviso-ev-links a { color: var(--nm-accent-ink) !important; }
.nm-aviso-ev-quien { font-size: 12px; color: var(--nm-muted); }
/* tarjetas de cambio de guardia */
#resumen-notificaciones .alert-item.nm-cambio { float: none; width: auto; background: var(--nm-hover); color: var(--nm-text); border-radius: 10px; padding: 12px 14px; margin: 0 0 8px; }
#resumen-notificaciones .nm-cambio .td_guardia { background: var(--nm-primary) !important; color: #fff !important; }
#resumen-notificaciones .nm-cambio-num { background: var(--nm-card); color: var(--nm-text); }
#resumen-notificaciones .nm-cambio-botones { gap: 6px; }
.nm-cambio-rechazado { margin: 0 0 6px; }
/* Cambio pendiente que ya no cuadra con el calendario (rojo) o que hay que mirar (amarillo) */
.nm-cambio-revision { margin: 8px 0 0; padding: 8px 10px; border-radius: 8px; border: 1px solid #f1d98a; background: #fff3cd; color: #6b4e00; font-size: 13px; line-height: 1.4; }
.nm-cambio-revision.es-stop { border-color: #f0b4b4; background: #fdecea; color: #7a0000; }
.nm-cambio-revision b { display: block; margin-bottom: 2px; }
.nm-cambio-revision ul { margin: 0; padding: 0 0 0 18px; }
:root[data-tema="oscuro"] .nm-cambio-revision { background: #3a2c0c; border-color: #5a4512; color: #f3c35a; }
:root[data-tema="oscuro"] .nm-cambio-revision.es-stop { background: #3a1416; border-color: #7a2a2a; color: #ffd6d6; }
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] .nm-cambio-revision { background: #3a2c0c; border-color: #5a4512; color: #f3c35a; }
  :root[data-tema="auto"] .nm-cambio-revision.es-stop { background: #3a1416; border-color: #7a2a2a; color: #ffd6d6; }
}
#resumen-notificaciones .resumen-notificaciones-pagination a, #resumen-notificaciones .resumen-notificaciones-pagination span { border-radius: 6px; }

/* =====================================================================================
   TU CALENDARIO: retoques (v2.0.0, 2.ª tanda)
   ===================================================================================== */
/* lo que dice el planning (saliente / libranza y asistencia por defecto): no es un evento tuyo */
.nm-implicitos { display: flex; flex-direction: column; gap: 3px; }
.nm-imp { border-radius: 4px; font-size: 11.5px; font-weight: 600; padding: 2px 6px; line-height: 1.3; overflow-wrap: anywhere; }
.nm-imp-asis, .nm-card-tucal .date-events-it.nm-asis { background-color: var(--nm-card) !important; color: var(--nm-text) !important; box-shadow: inset 0 0 0 1px #d7dce1; }
:root[data-tema="oscuro"] .nm-imp-asis, :root[data-tema="oscuro"] .nm-card-tucal .date-events-it.nm-asis { box-shadow: inset 0 0 0 1px #3a424c; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-imp-asis, :root[data-tema="auto"] .nm-card-tucal .date-events-it.nm-asis { box-shadow: inset 0 0 0 1px #3a424c; } }
.nm-imp-asis.td_ICO, .nm-card-tucal .date-events-it.nm-asis[data-corto="ICO"] { background-color: color-mix(in srgb, #cc8800 14%, var(--nm-card)) !important; color: #a86f00 !important; }
.nm-imp-asis.td_busca, .nm-card-tucal .date-events-it.nm-asis[data-corto="Bus"] { background-color: color-mix(in srgb, #0000D0 12%, var(--nm-card)) !important; color: #0000b0 !important; }
.nm-imp-asis.td_trasplant, .nm-card-tucal .date-events-it.nm-asis[data-corto="Tx"] { background-color: color-mix(in srgb, #70b594 16%, var(--nm-card)) !important; color: #3f8a66 !important; }
.nm-imp-asis.td_viladecans, .nm-card-tucal .date-events-it.nm-asis[data-corto="Vil"] { background-color: color-mix(in srgb, #c73bb9 14%, var(--nm-card)) !important; color: #a52e98 !important; }
/* si se pone a mano un evento que ocupa el día (vacaciones, un curso...), lo del planning se esconde
   ya, sin esperar a recargar (los pedidos sin guardia y las preferencias no lo ocupan) */
.nm-card-tucal li:has(.date-events-it[type_evento]:not([type_evento="P"]):not([type_evento="Pr"]):not([type_evento="1"])) .nm-implicitos { display: none; }

/* aviso al elegir un tipo de vacaciones */
.nm-info { display: flex; gap: 10px; align-items: flex-start; padding: 10px 14px; margin-bottom: 12px; border-radius: 10px; background: var(--nm-accent-soft); border: 1px solid color-mix(in srgb, var(--nm-accent) 35%, transparent); color: var(--nm-text); font-size: 13.5px; line-height: 1.45; }
.nm-info[hidden] { display: none; }
.nm-info > .fa-solid { color: var(--nm-accent-ink); margin-top: 3px; }
.nm-info p { margin: 0; }

/* vacaciones del año */
.nm-vac-total { font-size: 13px; font-weight: 700; padding: 2px 10px; border-radius: 999px; background: #e3f4e3; color: #006400; }
:root[data-tema="oscuro"] .nm-vac-total { background: #12301a; color: #7ee08f; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-vac-total { background: #12301a; color: #7ee08f; } }
.nm-vac-fila { display: flex; align-items: center; gap: 10px; padding: 6px 0; font-size: 14px; }
.nm-vac-fila + .nm-vac-fila { border-top: 1px solid var(--nm-line-soft); }
.nm-vac-fila .nm-chip { min-width: 30px; padding: 1px 6px; }
.nm-vac-fila b { margin-left: auto; }
.nm-enlace-mas { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; font-size: 13.5px; font-weight: 600; color: var(--nm-accent-ink) !important; text-decoration: none !important; }
.nm-enlace-mas:hover { text-decoration: underline !important; }

/* =====================================================================================
   MIS VACACIONES (vacaciones.php)
   ===================================================================================== */
.nm-vacpag { display: grid; grid-template-columns: minmax(0, 380px) minmax(0, 1fr); gap: 18px; align-items: start; }
.nm-vac-cero { opacity: .5; }
.nm-vac-nota { margin: 12px 0 0; display: flex; gap: 8px; }
.nm-vac-nota .fa-solid { margin-top: 3px; color: var(--nm-accent-ink); }
.nm-vac-mes + .nm-vac-mes { margin-top: 14px; }
.nm-vac-tramo { display: flex; align-items: center; gap: 10px; padding: 7px 0; font-size: 14px; border-top: 1px solid var(--nm-line-soft); flex-wrap: wrap; }
.nm-calgrupo-m + .nm-vac-tramo { border-top: 0; }
.nm-vac-tramo .nm-chip { min-width: 30px; padding: 1px 6px; }
.nm-vac-fechas { font-weight: 600; min-width: 130px; }
@media (max-width: 900px) { .nm-vacpag { grid-template-columns: minmax(0, 1fr); } }

/* Globo de información (tabla_globo.js) y avisos emergentes (showSnackbar), con la letra nueva.
   En el móvil, los avisos por encima de la barra de abajo. */
.nm-v2 .planning-tip { font-family: var(--nm-font); font-size: 12px; max-width: 280px; }
.nm-v2 .snackbar { font-family: var(--nm-font); }
.nm-v2 #snackbar-container { width: min(520px, calc(100vw - 32px)); }
@media (max-width: 900px) {
  .nm-v2 #snackbar-container { bottom: calc(var(--nm-abajo-h) + 14px + env(safe-area-inset-bottom)); }
}
#resumen-notificaciones .nm-chip-asis { padding: 1px 6px; }

/* =====================================================================================
   PLANNING: ajustes (v2.0.0, 2.ª tanda). Más parecido al prototipo D
   ===================================================================================== */
/* Bus, ICO, Tx y Vil: el velo de su color (lo tapaba el fondo de la tarjeta) */
.nm-pagina-plan .tabla_planning td.td_busca, .nm-pagina-plan .tabla_planning td.td_ICO,
.nm-pagina-plan .tabla_planning td.td_trasplant, .nm-pagina-plan .tabla_planning td.td_viladecans {
  background-color: color-mix(in srgb, currentColor 13%, var(--nm-card)) !important;
}
/* el texto de las celdas, en negrita */
.nm-pagina-plan #tbody_principal td:not(.headcol) { font-weight: 700; }

/* cabecera: la letra del día (pequeña, centrada) y el número (más marcado) */
.nm-pagina-plan .tabla_planning #dayofweek td { text-align: center !important; font-size: 10.5px; font-weight: 600; color: var(--nm-muted); }
.nm-pagina-plan .tabla_planning #dayofmonth th { text-align: center; font-size: 13px; font-weight: 750; color: var(--nm-text); border-bottom: 2px solid var(--nm-line) !important; }
.nm-pagina-plan .tabla_planning #dayofmonth th.headcol { text-align: left; font-size: 11px; font-weight: 700; color: var(--nm-muted); text-transform: uppercase; letter-spacing: .05em; }
/* el día de hoy, en rojo (con #id para ganar al fondo de laborables y fines de semana) */
.nm-pagina-plan .tabla_planning #dayofweek td.nm-dia-hoy, .nm-pagina-plan .tabla_planning #dayofmonth th.nm-dia-hoy { background-color: var(--nm-primary) !important; color: #fff !important; }

/* lista de gente: el nombre y detrás su subgrupo; tu fila, marcada en rojo */
.nm-pagina-plan #tbody_principal td.headcol { text-align: left; padding: 0 8px !important; white-space: nowrap; overflow: hidden; }
.nm-pnom { font-weight: 600; }
.nm-pagina-plan .planning-cat-abrev { float: none !important; font-size: 10px; font-weight: 700; color: var(--nm-accent-ink); background: var(--nm-accent-soft); padding: 0 5px; border-radius: 4px; margin-left: 6px; }
.nm-pagina-plan #tbody_principal td.headcol.nm-yo { box-shadow: inset 3px 0 0 var(--nm-primary), 1px 0 0 var(--nm-line); color: var(--nm-primary); }
.nm-pagina-plan #tbody_principal td.headcol.nm-yo .nm-pnom { font-weight: 750; }
/* cabeceras de grupo ("Módulo G · 9") */
.nm-pagina-plan .tabla_planning tr.nm-plan-grupo td { background-color: var(--nm-hover) !important; height: 26px; }
.nm-pagina-plan .tabla_planning td.nm-plan-grupo-t { font-size: 11.5px; font-weight: 700; text-align: left; padding: 0 8px !important; white-space: nowrap; color: var(--nm-text); }
.nm-plan-grupo-c { color: var(--nm-muted); font-weight: 500; }

/* Al pasar el ratón, la fila y la columna se rodean y sus cabeceras se pintan de rosa
   (td_pre_guardia, hover_tabla.js). Mis fondos de nombres y cabeceras lo tapaban (y dejaban
   la letra blanca sobre blanco): el rosa gana, también sobre el rojo de hoy y sobre tu fila. */
.nm-pagina-plan .tabla_planning .headcol.td_pre_guardia,
.nm-pagina-plan .tabla_planning #dayofweek td.td_pre_guardia, .nm-pagina-plan .tabla_planning #dayofmonth th.td_pre_guardia,
.nm-pagina-plan .tabla_planning thead .td_pre_guardia { background-color: #E6ADAD !important; color: #fff !important; }
.nm-pagina-plan .tabla_planning .headcol.td_pre_guardia .planning-cat-abrev { background: rgba(255,255,255,.35); color: #fff; }

/* "N personas", a la derecha */
.nm-pagina-plan .planning-quickfilters { flex: 1 1 auto; }
.nm-pagina-plan .planning-rows-counter { margin-left: auto; }

/* barra de editar: arriba, compacta, sólo con la abreviatura (el nombre sale al pasar el ratón) */
.nm-pagina-plan .planning-editbar { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 18px; margin: 0 0 12px !important; float: none !important; width: auto !important; }
.nm-pagina-plan .planning-editbar-rotulo { width: auto; margin: 0 4px 3px 0; font-size: 11px; color: var(--nm-text); letter-spacing: .08em; align-self: flex-end; }
.nm-pagina-plan .planning-editbar-grupo { padding: 0; border: 0; background: transparent; }
.nm-pagina-plan .planning-editbar-titulo { font-size: 10px; margin-bottom: 4px; }
/* (la barra lleva la clase vieja child_inline, que pone todos sus div en inline-block) */
.nm-pagina-plan .planning-editbar .planning-editbar-grupo { display: block !important; }
.nm-pagina-plan .planning-editbar .planning-editbar-items { display: flex !important; flex-wrap: wrap; gap: 4px; }
.nm-pagina-plan .planning-editbar .planning-editbar-item { margin: 0; display: flex !important; }
.nm-pagina-plan .planning-editbar-item > p { display: none; }
.nm-pagina-plan .planning-editbar-item > div { width: 32px !important; height: 26px; line-height: 22px !important; margin: 0 !important; border-radius: 5px !important; text-align: center; font-size: 11.5px; font-weight: 700; box-sizing: border-box; cursor: pointer; }

/* CONTROL DE ASISTENCIAS: oscuro, como antes. Son recuentos, no personas: así se distingue de
   un vistazo de la tabla de arriba, y los avisos (rosa: nadie; naranja: por debajo del mínimo)
   resaltan más. Igual en modo claro y oscuro. */
/* control de asistencias: oscuro, en la línea del resto (ver al final del fichero) */

/* =====================================================================================
   TU CALENDARIO: eventos con observaciones (vista Calendario)
   Al pasar el ratón el evento se levanta un poco (antes se oscurecía al 50 %) y sale un
   bocadillo en la esquina; si ya tiene observación, un globo la enseña encima.
   ===================================================================================== */
.date-events-it.nm-ev-hover { cursor: pointer; box-shadow: 0 0 0 2px var(--nm-card), 0 0 0 3.5px var(--nm-text), 0 3px 8px rgba(0,0,0,.18); transform: translateY(-1px); }
.date-events-it .comment-icon-event {
  position: absolute; z-index: 10; top: -7px; right: -7px;
  width: 18px; height: 18px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--nm-text); color: var(--nm-card); font-size: 10px; line-height: 1;
  box-shadow: 0 1px 4px rgba(0,0,0,.3); pointer-events: none;
}
.date-events-it[comentario]:not([comentario=""]) .comment-icon-event { background: var(--nm-primary); color: #fff; }
/* el bocadillo sale por la esquina: el día no lo recorta mientras se pasa el ratón por encima */
.nm-card-tucal div#calendar ul.dates li:has(.nm-ev-hover) { overflow: visible; position: relative; z-index: 3; }
/* vacaciones que cuentan para el año anterior: "Vacaciones · 2026" */
.date-events-it[data-cupo]::after { content: " · " attr(data-cupo); font-size: 10.5px; font-weight: 800; opacity: .85; }
.nm-obs-globo {
  position: absolute; z-index: 1000; max-width: 240px; padding: 7px 10px; border-radius: 8px;
  background: #1c1f23; color: #fff; font: 500 12px/1.4 Inter, system-ui, sans-serif;
  box-shadow: 0 6px 18px rgba(0,0,0,.25); white-space: pre-wrap; overflow-wrap: anywhere; pointer-events: none;
}
.nm-obs-globo b { display: block; font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #ffb3b3; margin-bottom: 2px; }
.nm-obs-globo::after { content: ""; position: absolute; left: 50%; bottom: -5px; margin-left: -5px; border: 5px solid transparent; border-bottom: 0; border-top-color: #1c1f23; }
:root[data-tema="oscuro"] .nm-obs-globo { background: #f1f3f5; color: #15181b; }
:root[data-tema="oscuro"] .nm-obs-globo::after { border-top-color: #f1f3f5; }
:root[data-tema="oscuro"] .nm-obs-globo b { color: var(--nm-primary); }
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] .nm-obs-globo { background: #f1f3f5; color: #15181b; }
  :root[data-tema="auto"] .nm-obs-globo::after { border-top-color: #f1f3f5; }
  :root[data-tema="auto"] .nm-obs-globo b { color: var(--nm-primary); }
}

/* =====================================================================================
   PLANNING: 3.ª tanda
   ===================================================================================== */
/* Barra de editar: Vil, ICO, Bus y Tx con su color, como en la tabla */
.nm-pagina-plan #div_botones .nm-tono-Vil { background-color: color-mix(in srgb, #c73bb9 14%, var(--nm-card)) !important; color: #a52e98 !important; border-color: color-mix(in srgb, #c73bb9 45%, var(--nm-card)) !important; }
.nm-pagina-plan #div_botones .nm-tono-ICO { background-color: color-mix(in srgb, #cc8800 14%, var(--nm-card)) !important; color: #a86f00 !important; border-color: color-mix(in srgb, #cc8800 45%, var(--nm-card)) !important; }
.nm-pagina-plan #div_botones .nm-tono-Bus { background-color: color-mix(in srgb, #0000D0 12%, var(--nm-card)) !important; color: #0000b0 !important; border-color: color-mix(in srgb, #0000D0 40%, var(--nm-card)) !important; }
.nm-pagina-plan #div_botones .nm-tono-Tx { background-color: color-mix(in srgb, #70b594 16%, var(--nm-card)) !important; color: #3f8a66 !important; border-color: color-mix(in srgb, #70b594 50%, var(--nm-card)) !important; }
:root[data-tema="oscuro"] .nm-pagina-plan #div_botones [class*="nm-tono-"] { filter: brightness(1.35); }
/* marcado: un anillo oscuro alrededor (vale para todos los botones de la barra) */
.nm-pagina-plan #div_botones [class*="checked"], .nm-pagina-plan #div_botones .nm-guardia-tool.on { box-shadow: 0 0 0 2px var(--nm-card), 0 0 0 4px var(--nm-text); }

/* Barra de editar: guardias, con la pinta de la celda de guardia */
.nm-pagina-plan .nm-guardia-tool { position: relative; width: 32px; height: 26px; border-radius: 5px; box-sizing: border-box; cursor: pointer; border: 1px solid var(--nm-line); background-color: #fff; color: #000; font-size: 11px; font-weight: 800; }
.nm-pagina-plan .nm-guardia-tool.nm-g-mar { background-image: linear-gradient(to bottom right, transparent calc(50% - 1px), #000, transparent calc(50% + 1px)); }
.nm-pagina-plan .nm-guardia-tool.nm-g-hub { background-color: #fffbe9; background-image: linear-gradient(to bottom right, #ffec9e50 calc(50% - .7px), rgba(185, 0, 0, .7), #ffec9e50 calc(50% + .7px)); }
.nm-pagina-plan .nm-guardia-tool > span { position: absolute; top: 1px; left: 3px; line-height: 1.1; white-space: nowrap; }
.nm-pagina-plan .nm-guardia-tool.nm-g-hub > span { color: #bd0000; }
.nm-pagina-plan .nm-guardia-tool.nm-g-mar > span { background: #fff; padding: 0 2px; border-radius: 2px; }
.nm-pagina-plan .nm-guardia-tool:hover { filter: brightness(.95); }
/* la celda donde se va a poner la guardia */
.nm-pagina-plan .tabla_planning td.nm-pre-guardia { box-shadow: inset 0 0 0 2px #bd0000; cursor: pointer; }

/* Control de asistencias: oscuro, pero con la letra, los radios y las líneas finas del resto */
.nm-pagina-plan .planning-control { --cc-fondo: #1d2125; --cc-celda: #262b30; --cc-finde: #21262b; --cc-cab: #2f353b; --cc-linea: rgba(255,255,255,.07); --cc-tenue: #9aa3ad;
  margin-top: 18px; border-radius: 12px; overflow: hidden; background: var(--cc-fondo); box-shadow: 0 1px 2px rgba(0,0,0,.08), 0 4px 14px rgba(0,0,0,.08); }
.nm-pagina-plan .planning-control-title { background: transparent; color: #fff; padding: 12px 14px 10px; margin: 0; border-radius: 0; font-size: 14px; font-weight: 700; letter-spacing: .01em; gap: 6px 14px; }
.nm-pagina-plan .planning-control-legend { color: var(--cc-tenue); font-size: 11.5px; gap: 4px 8px; }
.nm-pagina-plan .planning-control-legend-item { border-radius: 5px; min-width: 20px; line-height: 18px; }
.nm-pagina-plan .planning-control-scroll { border: 0; border-top: 1px solid var(--cc-linea); border-radius: 0; }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) th, .nm-pagina-plan :is(#planningControlTable, .planning-control-table) td { background-color: var(--cc-celda); color: #e9ecef; border: 0 !important; border-right: 1px solid var(--cc-linea) !important; border-bottom: 1px solid var(--cc-linea) !important; font-weight: 700; font-size: 12px; text-align: center; height: 24px; }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) tbody th.td_weekend_plan { background-color: var(--cc-finde) !important; color: #7d8792; }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) thead th { background-color: var(--cc-cab) !important; color: #c9d0d7 !important; font-weight: 650; font-size: 11.5px; height: 30px; }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) thead th.weekend { background-color: #2a3640 !important; color: #8fc7dd !important; }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) thead th.headcol, .nm-pagina-plan :is(#planningControlTable, .planning-control-table) tbody th.headcol { background-color: var(--cc-fondo) !important; color: #fff; text-align: left; padding: 0 10px; font-size: 12px; }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) thead th.headcol { color: var(--cc-tenue) !important; font-size: 10.5px; text-transform: uppercase; letter-spacing: .06em; }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) .planning-control-dayname { color: inherit; opacity: .6; font-size: 9px; font-weight: 600; }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) .planning-control-min { background: rgba(255,216,168,.16); color: #ffc887; border-radius: 4px; }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) .planning-control-min-edit { color: var(--cc-tenue); }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) .planning-control-min-edit:hover { color: #fff; }
/* los avisos, como pastillas dentro de la celda */
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) th.planning-control-zero { background-color: var(--cc-celda) !important; color: #fff !important; box-shadow: inset 0 0 0 3px var(--cc-celda), inset 0 0 0 20px #d23b3b; }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) th.planning-control-below-min { background-color: var(--cc-celda) !important; color: #3a2100 !important; box-shadow: inset 0 0 0 3px var(--cc-celda), inset 0 0 0 20px #f0a34a; }
.nm-pagina-plan .planning-control-legend-item.planning-control-zero { background-color: #d23b3b !important; color: #fff; }
.nm-pagina-plan .planning-control-legend-item.planning-control-below-min { background-color: #f0a34a !important; color: #3a2100; }
/* por encima del máximo: azul, para no confundirlo con el mínimo (naranja) ni con el cero (rojo) */
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) th.planning-control-above-max { background-color: var(--cc-celda) !important; color: #fff !important; box-shadow: inset 0 0 0 3px var(--cc-celda), inset 0 0 0 20px #4c7fe0; }
.nm-pagina-plan .planning-control-legend-item.planning-control-above-max { background-color: #4c7fe0 !important; color: #fff; }
/* al pasar el ratón por el planning, la columna del día también se marca aquí */
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) .td_pre_guardia { background-color: #6b3a3a !important; color: #fff !important; }
.nm-pagina-plan :is(#planningControlTable, .planning-control-table) th.nm-cc-cero:not(.planning-control-zero):not(.planning-control-below-min):not(.planning-control-above-max) { color: #5d6670; }
/* Guardias: DP y Tx (eventos que cuentan como guardia) y la goma para quitar guardias */
.nm-pagina-plan .nm-guardia-tool.nm-g-evento > span { color: #7a0040; }
.nm-pagina-plan .nm-guardia-tool.nm-g-quitar { display: flex; align-items: center; justify-content: center; background: var(--nm-card); color: #bd0000; border-color: color-mix(in srgb, #bd0000 45%, var(--nm-card)); font-size: 12px; }
.nm-pagina-plan .nm-guardia-tool.nm-g-quitar > span { position: static; }
.nm-pagina-plan .tabla_planning td.nm-pre-quitar { box-shadow: inset 0 0 0 2px #bd0000; cursor: pointer; opacity: .55; }

/* =====================================================================================
   GENERADOR DE GUARDIAS (generador.php)
   Usa lo del planning (.nm-pagina-plan: filtros, tabla, barra de editar y control oscuro);
   aquí va sólo lo suyo: la tabla con cabecera fija de .tabla_sticky, los contadores de
   Min/Max-Total-Fest-Pre, los huecos restantes y el pie.
   ===================================================================================== */
.nm-h1-tag-prov { background: #fff1db; color: #a35a00; }
.nm-h1-tag-pruebas { background: #dcf6f7; color: #0b7a80; }
.nm-btn-rojo { background: #bd0000; border-color: #bd0000; color: #fff !important; }
.nm-btn-rojo:hover { background: #9a0000; }
.nm-btn-naranja { background: #e68a00; border-color: #e68a00; color: #fff !important; }
.nm-btn-peligro { color: #bd0000 !important; border-color: color-mix(in srgb, #bd0000 40%, var(--nm-line)); }
.nm-btn-peligro:hover { background: color-mix(in srgb, #bd0000 8%, var(--nm-card)); }

.nm-gen-modo p { margin: 0 0 10px; font-size: 13px; color: var(--nm-muted); }
.nm-gen-modo p.hide { display: none; }

/* la tabla: las celdas pegajosas de .tabla_sticky llevaban blanco fijo */
.nm-pagina-gen .tabla_sticky { border: 1px solid var(--nm-line); border-radius: 8px; }
.nm-pagina-gen .tabla_sticky #tabla_main tbody .headcol,
.nm-pagina-gen .tabla_sticky #tabla_main #month_and_year > .transparent,
.nm-pagina-gen .tabla_sticky #tabla_main #dayofweek > .transparent { background-color: var(--nm-card) !important; }
.nm-pagina-gen .tabla_sticky #tabla_main th, .nm-pagina-gen .tabla_sticky #tabla_main td { border: 0 !important; border-right: 1px solid var(--nm-rejilla) !important; border-bottom: 1px solid var(--nm-rejilla) !important; }
.nm-pagina-gen #tabla_main #month_and_year th:not(.transparent) { border-radius: 6px 6px 0 0; font-size: 11px; }
.nm-pagina-gen #tabla_main #dayofweek td.dayweek { background-color: var(--nm-card) !important; }
.nm-pagina-gen #tabla_main #dayofmonth th.headcol { text-align: left; padding: 0 8px; }
/* los fines de semana y festivos sin evento, en gris suave (como en el planning) */
.nm-pagina-gen #tbody_principal td.weekend:not([class*="td_but_"]):not(.td_guardia_proteccion) { background-color: var(--nm-finde) !important; }
/* el texto de las celdas no va a la derecha en H Bellvitge (eso es del planning) */
.nm-hub .nm-pagina-gen #tbody_principal td:not(.headcol) { text-align: center; padding-right: 0; }

/* Min/Max, Total, Fest y Pre: cabeceras discretas y los números como pastillas */
.nm-pagina-gen #tabla_main th.nm-gen-cab { font-size: 10px; font-weight: 650; line-height: 1.05; color: var(--nm-muted) !important; background-color: var(--nm-card) !important; }
.nm-pagina-gen #tabla_main th.nm-gen-cab-v { writing-mode: vertical-lr; transform: rotate(180deg); padding: 4px 0; }
.nm-pagina-gen #tbody_principal td.td_nguardias { background-color: var(--nm-card) !important; padding: 0 2px; }
.nm-pagina-gen #tbody_principal td.td_nguardias p { margin: 0; border-radius: 4px; font-size: 11px; font-weight: 700; line-height: 18px; background: color-mix(in srgb, #bd0000 10%, var(--nm-card)); color: #a30000; }
.nm-pagina-gen #tbody_principal td.td_minmax { background-color: #cfd5dc !important; }
.nm-pagina-gen #tbody_principal td.td_minmax p#n_min_max { background: transparent; color: #3d4752; font-weight: 700; font-size: 10.5px; }
:root[data-tema="oscuro"] .nm-pagina-gen #tbody_principal td.td_minmax { background-color: #323a43 !important; }
:root[data-tema="oscuro"] .nm-pagina-gen #tbody_principal td.td_minmax p#n_min_max { color: #d3dae1; }
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] .nm-pagina-gen #tbody_principal td.td_minmax { background-color: #323a43 !important; }
  :root[data-tema="auto"] .nm-pagina-gen #tbody_principal td.td_minmax p#n_min_max { color: #d3dae1; }
}
:root[data-tema="oscuro"] .nm-pagina-gen #tbody_principal td.td_nguardias p:not(#n_min_max) { color: #ff9b9b; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-pagina-gen #tbody_principal td.td_nguardias p:not(#n_min_max) { color: #ff9b9b; } }

/* #Huecos restantes: lo que falta, en verde claro; lo que sobra, en rojo; lo cubierto, apagado */
.nm-pagina-gen .planning-control-table th.td_incomplete { color: #1b4d22 !important; box-shadow: inset 0 0 0 3px var(--cc-celda), inset 0 0 0 20px #bfe8c4; font-size: 12px; }
.nm-pagina-gen .planning-control-table th.td_overcomplete { color: #fff !important; box-shadow: inset 0 0 0 3px var(--cc-celda), inset 0 0 0 20px #d23b3b; font-size: 12px; }
.nm-pagina-gen .planning-control-table th[daynum]:not(.td_incomplete):not(.td_overcomplete) { color: #5d6670; }
.nm-pagina-gen .planning-control-table th[daynum] p { margin: 0; }

/* pie */
.nm-gen-pie { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--nm-line-soft); font-family: var(--nm-font); }
.nm-gen-limite { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--nm-text); margin: 0; }
.nm-gen-limite .nm-sel { height: 32px; }
.nm-gen-pie-acc { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.nm-gen-pie-acc .hide { display: none !important; }
.nm-pagina-gen #echo_info { margin: 8px 0 0; }
/* la fila de "Provisional" / "Modo pruebas" encima de los días: ya lo dice el título */
.nm-pagina-gen #tabla_main #month_and_year { display: none; }
/* al pasar el ratón: el nombre, sus contadores y la cabecera del día, en rosa (como en el
   planning). Las reglas de arriba que dan el fondo a esas celdas lo tapaban */
.nm-pagina-gen #tabla_main #tbody_principal td.td_pre_guardia,
.nm-pagina-gen #tabla_main #dayofweek > td.td_pre_guardia,
.nm-pagina-gen #tabla_main #dayofmonth > th.td_pre_guardia { background-color: #E6ADAD !important; color: #fff !important; }
.nm-pagina-gen #tabla_main #tbody_principal td.td_pre_guardia .planning-cat-abrev { background: rgba(255,255,255,.35); color: #fff; }
.nm-pagina-gen #tabla_main #tbody_principal td.td_pre_guardia p#n_min_max { color: #fff; }

/* =====================================================================================
   GENERADOR 2.0 (generadornew_*.php)
   Mismo lenguaje que el generador y el planning (también llevan .nm-pagina-plan). Muchas
   tablas traen colores en línea (darkred, #4d4d4d, #ffc1c1...): por eso los !important.
   ===================================================================================== */
/* cabecera: miga, título del paso con "Paso N de T" y la barra de pasos */
.nm-gn-titulo { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 2px 0 16px; }
.nm-gn-titulo .nm-h1 { margin: 0 !important; }
.nm-gn-pasos { list-style: none; margin: 0 0 18px !important; padding: 0 !important; display: flex; gap: 2px; font-family: var(--nm-font); }
.nm-gn-pasos li { flex: 1 1 0; min-width: 0; position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; margin: 0; padding: 0; text-align: center; font-size: 11.5px; line-height: 1.25; color: var(--nm-muted); }
.nm-gn-pasos li::before { content: ""; position: absolute; top: 13px; left: calc(-50% + 17px); right: calc(50% + 17px); height: 2px; background: var(--nm-line); }
.nm-gn-pasos li:first-child::before { display: none; }
.nm-gn-pasos li.hecho::before, .nm-gn-pasos li.actual::before { background: #2f8f46; }
.nm-gn-num { position: relative; z-index: 1; width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; box-sizing: border-box; border: 2px solid var(--nm-line); background: var(--nm-card); color: var(--nm-muted); font-weight: 700; font-size: 12.5px; }
.nm-gn-pasos li.hecho .nm-gn-num { background: #2f8f46; border-color: #2f8f46; color: #fff; font-size: 11px; }
.nm-gn-pasos li.actual .nm-gn-num { background: var(--nm-primary); border-color: var(--nm-primary); color: #fff; box-shadow: 0 0 0 4px color-mix(in srgb, var(--nm-primary) 18%, transparent); }
.nm-gn-pasos li.hecho .nm-gn-nom { color: var(--nm-text); }
.nm-gn-pasos li.actual .nm-gn-nom { color: var(--nm-text); font-weight: 700; }
@media (max-width: 760px) { .nm-gn-nom { display: none; } }

/* bloques de contenido: tarjetas */
.nm-pagina-gn ul.group.elements { margin: 0 0 16px !important; padding: 0 !important; }
.nm-pagina-gn ul.group.elements > li { width: 100% !important; float: none !important; margin: 0 !important; }
.nm-pagina-gn ul.group.elements > li > article { background: var(--nm-card) !important; color: var(--nm-text); border: 1px solid var(--nm-line); border-radius: 12px; box-shadow: 0 1px 2px rgba(0,0,0,.04); padding: 16px !important; margin: 0 !important; text-align: left; }
.nm-pagina-gn ul.group.elements > li > article > .barra_botones,
.nm-pagina-gn ul.group.elements > li > article .gn-barra { justify-content: center; }
.nm-pagina-gn .sectiontitle:not(.nm-oculto) { color: var(--nm-text); }

/* tablas: líneas finas y cabeceras discretas */
.nm-pagina-gn .tabla_resp { border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); }
.nm-pagina-gn .tabla_resp table { font-family: var(--nm-font); border-collapse: separate; border-spacing: 0; margin: 0; }
.nm-pagina-gn .tabla_resp th, .nm-pagina-gn .tabla_resp td,
.nm-pagina-gn table.gn-tabla th, .nm-pagina-gn table.gn-tabla td { border: 0 !important; border-right: 1px solid var(--nm-rejilla) !important; border-bottom: 1px solid var(--nm-rejilla) !important; }
.nm-pagina-gn .tabla_resp th, .nm-pagina-gn .tabla_resp thead td,
.nm-pagina-gn table.gn-tabla th { background-color: var(--nm-card) !important; color: var(--nm-text) !important; font-weight: 650; font-size: 12px; }
.nm-pagina-gn .tabla_resp th.transparent, .nm-pagina-gn .tabla_resp .transparent { background-color: var(--nm-card) !important; border-color: transparent !important; }
.nm-pagina-gn .tabla_resp #month_and_year th { font-size: 14px; font-weight: 700; text-align: center; }
.nm-pagina-gn .tabla_resp #dayofweek td, .nm-pagina-gn .tabla_resp #dayofweek th { color: var(--nm-muted) !important; font-size: 10.5px; font-weight: 600; text-align: center; }
.nm-pagina-gn .tabla_resp #dayofmonth th { font-size: 13px; font-weight: 750; border-bottom: 2px solid var(--nm-line) !important; }
.nm-pagina-gn .tabla_resp thead .weekend { background-color: var(--nm-finde-cab) !important; color: var(--nm-muted) !important; }
.nm-pagina-gn .tabla_resp th.headcol { text-align: left; padding: 0 8px !important; color: var(--nm-muted) !important; font-size: 11px; text-transform: uppercase; letter-spacing: .05em; }
.nm-pagina-gn .tabla_resp th[name="total_guardias"], .nm-pagina-gn .tabla_resp th[name="fest_guardias"], .nm-pagina-gn .tabla_resp th[name="prefest_guardias"] { color: var(--nm-muted) !important; font-size: 10px !important; font-weight: 650 !important; }
.nm-pagina-gn table.gn-tabla th { text-transform: uppercase; font-size: 11px; letter-spacing: .04em; color: var(--nm-muted) !important; }
/* el nombre de cada fila */
.nm-pagina-gn #tbody_principal td.headcol { background-color: var(--nm-card) !important; color: var(--nm-text); text-align: left; padding: 0 8px !important; white-space: nowrap; overflow: hidden; }
.nm-gn-fila { display: inline-flex; align-items: center; gap: 6px; }
.nm-gn-fila .planning-cat-abrev { order: 2; font-size: 10px; font-weight: 700; color: var(--nm-accent-ink); background: var(--nm-accent-soft); padding: 0 5px; border-radius: 4px; }
.nm-gn-fila .nm-gn-sep { order: 3; font-size: 0; }
.nm-gn-fila .nm-pnom { order: 1; font-weight: 600; }
/* fines de semana y festivos sin evento */
.nm-pagina-gn #tbody_principal td.weekend:not([class*="td_but_"]) { background-color: var(--nm-finde) !important; }
/* el día antes y el de después de una guardia: rojo lavado y rayado, como en el generador */
.nm-pagina-gn #tbody_principal td.true_periX_noDELETE,
.nm-pagina-gn #tbody_principal td.td_but_14X:empty:not(.td_nguardias),
.nm-pagina-gn #tbody_principal td.td_guardia_PRE:empty, .nm-pagina-gn #tbody_principal td.td_guardia_POST:empty {
  background-color: #f7e2e2 !important;
  background-image: repeating-linear-gradient(135deg, rgba(160,0,0,.16) 0 3px, rgba(0,0,0,0) 3px 7px) !important;
  color: transparent !important;
}
:root[data-tema="oscuro"] .nm-pagina-gn #tbody_principal td.true_periX_noDELETE,
:root[data-tema="oscuro"] .nm-pagina-gn #tbody_principal td.td_but_14X:empty:not(.td_nguardias) { background-color: #3a2427 !important; background-image: repeating-linear-gradient(135deg, rgba(255,120,120,.22) 0 3px, rgba(0,0,0,0) 3px 7px) !important; }
/* contadores (Total, Fest, Pre...) como pastillas */
.nm-pagina-gn #tbody_principal td.td_nguardias { background-color: var(--nm-card) !important; padding: 0 2px; }
.nm-pagina-gn #tbody_principal td.td_nguardias p { margin: 0; border-radius: 4px; font-size: 11px; font-weight: 700; line-height: 18px; background: color-mix(in srgb, #bd0000 10%, var(--nm-card)) !important; color: #a30000 !important; }
:root[data-tema="oscuro"] .nm-pagina-gn #tbody_principal td.td_nguardias p { color: #ff9b9b !important; }
.nm-pagina-gn #tbody_principal td.td_minmax { background-color: #cfd5dc !important; }
.nm-pagina-gn #tbody_principal td.td_minmax p { background: transparent !important; color: #3d4752 !important; }
:root[data-tema="oscuro"] .nm-pagina-gn #tbody_principal td.td_minmax { background-color: #323a43 !important; }
:root[data-tema="oscuro"] .nm-pagina-gn #tbody_principal td.td_minmax p { color: #d3dae1 !important; }
/* al pasar el ratón: el nombre, sus contadores y la cabecera del día, en rosa */
.nm-pagina-gn .tabla_resp #tbody_principal td.td_pre_guardia,
.nm-pagina-gn .tabla_resp #dayofweek > .td_pre_guardia,
.nm-pagina-gn .tabla_resp #dayofmonth > .td_pre_guardia { background-color: #E6ADAD !important; color: #fff !important; }
.nm-pagina-gn .tabla_resp #tbody_principal td.td_pre_guardia .planning-cat-abrev { background: rgba(255,255,255,.35); color: #fff; }
/* #huecos restantes dentro de las tablas de los pasos: lo que falta, en verde claro */
.nm-pagina-gn .tabla_resp .td_incomplete { background-color: #c8ecca !important; color: #1b4d22 !important; }
.nm-pagina-gn .tabla_resp .td_overcomplete { background-color: #f6c9c9 !important; color: #8a1010 !important; }
/* botones pequeños de las tablas (Ver, Continuar, Eliminar...) */
.nm-pagina-gn .smallbutton-grey { display: inline-flex; align-items: center; gap: 5px; background: var(--nm-card) !important; color: var(--nm-text) !important; border: 1px solid var(--nm-line) !important; border-radius: 6px !important; padding: 3px 9px !important; font: 600 12px/1.3 var(--nm-font) !important; box-shadow: none !important; cursor: pointer; }
.nm-pagina-gn .smallbutton-grey:hover { background: var(--nm-hover) !important; }
.nm-pagina-gn .smallbutton-grey.hoverred { color: #bd0000 !important; }
.nm-pagina-gn .smallbutton-grey.hoverred:hover { background: color-mix(in srgb, #bd0000 8%, var(--nm-card)) !important; }
/* tablas de resultados (elegir opción, resumen): sin cabeceras negras */
.nm-pagina-gn #tablaResultados table, .nm-pagina-gn .score-results-table { border-collapse: separate !important; border-spacing: 0; font-family: var(--nm-font); font-size: 12px; color: var(--nm-text); margin: 0 auto; }
.nm-pagina-gn #tablaResultados th, .nm-pagina-gn #tablaResultados td,
.nm-pagina-gn .score-results-table th, .nm-pagina-gn .score-results-table td { border: 0 !important; border-bottom: 1px solid var(--nm-rejilla) !important; padding: 6px 12px !important; }
.nm-pagina-gn #tablaResultados th:not(.gn-mejor-opcion):not(.transparent),
.nm-pagina-gn .score-results-table thead th:not(.gn-mejor-opcion),
.nm-pagina-gn .score-results-table tbody th { background: var(--nm-card) !important; color: var(--nm-text) !important; text-align: left; font-weight: 650; }
.nm-pagina-gn #tablaResultados thead th:not(.transparent) { border-bottom: 2px solid var(--nm-line) !important; font-size: 12.5px; }
.nm-pagina-gn #tablaResultados th.transparent { background: transparent !important; border-bottom: 0 !important; }
.nm-pagina-gn #tablaResultados tbody th { color: var(--nm-muted) !important; font-weight: 600; white-space: nowrap; }
.nm-pagina-gn #tablaResultados td, .nm-pagina-gn .score-results-table td { background: var(--nm-card) !important; color: var(--nm-text); }
.nm-pagina-gn .gn-mejor-opcion { background: #2f8f46 !important; border-radius: 8px 8px 0 0; }
.nm-pagina-gn #tablaResultados .bigbutton-grey { min-height: 30px; padding: 0 12px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); font: 600 12.5px/1 var(--nm-font); cursor: pointer; }
.nm-pagina-gn #tablaResultados .bigbutton-grey:hover { background: var(--nm-hover); }
/* preferencias: las filas GLOBAL y "Usar Global ?" */
.nm-pagina-gn #tbody_principal tr[userid="GLOBAL"], .nm-pagina-gn #tbody_principal tr[userid="GLOBAL_checks"] { background-color: var(--nm-hover) !important; color: var(--nm-text) !important; }
.nm-pagina-gn #tbody_principal tr[userid="GLOBAL"] > *, .nm-pagina-gn #tbody_principal tr[userid="GLOBAL_checks"] > * { background-color: var(--nm-hover) !important; color: var(--nm-text) !important; }
.nm-pagina-gn #tbody_principal th.headcol { text-align: left; padding: 0 8px !important; font-weight: 700; }
.nm-pagina-gn #tbody_principal tr[userid="GLOBAL"] { border-top: 2px solid var(--nm-line); }
/* "Siguiente": el botón principal de cada paso */
.nm-pagina-gn .barra_botones #but_siguiente { background: #1d2125; border-color: #1d2125; color: #fff; padding: 0 22px; }
.nm-pagina-gn .barra_botones #but_siguiente:hover:not(:disabled) { background: #000; }
:root[data-tema="oscuro"] .nm-pagina-gn .barra_botones #but_siguiente { background: #e9ecef; border-color: #e9ecef; color: #15181b; }
/* extras: títulos de las tablas de orden y las tablas de orden y de comprobación */
.nm-gn-subtitulo { display: flex; align-items: center; gap: 8px; margin: 4px 0 8px; font: 700 13px var(--nm-font); color: var(--nm-text); text-transform: uppercase; letter-spacing: .04em; }
.nm-gn-marca { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.nm-pagina-gn .extra-order-table, .nm-pagina-gn .gnx-tabla { border-collapse: separate !important; border-spacing: 0; font-family: var(--nm-font); background: var(--nm-card) !important; border: 1px solid var(--nm-line) !important; border-radius: 8px; overflow: hidden; }
.nm-pagina-gn .extra-order-table th, .nm-pagina-gn .extra-order-table td,
.nm-pagina-gn .gnx-tabla th, .nm-pagina-gn .gnx-tabla td { border: 0 !important; border-bottom: 1px solid var(--nm-rejilla) !important; }
.nm-pagina-gn .extra-order-table th, .nm-pagina-gn .extra-order-table thead td, .nm-pagina-gn .extra-order-table tfoot td,
.nm-pagina-gn .gnx-tabla th { background: var(--nm-hover) !important; color: var(--nm-muted) !important; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; }
.nm-pagina-gn .extra-order-table td { background: var(--nm-card); color: var(--nm-text); }
.nm-pagina-gn .gnx-tabla td { color: var(--nm-text); }
.nm-pagina-gn .gnx-tabla tr.gnx-fila-mal td { background: color-mix(in srgb, #f0a34a 12%, var(--nm-card)); }
.nm-pagina-gn .extra-order-table td.nm-gn-total { background: var(--nm-hover) !important; color: var(--nm-text) !important; font-weight: 800; border-top: 2px solid var(--nm-line) !important; }
/* barra de editar de los pasos (mejorar, resumen, puentes): guardia en rojo y borrar en negro */
.nm-pagina-gn #div_botones .but_14X, .nm-pagina-gn #div_botones .but_14Xchecked { background-color: #bd0000 !important; color: #fff !important; border-color: #bd0000 !important; }
.nm-pagina-gn #div_botones .but_7, .nm-pagina-gn #div_botones .but_7checked { background-color: #1d2125 !important; color: #fff !important; border-color: #1d2125 !important; }
.nm-pagina-gn .s9-editar-titulo p { color: var(--nm-muted); font-size: 13px; }
/* botones propios del paso de mejorar */
.nm-pagina-gn .s9-grupo { background: var(--nm-card); border-color: var(--nm-line); border-radius: 10px; }
.nm-pagina-gn .s9-grupo-auto { background: var(--nm-hover); }
.nm-pagina-gn .s9-etiqueta { color: var(--nm-muted); font-size: 11px; letter-spacing: .06em; }
.nm-pagina-gn .s9-btn { min-height: 34px; padding: 0 14px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); font: 600 14px/1.2 var(--nm-font); }
.nm-pagina-gn .s9-btn:hover:not(:disabled) { background: var(--nm-hover); border-color: var(--nm-line); }
.nm-pagina-gn .s9-btn-principal { background: #1d2125; border-color: #1d2125; color: #fff; padding: 0 20px; }
.nm-pagina-gn .s9-btn-principal:hover:not(:disabled) { background: #000; }
.nm-pagina-gn .s9-btn-final { background: #2f8f46; border-color: #2f8f46; color: #fff; }
.nm-pagina-gn .s9-btn-final:hover:not(:disabled) { background: #257238; }
/* Guardias: el aviso de "Guardias listas" con su botón (guardias_listas.php) */
.nm-listas-aviso { align-items: center !important; }
.nm-listas-aviso .nm-btn { margin-left: auto; flex: 0 0 auto; white-space: nowrap; }
/* Personalizar: la nota de "Cerrar y publicar" (guardias_listas.php) */
.nm-pers-pasos { list-style: none; counter-reset: nm-paso; margin: 0 !important; padding: 10px 16px 0 !important; border-top: 1px solid var(--nm-line-soft); display: grid; gap: 8px; }
.nm-pers-pasos li { counter-increment: nm-paso; display: grid; grid-template-columns: 20px minmax(0, 1fr); column-gap: 9px; margin: 0; padding: 0; font: 12.5px/1.4 var(--nm-font); color: var(--nm-muted); }
.nm-pers-pasos li::before { content: counter(nm-paso); grid-row: 1 / span 2; width: 20px; height: 20px; border-radius: 50%; background: var(--nm-hover); color: var(--nm-text); font: 700 11px/20px var(--nm-font); text-align: center; }
.nm-pers-pasos li b { color: var(--nm-text); font-weight: 600; }
.nm-pers-pasos li span { grid-column: 2; }
.nm-pers-nota { margin: 0 !important; padding: 10px 16px 12px; font: 12px/1.45 var(--nm-font); color: var(--nm-muted); }
/* Al publicar, dar las guardias por listas (servicios que van por pasos: guardias_listas.php) */
.s9-listas { display: inline-flex; align-items: center; gap: 6px; font: 500 12.5px var(--nm-font); color: var(--nm-text); cursor: pointer; }
.s9-listas input { width: 15px; height: 15px; margin: 0; accent-color: #2f8f46; cursor: pointer; }
.nm-pagina-gn .s9-minutos, .nm-pagina-gn .s9-select { height: 34px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); }
:root[data-tema="oscuro"] .nm-pagina-gn .s9-btn-principal { background: #e9ecef; border-color: #e9ecef; color: #15181b; }
/* la tarjeta de resultados, escondida mientras está vacía (se rellena al recalcular la nota) */
.nm-pagina-gn ul.group.elements:has(#tablaResultados:empty) { display: none; }

/* hueco de última hora: los colores fijos, a los del tema (también en oscuro) */
.nm-pagina-gn .gnh-btn { height: 34px; border-radius: 8px; border-color: var(--nm-line); background: var(--nm-card); color: var(--nm-text); font: 600 13px var(--nm-font); }
.nm-pagina-gn .gnh-btn:hover:not(:disabled) { background: var(--nm-hover); border-color: var(--nm-line); color: var(--nm-text); }
.nm-pagina-gn .gnh-btn-azul { background: #1d2125; border-color: #1d2125; color: #fff; }
.nm-pagina-gn .gnh-btn-azul:hover:not(:disabled) { background: #000; color: #fff; }
.nm-pagina-gn .gnh-btn-verde { background: #2f8f46; border-color: #2f8f46; color: #fff; }
.nm-pagina-gn .gnh-form label { color: var(--nm-muted); }
.nm-pagina-gn .gnh-form input, .nm-pagina-gn .gnh-form select { height: 34px; border-radius: 8px; border-color: var(--nm-line); background: var(--nm-card); color: var(--nm-text); }
.nm-pagina-gn .gnh-resumen { border-bottom-color: var(--nm-line-soft); }
.nm-pagina-gn .gnh-resumen-titulo, .nm-pagina-gn .gnh-cand-nombre, .nm-pagina-gn .gnh-cand-datos b { color: var(--nm-text); }
.nm-pagina-gn .gnh-deguardia, .nm-pagina-gn .gnh-cand-datos { color: var(--nm-muted); }
.nm-pagina-gn .gnh-persona { background: var(--nm-hover); border-color: var(--nm-line); color: var(--nm-text); }
.nm-pagina-gn .gnh-cand { background: var(--nm-card); border-color: var(--nm-line); border-radius: 10px; }
.nm-pagina-gn .gnh-cand-toca { border-color: #2f8f46; background: color-mix(in srgb, #2f8f46 8%, var(--nm-card)); }
.nm-pagina-gn .gnh-cand-pos { background: var(--nm-hover); color: var(--nm-text); }
:root[data-tema="oscuro"] .nm-pagina-gn .gnh-btn-azul { background: #e9ecef; border-color: #e9ecef; color: #15181b; }
/* contadores sin <p> dentro (puentes y navidades) */
.nm-pagina-gn td.td_nguardias:not(.td_minmax) { background-color: color-mix(in srgb, #bd0000 8%, var(--nm-card)) !important; color: #a30000 !important; font-weight: 700; }
:root[data-tema="oscuro"] .nm-pagina-gn td.td_nguardias:not(.td_minmax) { color: #ff9b9b !important; }
.nm-pagina-gn td.td_nguardias:has(> p) { background-color: var(--nm-card) !important; }
/* puentes y navidades: el periodo, debajo de la barra de pasos */
.nm-gn-periodo { margin: -6px 0 14px !important; color: var(--nm-muted); font: 600 13.5px var(--nm-font); }
/* (las tablas de puentes y navidades no llevan #tbody_principal: las mismas reglas por la fila) */
.nm-gn-fila { white-space: nowrap; }
.nm-pagina-gn tr.peoples > td.headcol { background-color: var(--nm-card) !important; color: var(--nm-text); text-align: left; padding: 0 8px !important; white-space: nowrap; }
.nm-pagina-gn tr.peoples > td.weekend:not([class*="td_but_"]) { background-color: var(--nm-finde) !important; }
.nm-pagina-gn tr.peoples > td.true_periX_noDELETE,
.nm-pagina-gn tr.peoples > td.td_guardia_PRE:empty, .nm-pagina-gn tr.peoples > td.td_guardia_POST:empty,
.nm-pagina-gn tr.peoples > td.td_but_14X:empty:not(.td_nguardias) {
  background-color: #f7e2e2 !important;
  background-image: repeating-linear-gradient(135deg, rgba(160,0,0,.16) 0 3px, rgba(0,0,0,0) 3px 7px) !important;
  color: transparent !important;
}
:root[data-tema="oscuro"] .nm-pagina-gn tr.peoples > td.true_periX_noDELETE,
:root[data-tema="oscuro"] .nm-pagina-gn tr.peoples > td.td_guardia_PRE:empty, :root[data-tema="oscuro"] .nm-pagina-gn tr.peoples > td.td_guardia_POST:empty,
:root[data-tema="oscuro"] .nm-pagina-gn tr.peoples > td.td_but_14X:empty:not(.td_nguardias) { background-color: #3a2427 !important; background-image: repeating-linear-gradient(135deg, rgba(255,120,120,.22) 0 3px, rgba(0,0,0,0) 3px 7px) !important; }
.nm-pagina-gn tr.peoples > td.headcol.td_pre_guardia, .nm-pagina-gn thead .td_pre_guardia { background-color: #E6ADAD !important; color: #fff !important; }
.nm-pagina-gn .nm-gn-fila { display: inline-flex !important; }
.nm-pagina-gn .nm-gn-fila > span { display: inline-block !important; }
/* extras: las dos tablas de orden, una al lado de otra; en el móvil, una debajo de otra */
.nm-pagina-gn article:has(> .extra-order-table) { color: var(--nm-text) !important; background: transparent !important; box-shadow: none !important; overflow-x: auto; }
@media (max-width: 760px) { .nm-pagina-gn article:has(> .extra-order-table) { width: 100% !important; } }
/* celdas vacías: el fondo de la tarjeta (la plantilla las ponía blancas, también en oscuro) */
.nm-pagina-gn .tabla_resp tbody td:not([class*="td_but_"]):not(.weekend):not(.td_incomplete):not(.td_overcomplete),
.nm-pagina-gn tr.peoples > td:not([class*="td_but_"]):not(.weekend) { background-color: var(--nm-card); color: var(--nm-text); }

/* =====================================================================================
   GENERADOR 2.0, 2.ª tanda: como el prototipo (tarjeta del paso con su número, pie con
   Atrás / Siguiente, paso 1 con camas segmentadas y las dos listas)
   ===================================================================================== */
.nm-gn-pastilla { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font: 650 13px var(--nm-font); }
.nm-gn-paso { padding: 0 !important; margin-bottom: 18px; }
.nm-gn-paso-h { display: flex; align-items: center; gap: 10px; padding: 14px 18px; border-bottom: 1px solid var(--nm-line-soft); font: 700 16px var(--nm-font); color: var(--nm-text); }
.nm-gn-badge { display: inline-grid; place-items: center; min-width: 26px; height: 26px; padding: 0 6px; box-sizing: border-box; border-radius: 999px; background: var(--nm-primary); color: #fff; font-size: 12.5px; font-weight: 700; }
.nm-gn-paso-de { margin-left: auto; color: var(--nm-muted); font-size: 12.5px; font-weight: 600; white-space: nowrap; }
.nm-gn-paso-b { padding: 16px 18px 18px; }
/* dentro de la tarjeta, los bloques de siempre ya no son tarjetas */
.nm-gn-paso ul.group.elements { margin: 0 0 14px !important; }
.nm-gn-paso ul.group.elements > li > article { border: 0 !important; border-radius: 0; box-shadow: none !important; background: transparent !important; padding: 0 !important; }
/* pie: Atrás a la izquierda, Siguiente (y lo demás) a la derecha */
.nm-gn-paso ul.group.elements:has(#but_siguiente),
.nm-gn-paso ul.group.elements:has(#but_siguiente_false) { margin: 18px 0 0 !important; padding-top: 14px !important; border-top: 1px solid var(--nm-line-soft); }
.nm-gn-paso ul.group.elements:has(#but_siguiente) .barra_botones,
.nm-gn-paso ul.group.elements:has(#but_siguiente_false) .barra_botones { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 8px; margin: 0 !important; }
.nm-gn-paso #but_atras { margin-right: auto; }
.nm-pagina-gn .barra_botones #but_atras:disabled { opacity: .45; }
/* el botón principal es rojo, como en el prototipo */
.nm-pagina-gn .barra_botones #but_siguiente, .nm-pagina-gn .gn-btn-principal, .nm-pagina-gn .s9-btn-principal, .nm-pagina-gn .gnh-btn-azul { background: var(--nm-primary) !important; border-color: var(--nm-primary) !important; color: #fff !important; }
.nm-pagina-gn .barra_botones #but_siguiente:hover:not(:disabled), .nm-pagina-gn .gn-btn-principal:hover:not(:disabled), .nm-pagina-gn .s9-btn-principal:hover:not(:disabled), .nm-pagina-gn .gnh-btn-azul:hover:not(:disabled) { background: #9a0000 !important; border-color: #9a0000 !important; }
:root[data-tema="oscuro"] .nm-pagina-gn .barra_botones #but_siguiente, :root[data-tema="oscuro"] .nm-pagina-gn .gn-btn-principal,
:root[data-tema="oscuro"] .nm-pagina-gn .s9-btn-principal, :root[data-tema="oscuro"] .nm-pagina-gn .gnh-btn-azul { color: #fff !important; }

/* paso 1: camas */
.nm-gn-camas { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 16px; }
.nm-gn-lbl { font: 650 14px var(--nm-font); color: var(--nm-text); }
.nm-seg button { border: 0; background: transparent; height: 32px; padding: 0 14px; color: var(--nm-text); font: 500 14px var(--nm-font); cursor: pointer; }
.nm-seg button + button { border-left: 1px solid var(--nm-line); }
.nm-seg button.on { background: var(--nm-accent-soft); color: var(--nm-accent-ink); font-weight: 700; }
/* paso 1: las dos listas */
.nm-gn-dual { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.nm-gn-dlist { border: 1px solid var(--nm-line); border-radius: 10px; padding: 10px; background: var(--nm-hover); min-height: 200px; display: flex; flex-direction: column; }
.nm-gn-dlist-h { display: flex; flex-direction: column; margin: 0 0 8px; font-family: var(--nm-font); }
.nm-gn-dlist-h b { color: var(--nm-text); font-size: 14px; }
.nm-gn-dlist-h span { color: var(--nm-muted); font-size: 12px; }
.nm-gn-dlist ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; counter-reset: gnorden; }
.nm-pagina-gn .nm-gn-dlist .group-item { display: flex !important; align-items: center; gap: 10px; padding: 9px 12px !important; margin: 0 !important; border-radius: 8px !important; background: var(--nm-card) !important; border: 1px solid var(--nm-line) !important; color: var(--nm-text) !important; font: 650 14px var(--nm-font); cursor: pointer; text-align: left; }
.nm-pagina-gn .nm-gn-dlist .group-item:hover { border-color: color-mix(in srgb, var(--nm-accent) 45%, var(--nm-line)) !important; }
.nm-gn-dlist .nm-gn-dn { flex: 1; }
.nm-gn-dlist .nm-gn-grip { color: var(--nm-muted); cursor: grab; display: none; }
.nm-gn-dlist .span-remove, .nm-gn-dlist .span-add { color: var(--nm-muted); }
.nm-gn-dlist .span-add { color: var(--nm-accent-ink); }
#selectedGroupsList .nm-gn-grip { display: inline-block; }
#selectedGroupsList .group-item { counter-increment: gnorden; }
#selectedGroupsList .group-item .nm-gn-dn::before { content: counter(gnorden); display: inline-grid; place-items: center; width: 22px; height: 22px; margin-right: 10px; border-radius: 50%; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font-size: 11.5px; font-weight: 700; vertical-align: middle; }
.nm-gn-dlist .gn-lista-vacia { color: var(--nm-muted); }
@media (max-width: 760px) { .nm-gn-dual { grid-template-columns: 1fr; } .nm-gn-paso-de { display: none; } }
/* paso 1.2: mes y año */
.nm-gn-mes { display: flex; flex-wrap: wrap; gap: 14px; align-items: flex-end; }
.nm-gn-campo { display: flex; flex-direction: column; gap: 5px; font: 650 13px var(--nm-font); color: var(--nm-muted); margin: 0; }
.nm-gn-campo .nm-sel { min-width: 160px; }

/* portada: la fila del mes en curso, con aire entre el filo azul y el texto */
.nm-pagina-gn table.gn-tabla td:first-child, .nm-pagina-gn table.gn-tabla th:first-child { padding-left: 14px !important; }
.nm-pagina-gn .gn-fila-actual td { background: color-mix(in srgb, var(--nm-accent) 7%, var(--nm-card)) !important; }
.nm-pagina-gn .nm-gn-campo, .nm-pagina-gn .nm-gn-campo > span { color: var(--nm-muted) !important; }
/* extras: la extra ya asignada este mes, marcada en las tablas de orden */
.nm-pagina-gn .extra-order-table tr.nm-extra-asignada > td { background: color-mix(in srgb, #bd0000 12%, var(--nm-card)) !important; font-weight: 700; }
.nm-pagina-gn .extra-order-table tr.nm-extra-asignada > td:first-child { box-shadow: inset 3px 0 0 #bd0000; }

/* distribución (s6): cada subgrupo separado por una línea marcada, como antes */
.nm-pagina-gn .tabla_resp td.x_total, .nm-pagina-gn .tabla_resp th.td_subgrupo[name^="total_"],
.nm-pagina-gn .tabla_resp th[name^="huecosrest_tot_"]:not([name$="TOTAL"]), .nm-pagina-gn .tabla_resp #dayofweek th[name^="subgrupo_"] { border-left: 2px solid color-mix(in srgb, var(--nm-text) 55%, transparent) !important; }
.nm-pagina-gn .tabla_resp #dayofweek th[name^="subgrupo_"] { font-size: 13px !important; font-weight: 800; color: var(--nm-text) !important; background: var(--nm-hover) !important; border-bottom: 1px solid var(--nm-line) !important; }
.nm-pagina-gn .tabla_resp th.td_subgrupo[name^="total_"] { background: var(--nm-hover) !important; color: var(--nm-muted) !important; font-size: 11px; }
.nm-pagina-gn .tabla_resp th.td_subgrupo[name^="fest_"] { background: var(--nm-finde-cab) !important; color: var(--nm-muted) !important; font-size: 11px; }
.nm-pagina-gn .tabla_resp th[name="total_generate"], .nm-pagina-gn .tabla_resp th[name="fest_generate"] { color: var(--nm-muted) !important; font-size: 11px !important; }

/* #huecos restantes, en oscuro como el Control de asistencias (pasos 6 a 10 y puentes);
   en el paso de camas y huecos (#huecos_table), que es la tabla entera, se quedan en claro */
.nm-pagina-gn .tabla_resp table:not(#huecos_table) tr#title_huecos_rest > th,
.nm-pagina-gn .tabla_resp table:not(#huecos_table) tr:has(> th.full-colspan) > th { background: #1d2125 !important; color: #c9d0d7 !important; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; border-color: #1d2125 !important; }
.nm-pagina-gn .tabla_resp table:not(#huecos_table) tr.tr_subgrupo > th,
.nm-pagina-gn .tabla_resp tr#huecos_rest > th { background: #262b30 !important; color: #e9ecef !important; border-right: 1px solid rgba(255,255,255,.07) !important; border-bottom: 1px solid rgba(255,255,255,.07) !important; font-weight: 700; }
.nm-pagina-gn .tabla_resp table:not(#huecos_table) tr.tr_subgrupo > th[name^="title_"] { background: #1d2125 !important; color: #fff !important; text-align: left; padding: 0 10px !important; }
.nm-pagina-gn .tabla_resp table:not(#huecos_table) tr.tr_subgrupo > th[daynum]:not(.td_incomplete):not(.td_overcomplete) { color: #5d6670 !important; }
.nm-pagina-gn .tabla_resp table:not(#huecos_table) tr.tr_subgrupo > th.td_incomplete { color: #1b4d22 !important; box-shadow: inset 0 0 0 3px #262b30, inset 0 0 0 20px #bfe8c4; }
.nm-pagina-gn .tabla_resp table:not(#huecos_table) tr.tr_subgrupo > th.td_overcomplete { color: #fff !important; box-shadow: inset 0 0 0 3px #262b30, inset 0 0 0 20px #d23b3b; }
.nm-pagina-gn .tabla_resp tr.tr_subgrupo > th p, .nm-pagina-gn .tabla_resp tr#huecos_rest > th p { margin: 0; }

/* preferencias (s4): casillas propias, días como pastillas, cabecera compacta, filas alternas */
.nm-pagina-gn #head_preferencias th { vertical-align: bottom; padding: 8px 6px !important; font-size: 11.5px !important; line-height: 1.25; color: var(--nm-text) !important; font-weight: 650; }
.nm-pagina-gn #head_preferencias th.headcol { color: var(--nm-muted) !important; }
/* sólo en preferencias: en los pasos con guardias pisaba el rojo y las dejaba en blanco sobre blanco */
.nm-pagina-gn table:has(> thead > #head_preferencias) > #tbody_principal > tr.peoples:nth-child(even) > td:not(.headcol) { background-color: color-mix(in srgb, var(--nm-hover) 55%, var(--nm-card)); }
.nm-pagina-gn #tbody_principal td[pref_id] { text-align: center; }
.nm-pagina-gn #tbody_principal input[type="checkbox"]:not(.day-checkbox) {
  appearance: none; -webkit-appearance: none; width: 18px; height: 18px; margin: 0; vertical-align: middle; box-sizing: border-box;
  border: 1.5px solid var(--nm-line); border-radius: 5px; background-color: var(--nm-card); cursor: pointer; opacity: 1 !important;
}
.nm-pagina-gn #tbody_principal input[type="checkbox"]:not(.day-checkbox):checked {
  border-color: var(--nm-accent); background: var(--nm-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round' d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E") center / 13px no-repeat;
}
.nm-pagina-gn #tbody_principal input[type="checkbox"]:not(.day-checkbox):disabled { cursor: default; }
.nm-pagina-gn #tbody_principal tr[userid="GLOBAL"] input[type="checkbox"]:not(.day-checkbox):checked,
.nm-pagina-gn #tbody_principal tr[userid="GLOBAL_checks"] input[type="checkbox"]:checked { border-color: var(--nm-primary); background-color: var(--nm-primary); }
.nm-pagina-gn .day-checkboxes { display: inline-flex; gap: 3px; }
.nm-pagina-gn .day-label { width: 22px !important; height: 20px !important; line-height: 18px !important; border-radius: 5px !important; box-sizing: border-box; border: 1px solid var(--nm-line) !important; background: var(--nm-card) !important; color: var(--nm-muted) !important; font: 700 10.5px var(--nm-font) !important; text-align: center; box-shadow: none !important; }
.nm-pagina-gn .day-checkbox:checked + .day-label { background: color-mix(in srgb, #2f8f46 16%, var(--nm-card)) !important; color: #1f6b34 !important; border-color: color-mix(in srgb, #2f8f46 45%, var(--nm-card)) !important; }
:root[data-tema="oscuro"] .nm-pagina-gn .day-checkbox:checked + .day-label { color: #8fd8a2 !important; }

/* camas y huecos (s5): la barra de arriba, alineada a la izquierda y con los controles nuevos */
.nm-pagina-gn .huecos-toolbar { justify-content: flex-start !important; gap: 10px 14px !important; margin: 0 0 14px !important; font: 600 13.5px var(--nm-font); color: var(--nm-text); }
.nm-pagina-gn .huecos-toolbar .normal_input { height: 34px; padding: 0 8px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); font: 14px var(--nm-font); margin: 0; }
.nm-pagina-gn #huecos_table th.td_subgrupo { text-align: left; padding: 6px 10px !important; }
.nm-pagina-gn #huecos_table .huecos-cell-control { border-color: var(--nm-line); background: var(--nm-card); color: var(--nm-text); }

/* notas de los intentos (pasos 7 a 10) */
.nm-pagina-gn table.nm-notas { width: 100%; max-width: 980px; border: 1px solid var(--nm-line) !important; border-radius: 10px; overflow: hidden; }
.nm-pagina-gn table.nm-notas thead th:not(.transparent) { text-align: center !important; font-size: 13px; padding: 10px 12px !important; }
.nm-pagina-gn table.nm-notas tr.nm-nota-metrica > th { color: var(--nm-text) !important; font-weight: 650; width: 34%; }
.nm-pagina-gn table.nm-notas tr.nm-nota-metrica > td { font-variant-numeric: tabular-nums; font-weight: 650; }
.nm-pagina-gn table.nm-notas tr.nm-nota-metrica:first-child > td { font-size: 14px; font-weight: 800; }
.nm-pagina-gn table.nm-notas tr.nm-nota-sep > th { background: var(--nm-hover) !important; color: var(--nm-muted) !important; text-transform: uppercase; letter-spacing: .06em; font-size: 11px !important; font-weight: 700; padding: 8px 12px !important; }
.nm-pagina-gn table.nm-notas tr.nm-nota-persona > th { color: var(--nm-text) !important; font-weight: 600 !important; }
.nm-pagina-gn table.nm-notas td { vertical-align: middle; }
.nm-nota-n { font-weight: 750; font-variant-numeric: tabular-nums; margin-right: 8px; }
.nm-nota-mejor { color: var(--nm-muted); font-size: 11.5px; }
.nm-nota-barra { display: block; height: 4px; margin-top: 4px; border-radius: 3px; background: var(--nm-hover); overflow: hidden; max-width: 220px; }
.nm-nota-barra i { display: block; height: 100%; background: #2f8f46; border-radius: 3px; }
.nm-gn-vacio { margin: 0; padding: 14px 16px; border-radius: 10px; background: var(--nm-hover); color: var(--nm-text); font: 14px var(--nm-font); }
/* preferencias: columna que se coge de la fila GLOBAL ("Usar Global ?" marcado) */
.nm-pagina-gn #tbody_principal td.nm-pref-por-global > *, .nm-pagina-gn #tbody_principal td.nm-pref-por-global > input[type="checkbox"]:not(.day-checkbox) { opacity: .28 !important; }
.nm-pagina-gn #tbody_principal td.nm-pref-por-global { background-image: repeating-linear-gradient(135deg, color-mix(in srgb, var(--nm-muted) 10%, transparent) 0 4px, transparent 4px 9px); }
.nm-pagina-gn #tbody_principal td.nm-pref-manda-global { box-shadow: inset 0 0 0 2px var(--nm-primary); }
.nm-pagina-gn #head_preferencias th.nm-pref-cab-global::before { content: "GLOBAL"; display: block; width: max-content; margin: 0 auto 4px; padding: 0 6px; border-radius: 999px; background: var(--nm-primary); color: #fff; font-size: 9.5px; font-weight: 800; letter-spacing: .05em; line-height: 16px; }

/* =====================================================================================
   CAMBIOS DE GUARDIA (cambios.php)
   ===================================================================================== */
.nm-pagina-cambios ul.group.elements { margin: 0 0 16px !important; padding: 0 !important; }
.nm-pagina-cambios ul.group.elements > li { width: 100% !important; float: none !important; margin: 0 !important; }
.nm-pagina-cambios ul.group.elements > li > article { background: var(--nm-card) !important; color: var(--nm-text); border: 1px solid var(--nm-line); border-radius: 12px; box-shadow: 0 1px 2px rgba(0,0,0,.04); padding: 16px !important; margin: 0 !important; text-align: left; }
.nm-pagina-cambios .barra_botones { margin: 0; }
/* ayuda plegable (vale también para otras páginas) */
details.nm-ayuda { margin: 0 0 16px; border-radius: 10px; background: var(--nm-card); border: 1px solid var(--nm-line); font-family: var(--nm-font); }
.nm-ayuda > summary { padding: 11px 14px; font-weight: 650; color: var(--nm-accent-ink); cursor: pointer; list-style: none; }
.nm-ayuda > summary::-webkit-details-marker { display: none; }
.nm-ayuda > summary::before { content: "\25B8"; display: inline-block; margin-right: 6px; transition: transform .15s; }
.nm-ayuda[open] > summary::before { transform: rotate(90deg); }
.nm-ayuda[open] > summary { border-bottom: 1px solid var(--nm-line-soft); }
.nm-ayuda > ul { margin: 0; padding: 10px 16px 12px 34px; color: var(--nm-text); font-size: 13.5px; line-height: 1.55; list-style: disc; }
.nm-ayuda > ul li { margin-bottom: 5px; }
/* tipo de cambio: cuatro tarjetas */
.nm-cambios-pregunta { margin: 0 0 10px !important; font: 700 15px var(--nm-font); color: var(--nm-text); }
.nm-cambios-tipos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.nm-pagina-cambios .nm-cambio-tipo { display: flex !important; flex-direction: column; align-items: flex-start; gap: 4px; width: auto !important; height: auto !important; min-height: 0 !important; margin: 0 !important; padding: 14px 16px !important; border-radius: 12px !important; border: 1px solid var(--nm-line) !important; background: var(--nm-card) !important; color: var(--nm-text) !important; box-shadow: none !important; text-align: left; font-family: var(--nm-font); cursor: pointer; transition: border-color .15s, background .15s; }
.nm-pagina-cambios .nm-cambio-tipo:hover { border-color: color-mix(in srgb, var(--nm-accent) 50%, var(--nm-line)) !important; }
.nm-pagina-cambios .nm-cambio-tipo > .fa-solid { font-size: 18px; color: var(--nm-accent-ink); margin-bottom: 4px; }
.nm-pagina-cambios .nm-cambio-tipo b { font-size: 15px; font-weight: 700; }
.nm-pagina-cambios .nm-cambio-tipo small { font-size: 12.5px; color: var(--nm-muted); font-weight: 500; line-height: 1.35; }
.nm-pagina-cambios .nm-cambio-tipo.bigbutton-lightblue { border: 2px solid var(--nm-accent) !important; background: var(--nm-accent-soft) !important; padding: 13px 15px !important; }
@media (max-width: 760px) { .nm-cambios-tipos { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* el paso en el que estás */
.nm-cambios-paso { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 4px 0 12px; font-family: var(--nm-font); }
.nm-cambios-paso-t { font-size: 18px; font-weight: 750; color: var(--nm-text); }
.nm-cambios-paso-p { padding: 4px 12px; border-radius: 999px; background: color-mix(in srgb, var(--nm-primary) 12%, var(--nm-card)); color: var(--nm-primary); font-size: 13.5px; font-weight: 700; }
/* resumen del cambio y cambio múltiple */
.nm-cambios-resumen-t { display: block; margin: 0 0 6px; font: 700 15px var(--nm-font); color: var(--nm-text); }
.nm-pagina-cambios #ul_infocambios { margin: 0; padding-left: 18px; color: var(--nm-text); font-size: 14px; line-height: 1.6; }
.nm-pagina-cambios #ul_multiple li { border-color: var(--nm-line) !important; background: var(--nm-hover) !important; color: var(--nm-text); border-radius: 8px !important; }
/* navegación del mes */
/* Tus cambios / Pendientes del servicio (cambios_lista.php) */
.nm-cmb-lista:empty { display: none; }
.nm-cmb { margin: 0 0 16px; }
.nm-cmb .nm-card-h { align-items: baseline; }
.nm-cmb-sub { font-size: 12.5px; color: var(--nm-muted); }
.nm-cmb-item { padding: 12px 0; border-top: 1px solid var(--nm-line); }
.nm-cmb-item:first-child { border-top: 0; padding-top: 0; }
.nm-cmb-cab { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-bottom: 6px; }
.nm-cmb-estado { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 12.5px; font-weight: 700; background: var(--nm-hover); color: var(--nm-text); }
.nm-cmb-estado.es-espera { background: #fff3cd; color: #6b4e00; }
.nm-cmb-estado.es-ok { background: #e3f4e6; color: #1d6b2c; }
.nm-cmb-estado.es-no { background: #fdecea; color: #7a0000; }
.nm-cmb-quien { font-size: 12.5px; color: var(--nm-muted); }
.nm-cmb-lineas { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; font-size: 13.5px; color: var(--nm-text); }
.nm-cmb-lineas li { display: flex; align-items: flex-start; gap: 8px; }
.nm-cmb-lineas s { color: var(--nm-muted); }
.nm-cmb-num { flex: none; width: 20px; height: 20px; border-radius: 50%; background: var(--nm-primary); color: #fff; font-size: 11px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.nm-cmb-cat { display: inline-block; padding: 0 6px; border-radius: 6px; background: var(--nm-primary); color: #fff; font-size: 11.5px; font-weight: 600; }
.nm-cmb-botones { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.nm-cmb-nota { margin: 8px 0 0; font-size: 12.5px; color: var(--nm-muted); }
.nm-cmb-correo-ayuda { margin: 0 0 12px; font-size: 13px; color: var(--nm-muted); }
.nm-cmb-correo label { display: block; margin: 8px 0 4px; font-size: 12.5px; font-weight: 700; color: var(--nm-text); }
.nm-cmb-correo textarea { min-height: 200px; resize: vertical; font: 13.5px/1.45 var(--nm-font); white-space: pre-wrap; }
:root[data-tema="oscuro"] .nm-cmb-estado.es-espera { background: #3a2c0c; color: #f3c35a; }
:root[data-tema="oscuro"] .nm-cmb-estado.es-ok { background: #12301a; color: #8fdc9f; }
:root[data-tema="oscuro"] .nm-cmb-estado.es-no { background: #3a1416; color: #ffb3b3; }
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] .nm-cmb-estado.es-espera { background: #3a2c0c; color: #f3c35a; }
  :root[data-tema="auto"] .nm-cmb-estado.es-ok { background: #12301a; color: #8fdc9f; }
  :root[data-tema="auto"] .nm-cmb-estado.es-no { background: #3a1416; color: #ffb3b3; }
}

.nm-cambios-nav { display: flex !important; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 8px; margin: 0 0 12px !important; }
.nm-cambios-nav .nm-sel { margin: 0 !important; }
.nm-cambios-cargando { position: absolute; inset: 0; z-index: 5; justify-content: center; align-items: center; border-radius: 12px; background: color-mix(in srgb, var(--nm-card) 80%, transparent); }
.nm-cambios-cargando img { width: 46px; height: 46px; filter: brightness(0); }
:root[data-tema="oscuro"] .nm-cambios-cargando img { filter: brightness(0) invert(1); }
/* los calendarios: como el de Tu calendario */
.nm-pagina-cambios div#calendar ul.label, .nm-pagina-cambios div#calendar ul.dates { float: none; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; width: auto; margin: 0 0 4px; }
.nm-pagina-cambios div#calendar ul.label li { float: none; width: auto; margin: 0; background: transparent !important; color: var(--nm-muted) !important; font-size: 12px; font-weight: 700; line-height: 24px; text-align: left; padding-left: 6px; }
.nm-pagina-cambios div#calendar ul.dates li { float: none; width: auto; margin: 0; border-radius: 8px; background: var(--nm-hover); color: var(--nm-text); min-height: 88px; padding: 5px; text-align: left; display: flex; flex-direction: column; gap: 4px; overflow: hidden; }
.nm-pagina-cambios div#calendar ul.dates li.weekend { background: color-mix(in srgb, var(--nm-accent) 34%, var(--nm-card)); }
.nm-pagina-cambios div#calendar ul.dates li.outmonth { opacity: .4; background: var(--nm-hover); }
.nm-pagina-cambios .date-num { float: none; width: auto; padding: 0; line-height: 1.4; font-size: 13px; font-weight: 600; text-align: left; display: flex; flex-direction: row-reverse; justify-content: flex-end; align-items: center; gap: 6px; color: var(--nm-text); }
.nm-pagina-cambios .date-num .cal_span_special { float: none; margin: 0; font-size: 10px; font-weight: 700; background: var(--nm-card); border-radius: 4px; padding: 0 4px; }
.nm-pagina-cambios .date-events { float: none; width: auto; min-height: 20px; flex: 1 1 auto; display: flex; flex-direction: column; gap: 3px; }
.nm-pagina-cambios .date-events-it, .nm-pagina-cambios .date-events-per { width: auto; margin: 0; border-radius: 5px; font-size: 11.5px; font-weight: 600; padding: 2px 6px; line-height: 1.3; white-space: normal; overflow-wrap: anywhere; text-align: left; cursor: pointer; }
.nm-pagina-cambios .date-events-per { display: flex; align-items: center; gap: 5px; background: var(--nm-card); color: var(--nm-text); box-shadow: inset 0 0 0 1px var(--nm-line); }
.nm-pagina-cambios .date-events-per:hover:not(.cambio-no-elegible) { box-shadow: inset 0 0 0 1.5px var(--nm-accent); }
.nm-cambios-sg { flex: none; padding: 0 4px; border-radius: 4px; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font-size: 9.5px; font-weight: 800; }
.nm-pagina-cambios .date-events-per.td_guardia { background: #bd0000 !important; color: #fff !important; box-shadow: none; }
.nm-pagina-cambios .date-events-per.td_guardia .nm-cambios-sg { background: rgba(255,255,255,.25); color: #fff; }
@media (max-width: 760px) {
  .nm-pagina-cambios div#calendar ul.label, .nm-pagina-cambios div#calendar ul.dates { gap: 2px; }
  .nm-pagina-cambios div#calendar ul.label li { text-align: center; padding: 0; font-size: 11px; }
  .nm-pagina-cambios div#calendar ul.dates li { min-height: 58px; padding: 3px; border-radius: 6px; }
  .nm-pagina-cambios .date-events-it, .nm-pagina-cambios .date-events-per { font-size: 9.5px; padding: 1px 3px; }
  .nm-pagina-cambios .date-events-per { flex-direction: column; align-items: flex-start; gap: 1px; }
}
.nm-pagina-cambios .date-events-per, .nm-pagina-cambios .date-events-it { text-transform: none; }
.nm-cambios-paso-t { margin-right: 10px; }
.nm-pagina-cambios .nm-cambios-pregunta { text-align: left; }
.nm-pagina-cambios #info_cambio .barra_botones { display: block; text-align: left; }
.nm-pagina-cambios .nm-cambios-nav { justify-content: flex-start !important; }
.nm-cambios-paso-p { display: inline-block; margin-top: 4px; }

/* =====================================================================================
   ESTADÍSTICAS (estadisticas_*.php)
   Las seis páginas llevan cada una sus estilos con su prefijo (guardstats-, vacstats-...).
   Se conserva cómo se reparte cada página y aquí se cambian colores, letra y bordes para las
   seis a la vez (también en oscuro). Lo nuevo (pestañas, atajos, mapa de calor, media del
   grupo y tu fila) sale de estadisticas_ui.php.
   ===================================================================================== */
.nm-stats-sub { margin: 4px 0 0 !important; color: var(--nm-muted); font: 14px/1.45 var(--nm-font); max-width: 760px; }
.nm-stats-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 16px; padding: 4px; border-radius: 12px; background: var(--nm-hover); width: fit-content; max-width: 100%; }
.nm-stats-tab { display: inline-flex; align-items: center; gap: 7px; padding: 7px 14px; border-radius: 9px; color: var(--nm-muted) !important; font: 600 14px var(--nm-font); text-decoration: none !important; }
.nm-stats-tab:hover { color: var(--nm-text) !important; background: color-mix(in srgb, var(--nm-card) 60%, transparent); }
.nm-stats-tab.is-active { background: var(--nm-card); color: var(--nm-text) !important; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.nm-stats-tab.is-active .fa-solid { color: var(--nm-primary); }
.nm-stats-atajos { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding-top: 10px; border-top: 1px solid var(--nm-line-soft); }
.nm-stats-atajos-t { color: var(--nm-muted); font: 700 10.5px var(--nm-font); letter-spacing: .06em; text-transform: uppercase; margin-right: 4px; }
.nm-stats-atajo { height: 30px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--nm-line); background: var(--nm-card); color: var(--nm-text); font: 600 12.5px var(--nm-font); cursor: pointer; }
.nm-stats-atajo:hover { border-color: var(--nm-accent); color: var(--nm-accent-ink); }
.nm-stats-atajo.is-active { background: var(--nm-accent-soft); border-color: var(--nm-accent); color: var(--nm-accent-ink); }
body.nm-v2 .guardstats-shell,
body.nm-v2 .vacstats-shell,
body.nm-v2 .asiststats-shell,
body.nm-v2 .planstats-shell,
body.nm-v2 .notas-shell,
body.nm-v2 .repstats-shell {
  background: transparent !important;
}
.nm-pagina-stats ul.group.elements {
  margin: 0 0 16px !important; padding: 0 !important;
}
.nm-pagina-stats ul.group.elements > li {
  width: 100% !important; float: none !important; margin: 0 !important;
}
.nm-pagina-stats ul.group.elements > li > article {
  background: var(--nm-card) !important; color: var(--nm-text); border: 1px solid var(--nm-line); border-radius: 12px; box-shadow: 0 1px 2px rgba(0,0,0,.04); padding: 16px !important; margin: 0 !important;
}
.nm-pagina-stats .guardstats-filterbox label, .nm-pagina-stats .guardstats-filterlabel,
.nm-pagina-stats .vacstats-filterbox label, .nm-pagina-stats .vacstats-filterlabel,
.nm-pagina-stats .asiststats-filterbox label, .nm-pagina-stats .asiststats-filterlabel,
.nm-pagina-stats .planstats-filterbox label, .nm-pagina-stats .planstats-filterlabel,
.nm-pagina-stats .notas-filterbox label, .nm-pagina-stats .notas-filterlabel,
.nm-pagina-stats .repstats-filterbox label, .nm-pagina-stats .repstats-filterlabel {
  color: var(--nm-muted) !important; font: 700 10.5px var(--nm-font) !important; letter-spacing: .06em;
}
.nm-pagina-stats .guardstats-filterbox .like_login_input, .nm-pagina-stats .guardstats-filterbox .ms-btn, .nm-pagina-stats .guardstats-filterbox select,
.nm-pagina-stats .vacstats-filterbox .like_login_input, .nm-pagina-stats .vacstats-filterbox .ms-btn, .nm-pagina-stats .vacstats-filterbox select,
.nm-pagina-stats .asiststats-filterbox .like_login_input, .nm-pagina-stats .asiststats-filterbox .ms-btn, .nm-pagina-stats .asiststats-filterbox select,
.nm-pagina-stats .planstats-filterbox .like_login_input, .nm-pagina-stats .planstats-filterbox .ms-btn, .nm-pagina-stats .planstats-filterbox select,
.nm-pagina-stats .notas-filterbox .like_login_input, .nm-pagina-stats .notas-filterbox .ms-btn, .nm-pagina-stats .notas-filterbox select,
.nm-pagina-stats .repstats-filterbox .like_login_input, .nm-pagina-stats .repstats-filterbox .ms-btn, .nm-pagina-stats .repstats-filterbox select {
  height: 36px !important; min-height: 36px !important; padding: 0 10px !important; border: 1px solid var(--nm-line) !important; border-radius: 8px !important; background: var(--nm-card) !important; color: var(--nm-text) !important; font: 13.5px var(--nm-font) !important; box-shadow: none !important;
}
.nm-pagina-stats .guardstats-filterbox .ms-panel,
.nm-pagina-stats .vacstats-filterbox .ms-panel,
.nm-pagina-stats .asiststats-filterbox .ms-panel,
.nm-pagina-stats .planstats-filterbox .ms-panel,
.nm-pagina-stats .notas-filterbox .ms-panel,
.nm-pagina-stats .repstats-filterbox .ms-panel {
  background: var(--nm-card) !important; color: var(--nm-text); border-color: var(--nm-line) !important; font-size: 13px !important; border-radius: 10px;
}
.nm-pagina-stats .guardstats-filter-actions .smallbutton-grey,
.nm-pagina-stats .vacstats-filter-actions .smallbutton-grey,
.nm-pagina-stats .asiststats-filter-actions .smallbutton-grey,
.nm-pagina-stats .planstats-filter-actions .smallbutton-grey,
.nm-pagina-stats .notas-filter-actions .smallbutton-grey,
.nm-pagina-stats .repstats-filter-actions .smallbutton-grey {
  display: inline-flex !important; align-items: center; height: 36px; padding: 0 14px !important; border-radius: 8px !important; border: 1px solid var(--nm-line) !important; background: var(--nm-card) !important; color: var(--nm-text) !important; font: 600 13.5px var(--nm-font) !important; box-shadow: none !important; text-decoration: none !important;
}
.nm-pagina-stats .guardstats-filter-actions button.smallbutton-grey,
.nm-pagina-stats .vacstats-filter-actions button.smallbutton-grey,
.nm-pagina-stats .asiststats-filter-actions button.smallbutton-grey,
.nm-pagina-stats .planstats-filter-actions button.smallbutton-grey,
.nm-pagina-stats .notas-filter-actions button.smallbutton-grey,
.nm-pagina-stats .repstats-filter-actions button.smallbutton-grey {
  background: var(--nm-primary) !important; border-color: var(--nm-primary) !important; color: #fff !important;
}
.nm-pagina-stats .guardstats-kpi,
.nm-pagina-stats .vacstats-kpi,
.nm-pagina-stats .asiststats-kpi,
.nm-pagina-stats .planstats-kpi,
.nm-pagina-stats .notas-kpi,
.nm-pagina-stats .repstats-kpi {
  background: var(--nm-card) !important; border: 1px solid var(--nm-line) !important; border-radius: 12px !important; box-shadow: 0 1px 2px rgba(0,0,0,.04) !important; padding: 14px 16px !important;
}
.nm-pagina-stats .guardstats-kpi-label,
.nm-pagina-stats .vacstats-kpi-label,
.nm-pagina-stats .asiststats-kpi-label,
.nm-pagina-stats .planstats-kpi-label,
.nm-pagina-stats .notas-kpi-label,
.nm-pagina-stats .repstats-kpi-label {
  color: var(--nm-muted) !important; font: 700 10.5px var(--nm-font) !important; letter-spacing: .06em;
}
.nm-pagina-stats .guardstats-kpi-value,
.nm-pagina-stats .vacstats-kpi-value,
.nm-pagina-stats .asiststats-kpi-value,
.nm-pagina-stats .planstats-kpi-value,
.nm-pagina-stats .notas-kpi-value,
.nm-pagina-stats .repstats-kpi-value {
  color: var(--nm-text) !important; font: 750 26px/1.1 var(--nm-font) !important;
}
.nm-pagina-stats .guardstats-kpi-note,
.nm-pagina-stats .vacstats-kpi-note,
.nm-pagina-stats .asiststats-kpi-note,
.nm-pagina-stats .planstats-kpi-note,
.nm-pagina-stats .notas-kpi-note,
.nm-pagina-stats .repstats-kpi-note {
  color: var(--nm-muted) !important; font-size: 12px !important;
}
.nm-pagina-stats .guardstats-sections,
.nm-pagina-stats .vacstats-sections,
.nm-pagina-stats .asiststats-sections,
.nm-pagina-stats .planstats-sections,
.nm-pagina-stats .notas-sections,
.nm-pagina-stats .repstats-sections {
  position: sticky; top: 64px; z-index: 6; padding: 8px 0; margin: 4px 0 12px !important; background: var(--nm-bg);
}
.nm-pagina-stats .guardstats-sectionlink,
.nm-pagina-stats .vacstats-sectionlink,
.nm-pagina-stats .asiststats-sectionlink,
.nm-pagina-stats .planstats-sectionlink,
.nm-pagina-stats .notas-sectionlink,
.nm-pagina-stats .repstats-sectionlink {
  background: var(--nm-card) !important; color: var(--nm-text) !important; border: 1px solid var(--nm-line); font: 600 13px var(--nm-font) !important; padding: 6px 12px !important;
}
.nm-pagina-stats .guardstats-sectionlink:hover,
.nm-pagina-stats .vacstats-sectionlink:hover,
.nm-pagina-stats .asiststats-sectionlink:hover,
.nm-pagina-stats .planstats-sectionlink:hover,
.nm-pagina-stats .notas-sectionlink:hover,
.nm-pagina-stats .repstats-sectionlink:hover {
  border-color: var(--nm-accent); color: var(--nm-accent-ink) !important;
}
.nm-pagina-stats .guardstats-section,
.nm-pagina-stats .vacstats-section,
.nm-pagina-stats .asiststats-section,
.nm-pagina-stats .planstats-section,
.nm-pagina-stats .notas-section,
.nm-pagina-stats .repstats-section {
  scroll-margin-top: 120px; margin-bottom: 22px !important;
}
.nm-pagina-stats .guardstats-sectiontitle,
.nm-pagina-stats .vacstats-sectiontitle,
.nm-pagina-stats .asiststats-sectiontitle,
.nm-pagina-stats .planstats-sectiontitle,
.nm-pagina-stats .notas-sectiontitle,
.nm-pagina-stats .repstats-sectiontitle {
  color: var(--nm-text) !important; font: 700 17px var(--nm-font) !important;
}
.nm-pagina-stats .guardstats-sectionnote,
.nm-pagina-stats .vacstats-sectionnote,
.nm-pagina-stats .asiststats-sectionnote,
.nm-pagina-stats .planstats-sectionnote,
.nm-pagina-stats .notas-sectionnote,
.nm-pagina-stats .repstats-sectionnote {
  color: var(--nm-muted) !important; font-size: 12.5px !important;
}
.nm-pagina-stats .guardstats-exportbtn,
.nm-pagina-stats .vacstats-exportbtn,
.nm-pagina-stats .asiststats-exportbtn,
.nm-pagina-stats .planstats-exportbtn,
.nm-pagina-stats .notas-exportbtn,
.nm-pagina-stats .repstats-exportbtn {
  height: 32px; padding: 0 12px !important; border: 1px solid var(--nm-line) !important; border-radius: 8px !important; background: var(--nm-card) !important; color: var(--nm-text) !important; font: 600 12.5px var(--nm-font) !important;
}
.nm-pagina-stats .guardstats-exportbtn:hover,
.nm-pagina-stats .vacstats-exportbtn:hover,
.nm-pagina-stats .asiststats-exportbtn:hover,
.nm-pagina-stats .planstats-exportbtn:hover,
.nm-pagina-stats .notas-exportbtn:hover,
.nm-pagina-stats .repstats-exportbtn:hover {
  background: var(--nm-hover) !important;
}
.nm-pagina-stats .guardstats-legendchip, .nm-pagina-stats .guardstats-legend-item,
.nm-pagina-stats .vacstats-legendchip, .nm-pagina-stats .vacstats-legend-item,
.nm-pagina-stats .asiststats-legendchip, .nm-pagina-stats .asiststats-legend-item,
.nm-pagina-stats .planstats-legendchip, .nm-pagina-stats .planstats-legend-item,
.nm-pagina-stats .notas-legendchip, .nm-pagina-stats .notas-legend-item,
.nm-pagina-stats .repstats-legendchip, .nm-pagina-stats .repstats-legend-item {
  background: var(--nm-hover) !important; color: var(--nm-muted) !important; font-size: 12px !important;
}
.nm-pagina-stats .guardstats-tablewrap, .nm-pagina-stats .guardstats-table-wrap,
.nm-pagina-stats .vacstats-tablewrap, .nm-pagina-stats .vacstats-table-wrap,
.nm-pagina-stats .asiststats-tablewrap, .nm-pagina-stats .asiststats-table-wrap,
.nm-pagina-stats .planstats-tablewrap, .nm-pagina-stats .planstats-table-wrap,
.nm-pagina-stats .notas-tablewrap, .nm-pagina-stats .notas-table-wrap,
.nm-pagina-stats .repstats-tablewrap, .nm-pagina-stats .repstats-table-wrap {
  border: 1px solid var(--nm-line) !important; border-radius: 12px !important; box-shadow: none !important; background: var(--nm-card) !important;
}
.nm-pagina-stats .guardstats-table,
.nm-pagina-stats .vacstats-table,
.nm-pagina-stats .asiststats-table,
.nm-pagina-stats .planstats-table,
.nm-pagina-stats .notas-table,
.nm-pagina-stats .repstats-table {
  font-family: var(--nm-font); color: var(--nm-text);
}
.nm-pagina-stats .guardstats-table thead th,
.nm-pagina-stats .vacstats-table thead th,
.nm-pagina-stats .asiststats-table thead th,
.nm-pagina-stats .planstats-table thead th,
.nm-pagina-stats .notas-table thead th,
.nm-pagina-stats .repstats-table thead th {
  background: var(--nm-hover) !important; color: var(--nm-muted) !important; font: 700 11.5px var(--nm-font) !important; padding: 9px 8px !important; border-bottom: 1px solid var(--nm-line) !important;
}
.nm-pagina-stats .guardstats-table tbody td, .nm-pagina-stats .guardstats-table tbody th,
.nm-pagina-stats .vacstats-table tbody td, .nm-pagina-stats .vacstats-table tbody th,
.nm-pagina-stats .asiststats-table tbody td, .nm-pagina-stats .asiststats-table tbody th,
.nm-pagina-stats .planstats-table tbody td, .nm-pagina-stats .planstats-table tbody th,
.nm-pagina-stats .notas-table tbody td, .nm-pagina-stats .notas-table tbody th,
.nm-pagina-stats .repstats-table tbody td, .nm-pagina-stats .repstats-table tbody th {
  background: var(--nm-card) !important; border-bottom: 1px solid var(--nm-rejilla) !important; padding: 7px 8px !important;
}
.nm-pagina-stats .guardstats-table tbody tr:hover td, .nm-pagina-stats .guardstats-table tbody tr:hover th,
.nm-pagina-stats .vacstats-table tbody tr:hover td, .nm-pagina-stats .vacstats-table tbody tr:hover th,
.nm-pagina-stats .asiststats-table tbody tr:hover td, .nm-pagina-stats .asiststats-table tbody tr:hover th,
.nm-pagina-stats .planstats-table tbody tr:hover td, .nm-pagina-stats .planstats-table tbody tr:hover th,
.nm-pagina-stats .notas-table tbody tr:hover td, .nm-pagina-stats .notas-table tbody tr:hover th,
.nm-pagina-stats .repstats-table tbody tr:hover td, .nm-pagina-stats .repstats-table tbody tr:hover th {
  background-color: color-mix(in srgb, var(--nm-accent) 6%, var(--nm-card)) !important;
}
.nm-pagina-stats .guardstats-table tbody tr.guardstats-group-row th, .nm-pagina-stats .guardstats-table tbody tr.guardstats-group-row td,
.nm-pagina-stats .vacstats-table tbody tr.vacstats-group-row th, .nm-pagina-stats .vacstats-table tbody tr.vacstats-group-row td,
.nm-pagina-stats .asiststats-table tbody tr.asiststats-group-row th, .nm-pagina-stats .asiststats-table tbody tr.asiststats-group-row td,
.nm-pagina-stats .planstats-table tbody tr.planstats-group-row th, .nm-pagina-stats .planstats-table tbody tr.planstats-group-row td,
.nm-pagina-stats .notas-table tbody tr.notas-group-row th, .nm-pagina-stats .notas-table tbody tr.notas-group-row td,
.nm-pagina-stats .repstats-table tbody tr.repstats-group-row th, .nm-pagina-stats .repstats-table tbody tr.repstats-group-row td {
  background: var(--nm-hover) !important; color: var(--nm-text) !important; font: 700 12px var(--nm-font) !important; text-transform: uppercase; letter-spacing: .05em;
}
.nm-pagina-stats .guardstats-persona strong, .nm-pagina-stats .guardstats-persona-main,
.nm-pagina-stats .vacstats-persona strong, .nm-pagina-stats .vacstats-persona-main,
.nm-pagina-stats .asiststats-persona strong, .nm-pagina-stats .asiststats-persona-main,
.nm-pagina-stats .planstats-persona strong, .nm-pagina-stats .planstats-persona-main,
.nm-pagina-stats .notas-persona strong, .nm-pagina-stats .notas-persona-main,
.nm-pagina-stats .repstats-persona strong, .nm-pagina-stats .repstats-persona-main {
  color: var(--nm-text) !important; font-size: 13.5px !important;
}
.nm-pagina-stats .guardstats-persona-id, .nm-pagina-stats .guardstats-persona-meta,
.nm-pagina-stats .vacstats-persona-id, .nm-pagina-stats .vacstats-persona-meta,
.nm-pagina-stats .asiststats-persona-id, .nm-pagina-stats .asiststats-persona-meta,
.nm-pagina-stats .planstats-persona-id, .nm-pagina-stats .planstats-persona-meta,
.nm-pagina-stats .notas-persona-id, .nm-pagina-stats .notas-persona-meta,
.nm-pagina-stats .repstats-persona-id, .nm-pagina-stats .repstats-persona-meta {
  color: var(--nm-muted) !important;
}
.nm-pagina-stats .guardstats-cell-main,
.nm-pagina-stats .vacstats-cell-main,
.nm-pagina-stats .asiststats-cell-main,
.nm-pagina-stats .planstats-cell-main,
.nm-pagina-stats .notas-cell-main,
.nm-pagina-stats .repstats-cell-main {
  color: var(--nm-text) !important; font: 700 15px/1.1 var(--nm-font) !important;
}
.nm-pagina-stats .guardstats-cell-sub,
.nm-pagina-stats .vacstats-cell-sub,
.nm-pagina-stats .asiststats-cell-sub,
.nm-pagina-stats .planstats-cell-sub,
.nm-pagina-stats .notas-cell-sub,
.nm-pagina-stats .repstats-cell-sub {
  color: var(--nm-muted) !important; font-size: 9.5px !important;
}
.nm-pagina-stats .guardstats-total, .nm-pagina-stats .guardstats-total .guardstats-cell-main,
.nm-pagina-stats .vacstats-total, .nm-pagina-stats .vacstats-total .vacstats-cell-main,
.nm-pagina-stats .asiststats-total, .nm-pagina-stats .asiststats-total .asiststats-cell-main,
.nm-pagina-stats .planstats-total, .nm-pagina-stats .planstats-total .planstats-cell-main,
.nm-pagina-stats .notas-total, .nm-pagina-stats .notas-total .notas-cell-main,
.nm-pagina-stats .repstats-total, .nm-pagina-stats .repstats-total .repstats-cell-main {
  color: var(--nm-primary) !important;
}
.nm-pagina-stats .guardstats-monthcard,
.nm-pagina-stats .vacstats-monthcard,
.nm-pagina-stats .asiststats-monthcard,
.nm-pagina-stats .planstats-monthcard,
.nm-pagina-stats .notas-monthcard,
.nm-pagina-stats .repstats-monthcard {
  background: var(--nm-card) !important; border-color: var(--nm-line) !important; border-radius: 10px !important;
}
.nm-pagina-stats .guardstats-monthline,
.nm-pagina-stats .vacstats-monthline,
.nm-pagina-stats .asiststats-monthline,
.nm-pagina-stats .planstats-monthline,
.nm-pagina-stats .notas-monthline,
.nm-pagina-stats .repstats-monthline {
  color: var(--nm-muted) !important;
}
.nm-pagina-stats .guardstats-monthline strong,
.nm-pagina-stats .vacstats-monthline strong,
.nm-pagina-stats .asiststats-monthline strong,
.nm-pagina-stats .planstats-monthline strong,
.nm-pagina-stats .notas-monthline strong,
.nm-pagina-stats .repstats-monthline strong {
  color: var(--nm-text) !important;
}
.nm-pagina-stats .guardstats-empty, .nm-pagina-stats .guardstats-empty-state,
.nm-pagina-stats .vacstats-empty, .nm-pagina-stats .vacstats-empty-state,
.nm-pagina-stats .asiststats-empty, .nm-pagina-stats .asiststats-empty-state,
.nm-pagina-stats .planstats-empty, .nm-pagina-stats .planstats-empty-state,
.nm-pagina-stats .notas-empty, .nm-pagina-stats .notas-empty-state,
.nm-pagina-stats .repstats-empty, .nm-pagina-stats .repstats-empty-state {
  color: var(--nm-muted) !important;
}

/* mapa de calor: cuanto más alta la cifra en su columna, más intenso el fondo */
.nm-pagina-stats table td.nm-stats-heat { background-image: linear-gradient(rgb(106 188 212 / calc(var(--nm-heat) * .42)), rgb(106 188 212 / calc(var(--nm-heat) * .42))) !important; }
.nm-pagina-stats table td.nm-stats-cero, .nm-pagina-stats table td.nm-stats-cero [class*="-cell-main"] { color: var(--nm-muted) !important; opacity: .55; }
/* tu fila */
.nm-pagina-stats table tr.nm-stats-yo > th:first-child { box-shadow: inset 3px 0 0 var(--nm-primary); }
.nm-pagina-stats table tr.nm-stats-yo [class*="-persona"] strong { color: var(--nm-primary) !important; }
/* media del grupo: al pie, siempre a la vista */
.nm-pagina-stats table tfoot tr.nm-stats-media > * { position: sticky; bottom: 0; z-index: 2; background: var(--nm-hover) !important; color: var(--nm-text); font: 700 13px var(--nm-font); text-align: center; padding: 9px 8px; border-top: 2px solid var(--nm-line); }
.nm-pagina-stats table tfoot tr.nm-stats-media > th { left: 0; z-index: 3; text-align: left; color: var(--nm-muted); font-size: 11.5px; text-transform: uppercase; letter-spacing: .05em; }
@media (max-width: 760px) {
  .nm-stats-tabs { width: auto; }
  .nm-stats-tab { padding: 6px 10px; font-size: 13px; }
}
/* filtros: rejilla que se adapta al ancho, todo a la izquierda */
.nm-pagina-stats .guardstats-filterform,
.nm-pagina-stats .vacstats-filterform,
.nm-pagina-stats .asiststats-filterform,
.nm-pagina-stats .planstats-filterform,
.nm-pagina-stats .notas-filterform,
.nm-pagina-stats .repstats-filterform { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)) !important; gap: 12px 14px !important; text-align: left; align-items: end; }
.nm-pagina-stats .guardstats-filterbox,
.nm-pagina-stats .vacstats-filterbox,
.nm-pagina-stats .asiststats-filterbox,
.nm-pagina-stats .planstats-filterbox,
.nm-pagina-stats .notas-filterbox,
.nm-pagina-stats .repstats-filterbox { text-align: left; min-width: 0; }
.nm-pagina-stats .guardstats-filterbox .ms-btn,
.nm-pagina-stats .vacstats-filterbox .ms-btn,
.nm-pagina-stats .asiststats-filterbox .ms-btn,
.nm-pagina-stats .planstats-filterbox .ms-btn,
.nm-pagina-stats .notas-filterbox .ms-btn,
.nm-pagina-stats .repstats-filterbox .ms-btn { width: 100% !important; justify-content: space-between; }
.nm-pagina-stats .guardstats-filter-actions,
.nm-pagina-stats .vacstats-filter-actions,
.nm-pagina-stats .asiststats-filter-actions,
.nm-pagina-stats .planstats-filter-actions,
.nm-pagina-stats .notas-filter-actions,
.nm-pagina-stats .repstats-filter-actions { grid-column: auto !important; justify-content: flex-start !important; }
/* cabeceras que ordenan la tabla al pulsarlas */
.nm-pagina-stats th.nm-stats-ordenable { cursor: pointer; user-select: none; }
.nm-pagina-stats th.nm-stats-ordenable:hover { color: var(--nm-text) !important; }
.nm-pagina-stats th.nm-stats-ordenable[data-orden]::after { content: " \25BC"; font-size: 9px; color: var(--nm-primary); }
.nm-pagina-stats th.nm-stats-ordenable[data-orden="asc"]::after { content: " \25B2"; }
/* "por mes" de vacaciones, asistencia y planning: la tarjeta sólo lleva una cifra, se aplana */
.nm-pagina-stats [class$="-monthcard"]:not(:has([class$="-monthline"])) { border: 0 !important; background: transparent !important; padding: 0 !important; box-shadow: none !important; }
.nm-pagina-stats [class$="-monthcard"]:not(:has([class$="-monthline"])) [class$="-cell-sub"] { display: none; }
/* planning por mes: el total grande y, debajo, laborables · festivos en pequeño */
.nm-pagina-stats .planstats-monthcard { display: flex !important; flex-wrap: wrap; justify-content: center; align-items: baseline; gap: 0 6px !important; border: 0 !important; background: transparent !important; padding: 0 !important; }
.nm-pagina-stats .planstats-monthline { display: inline-flex !important; gap: 2px; font-size: 10.5px !important; color: var(--nm-muted) !important; }
.nm-pagina-stats .planstats-monthline > span { display: none; }
.nm-pagina-stats .planstats-monthline:first-child { flex-basis: 100%; justify-content: center; }
.nm-pagina-stats .planstats-monthline:first-child strong { font: 700 15px var(--nm-font) !important; color: var(--nm-text) !important; }
.nm-pagina-stats .planstats-monthline:not(:first-child) strong { font: 600 10.5px var(--nm-font) !important; color: var(--nm-muted) !important; }
.nm-pagina-stats .planstats-monthline:nth-child(2) strong::after { content: " lab"; font-weight: 500; }
.nm-pagina-stats .planstats-monthline:nth-child(3) strong::after { content: " fest"; font-weight: 500; }
/* meses sin dato (sin simulación, fuera del reparto...): un guion; el motivo, al pasar el ratón */
.nm-pagina-stats .nm-stats-nada { display: block; text-align: center; color: var(--nm-muted); opacity: .6; cursor: help; }
/* desplegables de filtros: la lista, más ancha que el botón; cada opción en una línea; "sólo" al pasar */
.nm-pagina-stats .multi-select .ms-panel { width: max-content !important; min-width: 100% !important; max-width: min(420px, calc(100vw - 32px)) !important; }
.nm-pagina-stats .multi-select .ms-label { text-overflow: clip !important; }
.nm-pagina-stats .multi-select .ms-item { display: flex !important; align-items: center; gap: 6px; padding: 4px 8px !important; margin: 0 !important; border-radius: 6px; font: 500 13px var(--nm-font) !important; text-transform: none !important; letter-spacing: 0 !important; color: var(--nm-text) !important; cursor: pointer; }
.nm-pagina-stats .multi-select .ms-item:hover { background: var(--nm-hover); }
.nm-pagina-stats .nm-ms-solo { margin: 0 0 0 auto !important; line-height: 1.4; padding: 1px 8px; border: 1px solid var(--nm-line); border-radius: 999px; background: var(--nm-card); color: var(--nm-accent-ink); font: 600 11px var(--nm-font); cursor: pointer; visibility: hidden; }
.nm-pagina-stats .ms-item:hover .nm-ms-solo, .nm-pagina-stats .nm-ms-solo:focus { visibility: visible; }
.nm-pagina-stats .nm-ms-solo:hover { border-color: var(--nm-accent); background: var(--nm-accent-soft); }
@media (hover: none) { .nm-pagina-stats .nm-ms-solo { visibility: visible; } }
/* planning por mes: el total y debajo los tipos, de más a menos */
.nm-pagina-stats .planstats-mes { display: flex; flex-direction: column; align-items: center; gap: 5px; }
.nm-pagina-stats .planstats-mes-tipos { display: flex; flex-wrap: wrap; justify-content: center; gap: 3px; max-width: 150px; }
.nm-pagina-stats .planstats-mes-tipo { display: inline-flex; gap: 3px; padding: 1px 6px; border-radius: 6px; background: var(--nm-hover); color: var(--nm-text); font: 600 10.5px var(--nm-font); white-space: nowrap; box-shadow: inset 0 0 0 1px rgba(0,0,0,.12); }
.nm-pagina-stats .planstats-mes-tipo b { font-weight: 800; }

/* =====================================================================================
   MI PERFIL (perfil.php, preferencias.php, vacaciones.php): cabecera común en perfil_ui.php
   ===================================================================================== */
.nm-ptabs { display: flex; flex-wrap: wrap; gap: 6px; padding: 4px; border-radius: 12px; background: var(--nm-hover); width: fit-content; max-width: 100%; }
.nm-ptab { display: inline-flex; align-items: center; gap: 7px; padding: 7px 14px; border-radius: 9px; color: var(--nm-muted) !important; font: 600 14px var(--nm-font); text-decoration: none !important; }
.nm-ptab:hover { color: var(--nm-text) !important; background: color-mix(in srgb, var(--nm-card) 60%, transparent); }
.nm-ptab.is-active { background: var(--nm-card); color: var(--nm-text) !important; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.nm-ptab.is-active .fa-solid { color: var(--nm-primary); }
.nm-perfil-nav { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin: 0 0 18px; }

/* Mis datos */
.nm-perfil-rejilla { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.nm-perfil-col { display: grid; gap: 18px; min-width: 0; }
.nm-perfil-quien { display: flex; align-items: center; gap: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--nm-line-soft); }
.nm-perfil-avatar { flex: 0 0 auto; width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; background: var(--nm-primary); color: #fff; font: 700 28px var(--nm-font); }
.nm-perfil-nombre { font: 700 19px/1.25 var(--nm-font); color: var(--nm-text); }
.nm-perfil-apodo { color: var(--nm-muted); font-size: 14px; margin-top: 2px; }
.nm-perfil-etiquetas { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.nm-perfil-etq { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; background: var(--nm-hover); color: var(--nm-text); font: 600 12.5px var(--nm-font); }
.nm-perfil-etq .fa-solid { color: var(--nm-muted); }
.nm-perfil-datos { margin: 0; padding: 6px 0 0; }
.nm-perfil-datos > div { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--nm-line-soft); }
.nm-perfil-datos dt { color: var(--nm-muted); font: 600 13px var(--nm-font); }
.nm-perfil-datos dd { margin: 0; color: var(--nm-text); font-size: 14px; overflow-wrap: anywhere; }
.nm-perfil-nota { margin: 14px 0 0 !important; }
.nm-perfil-grupo + .nm-perfil-grupo { margin-top: 14px; }
.nm-perfil-grupo-t { color: var(--nm-muted); font: 700 11px var(--nm-font); text-transform: uppercase; letter-spacing: .06em; margin-bottom: 7px; }
.nm-perfil-sgs { display: flex; flex-wrap: wrap; gap: 6px; }
.nm-perfil-sg { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 8px; border: 1px solid var(--nm-line); background: var(--nm-card); color: var(--nm-text); font: 600 13px var(--nm-font); }
.nm-perfil-sg-serv { color: var(--nm-muted); font-weight: 500; font-size: 12px; }
.nm-perfil-tema { max-width: 380px; }
.nm-perfil-tema button { flex-direction: row !important; justify-content: center; gap: 7px !important; padding: 9px 8px !important; font-size: 13.5px !important; }

/* Preferencias */
.nm-pref-rejilla { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.nm-pref-col { display: grid; gap: 18px; min-width: 0; }
.nm-pref-ideal-cifras { display: flex; gap: 12px; flex-wrap: wrap; }
.nm-pref-ideal-cifras > div { flex: 1 1 140px; display: flex; flex-direction: column; gap: 2px; padding: 10px 14px; border-radius: 10px; background: var(--nm-hover); }
.nm-pref-ideal-cifras b { font: 750 26px/1.1 var(--nm-font); color: var(--nm-text); }
.nm-pref-ideal-cifras span { color: var(--nm-muted); font-size: 12.5px; }
.nm-pref-ideal .nm-ayuda { margin: 10px 0 0 !important; }
.nm-pref-bloque + .nm-pref-bloque { margin-top: 16px; }
.nm-pref-bloque-t { color: var(--nm-muted); font: 700 11px var(--nm-font); text-transform: uppercase; letter-spacing: .06em; margin-bottom: 2px; }
.nm-pref-fila { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 10px 0; border-bottom: 1px solid var(--nm-line-soft); }
.nm-pref-bloque .nm-pref-fila:last-child { border-bottom: 0; }
.nm-pref-fila-org { border-bottom: 1px solid var(--nm-line-soft) !important; margin-bottom: 10px; padding-top: 0; }
.nm-pref-txt { min-width: 0; }
.nm-pref-nombre { color: var(--nm-text); font: 600 14px/1.3 var(--nm-font); }
.nm-pref-desc { color: var(--nm-muted); font-size: 12.5px; line-height: 1.4; margin-top: 2px; }
.nm-pref-ok { margin-left: 8px; font-size: 12px; font-weight: 600; }
.nm-pref-ok.is-ok { color: #1d7a1d; }
.nm-pref-ok.is-error { color: #bd0000; }
/* interruptor Sí / No (dos o tres opciones) hecho con los radios de siempre */
.nm-pref-sino { flex: 0 0 auto; display: inline-flex; border: 1px solid var(--nm-line); border-radius: 8px; overflow: hidden; background: var(--nm-card); }
.nm-pref-sino input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.nm-pref-sino label { display: inline-flex; align-items: center; justify-content: center; min-width: 46px; height: 32px; padding: 0 12px; margin: 0 !important; color: var(--nm-muted); font: 600 13px var(--nm-font) !important; cursor: pointer; user-select: none; }
.nm-pref-sino label + input + label { border-left: 1px solid var(--nm-line); }
.nm-pref-sino label:hover { background: var(--nm-hover); color: var(--nm-text); }
.nm-pref-sino input:checked + label { background: var(--nm-accent-soft); color: var(--nm-accent-ink); }
.nm-pref-sino input[value="No"]:checked + label { background: var(--nm-hover); color: var(--nm-text); }
.nm-pref-sino input:focus-visible + label { outline: 2px solid var(--nm-accent); outline-offset: -2px; }
/* cupo de bloqueos */
.nm-pref-cupo { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; background: var(--nm-hover); color: var(--nm-muted); font: 600 12.5px var(--nm-font); }
.nm-pref-cupo-lleno { color: var(--nm-text); }
.nm-pref-cupo-pasado { background: #fdecec; color: #bd0000; }
:root[data-tema="oscuro"] .nm-pref-cupo-pasado { background: #3a1616; color: #ff8a8a; }
/* puentes: calendario pequeño y los dos botones */
.nm-pte-tabla, .nm-pte-tabla > tbody { display: block; width: 100%; border: 0 !important; margin: 0 !important; }
.nm-pte-tabla tr.nm-pte { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 10px; padding: 8px 10px; margin: 0 0 8px; border: 1px solid var(--nm-line); border-radius: 10px; background: var(--nm-card) !important; }
.nm-pte-tabla tr.nm-pte:last-child { margin-bottom: 0; }
.nm-pte-tabla tr.nm-pte > td { display: block; padding: 0 !important; border: 0 !important; background: transparent !important; }
.nm-pte-tabla tr.tr-preferencia { background: color-mix(in srgb, #e0c200 14%, var(--nm-card)) !important; border-color: color-mix(in srgb, #c9a800 55%, var(--nm-line)); }
.nm-pte-tabla tr.tr-bloqueo { background: color-mix(in srgb, #6b7280 16%, var(--nm-card)) !important; border-color: color-mix(in srgb, #4b5563 50%, var(--nm-line)); }
.nm-pte-tabla tr.tr-congelado .nm-pte-cal { opacity: .7; }
.nm-pte-cal { display: flex; flex-wrap: wrap; gap: 3px; margin: 0 !important; box-shadow: none !important; border: 0 !important; width: auto !important; flex-direction: row !important; }
.nm-pte-dia { display: flex; flex-direction: column; align-items: center; width: 30px; padding: 0 0 3px; border-radius: 6px; background: var(--nm-hover); color: var(--nm-text); line-height: 1.15; }
.nm-pte-dia b { font: 700 13px var(--nm-font); }
.nm-pte-mes { height: 13px; font: 700 9.5px/13px var(--nm-font); text-transform: uppercase; letter-spacing: .03em; color: var(--nm-muted); }
.nm-pte-letra { font: 600 9.5px var(--nm-font); opacity: .75; }
.nm-pte-dia.nm-pte-lab { background: var(--nm-hover); color: var(--nm-text); box-shadow: inset 0 0 0 1px var(--nm-line); }
.nm-pte-dia.nm-pte-lab .nm-pte-mes, .nm-pte-dia.nm-pte-lab .nm-pte-letra { color: var(--nm-muted); }
.nm-pte-dia.nm-pte-finde { background: #abddec; color: #0d3b4c; }
:root[data-tema="oscuro"] .nm-pte-dia.nm-pte-finde { background: #1d4656; color: #cdeef8; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-pte-dia.nm-pte-finde { background: #1d4656; color: #cdeef8; } }
.nm-pte-dia[class*="td_but_"] .nm-pte-mes { color: inherit; opacity: .85; }
.td-puente-buttons { margin-left: auto; white-space: nowrap; }
.td-puente-buttons button { display: inline-flex !important; align-items: center; gap: 6px; height: 32px; width: auto !important; margin: 0 0 0 6px !important; padding: 0 12px !important; border-radius: 8px !important; border: 1px solid var(--nm-line) !important; background: var(--nm-card) !important; color: var(--nm-muted) !important; font: 600 13px var(--nm-font) !important; line-height: 1 !important; box-shadow: none !important; cursor: pointer; filter: none !important; }
.td-puente-buttons button:hover:not(:disabled) { color: var(--nm-text) !important; border-color: var(--nm-muted) !important; }
.td-puente-buttons button.but_16Prchecked { background: #f5d90a !important; border-color: #d4b800 !important; color: #3d3300 !important; }
.td-puente-buttons button.but_7checked { background: #374151 !important; border-color: #374151 !important; color: #fff !important; }
:root[data-tema="oscuro"] .td-puente-buttons button.but_7checked { background: #e5e7eb !important; border-color: #e5e7eb !important; color: #111 !important; }
.td-puente-buttons button:disabled { opacity: .45; cursor: not-allowed; }
.td-puente-buttons .puente-candado { color: var(--nm-muted); margin-left: 8px; }

@media (max-width: 900px) {
  .nm-perfil-rejilla, .nm-pref-rejilla { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 560px) {
  .nm-perfil-nav { flex-wrap: nowrap; align-items: stretch; }
  .nm-ptabs { flex: 1 1 auto; flex-wrap: nowrap; gap: 2px; }
  .nm-ptab { flex: 1 1 0; flex-direction: column; justify-content: center; gap: 3px; padding: 6px 4px; font-size: 12px; text-align: center; }
  .nm-perfil-pass { padding: 0 12px !important; height: auto !important; }
  .nm-perfil-pass-t { display: none; }
  .nm-perfil-datos > div { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .nm-pref-fila { flex-direction: column; align-items: flex-start; gap: 8px; }
}

/* =====================================================================================
   SESIONES (sesiones.php) y datos de la videollamada (también en el aviso de Inicio)
   ===================================================================================== */
/* ID de reunión y código de acceso, cada uno con su botón de copiar */
.nm-zoom-datos { display: flex; flex-wrap: wrap; gap: 8px; }
.nm-zoom-dato { display: inline-flex; align-items: center; gap: 8px; padding: 4px 4px 4px 10px; border-radius: 9px; background: var(--nm-card); border: 1px solid var(--nm-line); color: var(--nm-text); }
.nm-zoom-dato-k { font: 700 10.5px var(--nm-font); text-transform: uppercase; letter-spacing: .05em; color: var(--nm-muted); }
.nm-zoom-dato-v { font: 700 14px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color: var(--nm-text); background: transparent; padding: 0; letter-spacing: .02em; }
.nm-zoom-copiar { display: inline-flex; align-items: center; gap: 5px; height: 28px; padding: 0 10px; border-radius: 7px; border: 1px solid var(--nm-line); background: var(--nm-hover); color: var(--nm-text); font: 600 12.5px var(--nm-font); cursor: pointer; }
.nm-zoom-copiar:hover { border-color: var(--nm-accent); color: var(--nm-accent-ink); }
.nm-zoom-copiar.is-ok { background: #e3f4e3; border-color: #9fd3a6; color: #1d7a1d; }
:root[data-tema="oscuro"] .nm-zoom-copiar.is-ok { background: #12301a; border-color: #2c6b3a; color: #7ee08f; }
/* aviso de sesión en Inicio: el botón y los datos juntos, a la derecha */
.nm-sesion-acc { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; }

/* tarjeta de la videollamada */
.nm-ses-zoom { margin-bottom: 16px; }
.nm-ses-zoom-fila { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.nm-ses-zoom-ic { width: 40px; height: 40px; border-radius: 10px; display: grid !important; place-items: center; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font-size: 17px; flex: none; }
.nm-ses-zoom-t { flex: 1 1 220px; min-width: 0; display: flex; flex-direction: column; gap: 2px; line-height: 1.35; }
.nm-ses-zoom-t b { font: 650 15px var(--nm-font); color: var(--nm-text); }
.nm-ses-zoom-t .nm-tenue { font-size: 13px; }
.nm-ses-zoom-acc { display: flex; flex-wrap: wrap; gap: 8px; }
.nm-ses-zoom .nm-zoom-datos { margin: 12px 0 0 54px; }
.nm-ses-zoom-editar { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) auto; gap: 10px; align-items: end; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--nm-line-soft); }
.nm-ses-zoom-editar[hidden] { display: none; }
.nm-ses-zoom-editar label { display: flex; flex-direction: column; gap: 5px; margin: 0; color: var(--nm-muted); font: 600 12.5px var(--nm-font); }
.nm-ses-zoom-editar input { height: 36px; padding: 0 10px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); font: 14px var(--nm-font); width: 100%; box-sizing: border-box; }
.nm-ses-zoom-editar input:focus { outline: 2px solid var(--nm-accent); outline-offset: -1px; }
.nm-ses-zoom-botones { display: flex; gap: 8px; flex-wrap: wrap; }

/* próximas / antiguas, años */
.nm-ses-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 0 0 12px; }
.nm-ses-anos { display: flex; flex-wrap: wrap; gap: 6px; }
.nm-ses-ano { padding: 5px 12px; border-radius: 999px; border: 1px solid var(--nm-line); background: var(--nm-card); color: var(--nm-text) !important; font: 600 13px var(--nm-font); text-decoration: none !important; }
.nm-ses-ano:hover { border-color: var(--nm-accent); }
.nm-ses-ano.activo { background: var(--nm-accent-soft); border-color: var(--nm-accent); color: var(--nm-accent-ink) !important; }
.nm-ses-pista { margin-left: auto; font-size: 12.5px; }

/* la lista */
.nm-ses-lista { overflow: hidden; }
.nm-ses-lista .tabla_resp { overflow-x: auto; }
.nm-ses-tabla { width: 100%; border-collapse: collapse; margin: 0 !important; font-family: var(--nm-font); color: var(--nm-text); }
.nm-ses-tabla thead th { background: var(--nm-hover) !important; color: var(--nm-muted) !important; font: 700 11.5px var(--nm-font) !important; text-align: left; padding: 9px 12px !important; border: 0 !important; border-bottom: 1px solid var(--nm-line) !important; }
.nm-ses-tabla td { background: var(--nm-card) !important; border: 0 !important; border-bottom: 1px solid var(--nm-line-soft) !important; padding: 10px 12px !important; vertical-align: middle; text-align: left; color: var(--nm-text); }
.nm-ses-tabla tr.nm-ses-mes th { background: var(--nm-card) !important; color: var(--nm-accent-ink) !important; font: 700 12px var(--nm-font) !important; text-transform: uppercase; letter-spacing: .06em; text-align: left; padding: 14px 12px 6px !important; border: 0 !important; border-bottom: 1px solid var(--nm-line) !important; }
.nm-ses-tabla tr.sesion-row:hover td { background: color-mix(in srgb, var(--nm-accent) 6%, var(--nm-card)) !important; }
.nm-ses-tabla tr.nm-ses-mover { cursor: grab; }
.nm-ses-tabla tr.nm-ses-sobre td { background: var(--nm-accent-soft) !important; }
.nm-ses-dia { width: 1%; white-space: nowrap; color: var(--nm-muted) !important; font-size: 13px; text-transform: capitalize; }
.nm-ses-fecha { width: 1%; white-space: nowrap; font-size: 13px; color: var(--nm-muted) !important; line-height: 1.35; }
.nm-ses-fecha span:first-child { color: var(--nm-text); font-weight: 650; font-size: 14px; }
.nm-ses-tema { line-height: 1.35; }
.nm-ses-tema > span:first-child { color: var(--nm-muted); font-size: 12.5px; }
.nm-ses-tema b { font-size: 14.5px; font-weight: 650; }
.nm-ses-ponente { line-height: 1.35; font-size: 13.5px; }
.nm-ses-ponente span:first-child { font-weight: 650; }
.nm-ses-ponente span + br + span { color: var(--nm-muted); font-size: 12.5px; }
.nm-ses-chip { display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: 999px; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font: 700 10.5px var(--nm-font); text-transform: uppercase; letter-spacing: .05em; vertical-align: 2px; }
.nm-ses-chip-hoy { background: var(--nm-primary); color: #fff; }
.nm-ses-tabla tr.nm-ses-proxima td { background: color-mix(in srgb, var(--nm-accent) 9%, var(--nm-card)) !important; }
.nm-ses-tabla tr.nm-ses-proxima td.nm-ses-dia { box-shadow: inset 3px 0 0 var(--nm-accent); }
.nm-ses-th-estado, .nm-ses-th-acc { width: 1%; white-space: nowrap; text-align: center !important; }
/* hecha / no hecha */
.nm-ses-tabla td.sesion-status-cell { width: 1%; text-align: center !important; padding: 6px 10px !important; }
.nm-ses-tabla td.sesion-status-cell.status-done { color: #1d7a1d; }
.nm-ses-tabla td.sesion-status-cell.status-notdone { color: #bd0000; }
.sesion-status-buttons { display: inline-flex; gap: 4px; }
.sesion-status-btn { width: 30px; height: 28px; border-radius: 7px; border: 1px solid var(--nm-line); background: var(--nm-card); color: var(--nm-muted); cursor: pointer; padding: 0; }
.sesion-status-btn:hover { color: var(--nm-text); border-color: var(--nm-muted); }
.sesion-status-btn[data-status="1"].active { background: #1d7a1d; border-color: #1d7a1d; color: #fff; }
.sesion-status-btn[data-status="0"].active { background: #bd0000; border-color: #bd0000; color: #fff; }
.sesion-row-actions { display: inline-flex; gap: 4px; }
.sesion-action-btn { width: 30px; height: 28px; border-radius: 7px; border: 1px solid var(--nm-line); background: var(--nm-card); color: var(--nm-muted); cursor: pointer; padding: 0; }
.sesion-action-edit:hover { color: var(--nm-accent-ink); border-color: var(--nm-accent); }
.sesion-action-delete:hover { color: #bd0000; border-color: #e3a0a0; }

@media (max-width: 760px) {
  .nm-ses-zoom .nm-zoom-datos { margin-left: 0; }
  .nm-ses-zoom-editar { grid-template-columns: minmax(0, 1fr); }
  .nm-ses-pista { display: none; }
  .nm-ses-tabla thead { display: none; }
  .nm-ses-tabla, .nm-ses-tabla tbody { display: block; }
  .nm-ses-tabla tr.sesion-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; grid-template-areas: "fecha tema estado" "fecha ponente acc"; column-gap: 12px; padding: 10px 12px; border-bottom: 1px solid var(--nm-line-soft); background: var(--nm-card); }
  .nm-ses-tabla tr.sesion-row td { border: 0 !important; padding: 2px 0 !important; background: transparent !important; }
  .nm-ses-tabla tr.nm-ses-proxima { background: color-mix(in srgb, var(--nm-accent) 9%, var(--nm-card)) !important; box-shadow: inset 3px 0 0 var(--nm-accent); }
  .nm-ses-tabla td.nm-ses-dia { display: none; }
  .nm-ses-tabla td.nm-ses-fecha { grid-area: fecha; }
  .nm-ses-tabla td.nm-ses-tema { grid-area: tema; }
  .nm-ses-tabla td.nm-ses-ponente { grid-area: ponente; }
  .nm-ses-tabla td.sesion-status-cell { grid-area: estado; width: auto; }
  .nm-ses-tabla tr.sesion-row > td:last-child:not(.sesion-status-cell) { grid-area: acc; text-align: right !important; }
  .nm-ses-tabla tr.nm-ses-mes { display: block; }
  .nm-ses-tabla tr.nm-ses-mes th { display: block; }
}

/* =====================================================================================
   VER GUARDIAS (vercalendario.php). El calendario usa el de Tu calendario (.nm-card-tucal) y el
   modo tabla el del generador (.nm-pagina-gen); aquí sólo lo propio de esta página.
   ===================================================================================== */
.nm-pagina-vercal #filterForm { display: flex; flex-wrap: wrap; align-items: center; }
.nm-pagina-vercal #filterForm > .nm-sel { height: 34px; }
.nm-pagina-vercal .nm-vhead-acc .nm-seg a { height: 34px; }
.nm-vc-pista { font-size: 12.5px; }
.nm-card-vercal .nm-card-h { margin-bottom: 2px; }
/* el esqueleto de carga, con los colores del tema */
.nm-pagina-vercal .calendar-skeleton-cell, .nm-pagina-vercal .calendar-skeleton-line { background: var(--nm-hover) !important; }
/* cada guardia del día en su línea: el subgrupo pequeño y el nombre */
.nm-card-vercal .date-events-per { display: flex; align-items: baseline; gap: 5px; float: none !important; width: auto !important; margin: 0 !important; padding: 2px 5px !important; border-radius: 4px; background: var(--nm-card); color: var(--nm-text); font: 600 11.5px/1.3 var(--nm-font); text-align: left; text-transform: none; cursor: pointer; white-space: normal !important; height: auto !important; }
.nm-card-vercal .date-events-per:hover { box-shadow: inset 0 0 0 1px var(--nm-accent); }
.nm-card-vercal .date-events-per .nm-vc-sg { flex: none; min-width: 22px; color: var(--nm-accent-ink); font-weight: 700; font-size: 10px; text-transform: none; }
.nm-card-vercal .date-events-per .nm-vc-n { min-width: 0; overflow-wrap: anywhere; white-space: normal !important; }
.nm-card-vercal .date-events-per.nm-vc-sem .nm-vc-sg, .nm-card-vercal .date-events-per.nm-vc-qa .nm-vc-sg { color: #bd0000; }
.nm-card-vercal .date-events-per.nm-vc-dp .nm-vc-sg { color: #7A0040; }
.nm-card-vercal .date-events-per.nm-vc-tx .nm-vc-sg { color: #3f8a66; }
:root[data-tema="oscuro"] .nm-card-vercal .date-events-per.nm-vc-dp .nm-vc-sg { color: #e07ab0; }
:root[data-tema="oscuro"] .nm-card-vercal .date-events-per.nm-vc-sem .nm-vc-sg, :root[data-tema="oscuro"] .nm-card-vercal .date-events-per.nm-vc-qa .nm-vc-sg { color: #ff8a8a; }
/* las tuyas (o las de la persona que has pulsado): en rojo */
.nm-card-vercal .date-events-per.td_guardia { background: #bd0000 !important; color: #fff !important; }
.nm-card-vercal .date-events-per.td_guardia .nm-vc-sg { color: rgba(255,255,255,.8) !important; }
.nm-card-vercal .date-events-per.td_pre_guardia { background: #f3c9c9 !important; color: #8b0000 !important; }
.nm-card-vercal .date-events-per.td_pre_guardiaotro { background: #e9c6d8 !important; color: #5e0032 !important; }
.nm-card-vercal .date-events-per.td_pre_vacaciones { background: #cfe8dc !important; color: #1f5c40 !important; }
.nm-card-vercal .date-events-per.guardia-imaginaria .nm-vc-n { color: #006fd6; }
.nm-card-vercal div#calendar ul.dates li.weekend .date-events-per:not(.td_guardia):not([class*="td_pre_"]) { background: color-mix(in srgb, var(--nm-card) 70%, transparent); }
.nm-card-vercal div#calendar ul.dates li { min-height: 110px; }
.nm-card-vercal .date-num { font-weight: 700; font-size: 13px; }
@media (max-width: 1100px) {
  .nm-card-vercal .date-events-per { gap: 3px; padding: 1px 3px !important; font-size: 10.5px; letter-spacing: -.01em; }
  .nm-card-vercal .date-events-per .nm-vc-sg { min-width: 0; font-size: 8.5px; }
  .nm-card-vercal div#calendar ul.dates li { padding: 4px; }
}
@media (max-width: 760px) {
  .nm-vc-pista { display: none; }
  .nm-card-vercal div#calendar ul.dates li { min-height: 70px; }
  .nm-card-vercal .date-events-per { flex-direction: column; gap: 0; padding: 1px 3px !important; font-size: 9.5px; text-align: center; align-items: center; }
  .nm-card-vercal .date-events-per .nm-vc-sg { min-width: 0; font-size: 8.5px; }
}
/* Ver guardias en el móvil: el mes como lista de días (la rejilla de 7 columnas no cabe) */
@media (max-width: 560px) {
  .nm-card-vercal div#calendar ul.label { display: none; }
  .nm-card-vercal div#calendar ul.dates { display: block; margin: 0; }
  .nm-card-vercal div#calendar ul.dates li { display: flex; flex-direction: row; align-items: flex-start; gap: 10px; min-height: 0; margin: 0 0 6px; padding: 8px 10px; }
  .nm-card-vercal div#calendar ul.dates li.outmonth { display: none; }
  .nm-card-vercal div#calendar ul.dates li .date-num { flex: 0 0 34px; display: flex; flex-direction: column; align-items: flex-start; font-size: 17px; line-height: 1.1; }
  .nm-card-vercal div#calendar ul.dates li .date-num::after { content: attr(data-dia); font-size: 10.5px; font-weight: 600; color: var(--nm-muted); text-transform: uppercase; }
  .nm-card-vercal div#calendar ul.dates li .date-num .cal_span_special { font-size: 9px; order: 3; }
  .nm-card-vercal .date-events { flex-direction: row !important; flex-wrap: wrap; gap: 4px !important; min-height: 0 !important; }
  .nm-card-vercal .date-events-per { flex-direction: row !important; gap: 4px !important; align-items: baseline !important; padding: 3px 7px !important; font-size: 12.5px !important; text-align: left !important; border-radius: 6px; }
  .nm-card-vercal .date-events-per .nm-vc-sg { font-size: 10px !important; }
  .nm-card-vercal .date-events-per .nm-vc-n { overflow-wrap: normal; }
  .nm-card-vercal .date-events-it { font-size: 12px !important; padding: 2px 8px !important; }
}

/* =====================================================================================
   ROTACIONES (rotaciones.php) y la navegación de Gestionar grupo (group_nav.php) en v2
   ===================================================================================== */
.nm-grupo-nav { margin: 0 0 18px; overflow-x: auto; scrollbar-width: none; }
@media (max-width: 560px) { .nm-grupo-nav .nm-ptab { flex: 0 0 auto; min-width: 64px; } }
.nm-rot-card { margin-bottom: 18px; }
.nm-rot-card .nm-card-h { align-items: flex-start; }
.nm-rot-sub { margin: 3px 0 0 !important; }
.nm-rot-acc { display: flex; gap: 8px; flex-wrap: wrap; }
.nm-pagina-rot .rotacion-delete-mode-button.is-active { background: #bd0000; border-color: #bd0000; color: #fff !important; }
.nm-rot-borrando { margin: 0 0 10px; padding: 8px 12px; border-radius: 8px; background: #fdecec; color: #8b0000; font: 600 13px var(--nm-font); }
:root[data-tema="oscuro"] .nm-rot-borrando { background: #3a1616; color: #ffb3b3; }
.nm-rot-borrando[hidden] { display: none; }

/* la tabla: columna de nombres fija a la izquierda y el año a la derecha */
.nm-pagina-rot .rotaciones-table-wrap { max-width: 100%; overflow: auto; position: relative; border: 1px solid var(--nm-line); border-radius: 10px; }
.nm-pagina-rot .rotaciones-table { table-layout: fixed; border-collapse: separate; border-spacing: 0; width: 100%; min-width: 820px; margin: 0 !important; font-family: var(--nm-font); }
.nm-pagina-rot .rotacion-col-nombre { width: 170px; }
.nm-pagina-rot .rotaciones-table th, .nm-pagina-rot .rotaciones-table td { border: 0 !important; background: var(--nm-card); color: var(--nm-text); padding: 0; }
.nm-pagina-rot .rotaciones-table thead th { position: sticky; top: 0; z-index: 25; background: var(--nm-hover) !important; border-bottom: 1px solid var(--nm-line) !important; }
.nm-pagina-rot .rotaciones-table .headcol, .nm-pagina-rot .rotaciones-table .rotacion-headcol { position: sticky !important; left: 0; z-index: 20; background: var(--nm-card) !important; border-right: 1px solid var(--nm-line) !important; }
.nm-pagina-rot .rotaciones-table thead .rotacion-headcol { z-index: 30; background: var(--nm-hover) !important; color: var(--nm-muted) !important; font: 700 12px var(--nm-font); text-align: left; padding: 0 12px; }
/* El año en la esquina de la tabla también es un desplegable (como en el calendario laboral) */
.nm-pagina-rot .rotaciones-table thead .rotacion-headcol:has(.rotacion-anyo-sel) { padding: 4px 8px !important; }
.nm-pagina-rot .rotacion-anyo-sel { width: 100%; height: 30px; font-weight: 650; }
.nm-pagina-rot .rotaciones-table tbody tr + tr > td { border-top: 1px solid var(--nm-line-soft) !important; }
.nm-pagina-rot .rotaciones-table tbody td.nm-vacio { padding: 18px 12px; }

/* la persona */
.nm-pagina-rot .rotacion-persona { position: relative; text-align: left; padding: 8px 34px 8px 12px !important; vertical-align: middle; }
.nm-pagina-rot .rotacion-nombre { font: 650 13.5px var(--nm-font); color: var(--nm-text); }
.nm-pagina-rot .rotacion-cat { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 5px; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font: 700 10.5px/17px var(--nm-font); vertical-align: 1px; }
.nm-pagina-rot .rotaciones-table .headcol { box-shadow: -6px 0 0 var(--nm-card); }
.nm-pagina-rot .rotacion-persona.nm-yo { box-shadow: -6px 0 0 var(--nm-card), inset 3px 0 0 var(--nm-primary); }
.nm-pagina-rot .rotacion-persona.nm-yo .rotacion-nombre { color: var(--nm-primary); }
.nm-pagina-rot .rotacion-add-row { display: none; position: absolute; right: 8px; top: 50%; transform: translateY(-50%); width: 24px; height: 24px; border-radius: 6px; border: 1px solid var(--nm-line); background: var(--nm-card); color: var(--nm-accent-ink); cursor: pointer; padding: 0; }
.nm-pagina-rot .peoples:hover .rotacion-add-row, .nm-pagina-rot .rotacion-add-row:focus { display: block; }
.nm-pagina-rot .rotacion-add-row:hover { border-color: var(--nm-accent); }
@media (hover: none) { .nm-pagina-rot .rotacion-add-row { display: block; } }

/* los meses (cabecera) y sus rayas en cada fila */
.nm-pagina-rot .rotacion-scale-th { padding: 0 !important; }
.nm-pagina-rot .rotacion-month-scale { position: relative; width: 100%; min-height: 30px; }
.nm-pagina-rot .rotacion-month-scale span { display: flex; position: absolute; top: 0; bottom: 0; align-items: center; justify-content: center; box-sizing: border-box; border-left: 1px solid var(--nm-line); color: var(--nm-muted); font: 700 11.5px var(--nm-font); text-transform: capitalize; background: transparent; }
.nm-pagina-rot .rotacion-timeline-cell { padding: 0 !important; vertical-align: middle; }
.nm-pagina-rot .rotacion-timeline { position: relative; width: 100%; overflow: hidden; background: transparent; }
.nm-pagina-rot .rotacion-timeline-months { position: absolute; inset: 0; pointer-events: none; }
.nm-pagina-rot .rotacion-timeline-months span { position: absolute; top: 0; bottom: 0; box-sizing: border-box; border-left: 1px solid var(--nm-line-soft); font-size: 0; color: transparent; }
.nm-pagina-rot .rotacion-timeline-months span:nth-child(even) { background: color-mix(in srgb, var(--nm-hover) 55%, transparent); }
.nm-pagina-rot .rotacion-hoy { position: absolute; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: var(--nm-primary); opacity: .55; z-index: 2; pointer-events: none; }

/* cada rotación, una barra */
.nm-pagina-rot .rotacion-banner { position: absolute; display: block; height: 36px; box-sizing: border-box; overflow: hidden; padding: 4px 6px 4px 7px; border-radius: 7px; container-type: inline-size; background: var(--nm-hover); border: 1px solid var(--nm-line); border-left: 4px solid var(--nm-accent); color: var(--nm-text); font: 12px/1.15 var(--nm-font); text-align: left; white-space: nowrap; z-index: 3; }
.nm-pagina-rot .rotacion-banner.is-current-service { background: #bd0000; border-color: #8f0000; border-left-color: #7d0000; color: #fff; }
.nm-pagina-rot .rotacion-servicio { display: block; font-weight: 700; overflow: hidden; text-overflow: clip; }
.nm-pagina-rot .rotacion-fechas { display: block; margin-top: 2px; font-size: 10.5px; color: var(--nm-muted); overflow: hidden; text-overflow: clip; }
.nm-pagina-rot .rotacion-banner.is-current-service .rotacion-fechas { color: #ffe0e0; }
.nm-pagina-rot .rotacion-categoria { display: none; }
/* barras estrechas (un mes): sólo el servicio; las fechas siguen en el globo */
@container (max-width: 70px) {
  .nm-pagina-rot .rotacion-fechas { display: none; }
  .nm-pagina-rot .rotacion-servicio { line-height: 26px; font-size: 11px; }
}
.nm-pagina-rot .rotacion-edit { display: none; position: absolute; top: 4px; right: 4px; width: 18px; height: 18px; padding: 0; border: 0; border-radius: 4px; background: rgba(0,0,0,.55); color: #fff; font-size: 10px; cursor: pointer; }
.nm-pagina-rot .rotacion-banner:hover .rotacion-edit { display: block; }
body.rotacion-delete-mode .nm-pagina-rot .rotacion-banner { cursor: pointer; }
body.rotacion-delete-mode .nm-pagina-rot .rotacion-banner:hover { background: #f3c9c9; border-color: #bd0000; color: #8b0000; }
body.rotacion-delete-mode .nm-pagina-rot .rotacion-banner:hover .rotacion-fechas { color: #8b0000; }
body.rotacion-delete-mode .nm-pagina-rot .rotacion-banner:hover .rotacion-edit { display: none; }

/* buscador de persona del modal de rotantes externos */
.rotacion-selected-person { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 7px 9px; border-radius: 8px; background: var(--nm-hover); color: var(--nm-text); }
.rotacion-selected-clear { border: 0; background: transparent; color: var(--nm-muted); cursor: pointer; }
.rotacion-selected-person.nodisplay, .rotacion-delete-select.nodisplay { display: none; }
@media (max-width: 760px) {
  .nm-pagina-rot .rotacion-col-nombre { width: 120px; }
  .nm-pagina-rot .rotacion-persona { padding: 6px 30px 6px 8px !important; }
  .nm-pagina-rot .rotacion-cat { display: block; margin: 2px 0 0; width: fit-content; }
}

/* =====================================================================================
   REPARTIR PACIENTES (repartir.php). La tabla se queda como estaba por dentro (el JS lee las
   celdas por posición); aquí sólo cambian colores, letra y espacios.
   ===================================================================================== */
.nm-rep-nav { margin: 0 0 16px; }
.nm-rep-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.nm-rep-barra input[type="date"].nm-sel { padding: 0 8px; }
.nm-rep-barra-sep { flex: 1 1 auto; }
.nm-rep-toggles { display: inline-flex; flex-wrap: wrap; gap: 8px; }
.nm-rep-toggle.is-on { background: var(--nm-accent-soft); border-color: var(--nm-accent); color: var(--nm-accent-ink) !important; }

/* el balance: cuántos pacientes lleva hoy cada uno */
.nm-pagina-rep .rep-balance { background: var(--nm-hover); border: 0; border-radius: 10px; margin: 0 0 14px; font-family: var(--nm-font); }
.nm-pagina-rep .rep-balance-titulo { color: var(--nm-muted); font: 700 11px var(--nm-font); letter-spacing: .06em; }
.nm-pagina-rep .rep-chip { background: var(--nm-card); border: 1px solid var(--nm-line); color: var(--nm-text); font: 600 13px var(--nm-font); border-radius: 999px; }
.nm-pagina-rep .rep-chip-cero { color: var(--nm-muted); border-style: dashed; }
.nm-pagina-rep .rep-chip-n { background: var(--nm-hover); color: var(--nm-muted); }
.nm-pagina-rep .rep-chip-con .rep-chip-n { background: var(--nm-accent); color: #fff; }

/* la tabla */
.nm-pagina-rep .tabla_resp { border: 1px solid var(--nm-line); border-radius: 10px; }
.nm-pagina-rep table.tabla_planning { margin: 0 !important; font-family: var(--nm-font); border-collapse: separate; border-spacing: 0; }
.nm-pagina-rep table.tabla_planning thead th { background: var(--nm-hover) !important; color: var(--nm-muted) !important; font: 700 11.5px var(--nm-font) !important; text-align: left; padding: 9px 10px !important; border: 0 !important; border-bottom: 1px solid var(--nm-line) !important; height: auto !important; line-height: 1.3 !important; }
.nm-pagina-rep table.tabla_planning thead th .nm-tenue { font-weight: 500; }
.nm-pagina-rep table.tabla_planning tbody td, .nm-pagina-rep table.tabla_planning tbody th { background: var(--nm-card) !important; color: var(--nm-text); border: 0 !important; border-bottom: 1px solid var(--nm-line-soft) !important; border-right: 1px solid var(--nm-line-soft) !important; padding: 5px 8px !important; height: 34px; vertical-align: middle; }
.nm-pagina-rep table.tabla_planning tr.transparent td { height: 10px; padding: 0 !important; background: var(--nm-hover) !important; border: 0 !important; }
.nm-pagina-rep tbody.rep-box-vacio .rep-pac-th { color: var(--nm-muted); }
/* cama · paciente */
.nm-pagina-rep th.rep-pac-th { position: relative; text-align: left; white-space: nowrap; overflow: hidden; }
.nm-pagina-rep .rep-cama { display: inline-block; min-width: 34px; margin-right: 6px; padding: 1px 6px; border-radius: 5px; background: var(--nm-hover); color: var(--nm-muted); font: 700 11px/1.5 var(--nm-font); text-align: center; }
.nm-pagina-rep .rep-pac { font: 700 13px var(--nm-font); color: var(--nm-text); }
.nm-pagina-rep tr.peoples[draggable="true"] th.rep-pac-th { cursor: grab; }
.nm-pagina-rep tr.rep-sobre td, .nm-pagina-rep tr.rep-sobre th { background: var(--nm-accent-soft) !important; }
/* los botones que salen al pasar por un paciente: todos a la derecha, sin tapar la cama */
.nm-pagina-rep #but_alta, .nm-pagina-rep #but_add { left: auto !important; right: 5px !important; }
.nm-pagina-rep #but_edit { left: auto !important; right: 28px !important; }
.nm-pagina-rep #but_view { left: auto !important; right: 51px !important; }
.nm-pagina-rep #but_drag { left: auto !important; right: 74px !important; }
.nm-pagina-rep tbody.rep-box-vacio #but_drag { right: 28px !important; }
.nm-pagina-rep th.rep-pac-th:hover .rep-pac { opacity: .35; }
.nm-pagina-rep .but_patient { top: 50%; transform: translateY(-50%); width: 20px; height: 20px; padding: 0 !important; border-radius: 6px; display: grid; place-items: center; font-size: 10px; line-height: 1; box-shadow: 0 1px 3px rgba(0,0,0,.25); }
/* responsable habitual */
.nm-pagina-rep select.rep-resp { width: 100%; max-width: 100%; height: 28px; border: 1px solid var(--nm-line); border-radius: 6px; background: var(--nm-card); color: var(--nm-text); font: 13px var(--nm-font); padding: 0 4px; }
/* cada médico disponible: pulsar para asignárselo hoy */
.nm-pagina-rep td.td_addevlistener { cursor: pointer; font-size: 12.5px; line-height: 1.2; white-space: normal; }
.nm-pagina-rep td.td_addevlistener:hover { background: color-mix(in srgb, var(--nm-accent) 10%, var(--nm-card)) !important; }
.nm-pagina-rep .rep-doc { display: inline; white-space: normal; pointer-events: none; }
.nm-pagina-rep .rep-veces { float: right; min-width: 18px; padding: 0 4px; border-radius: 9px; background: var(--nm-accent); color: #fff; font: 700 11px/18px var(--nm-font); text-align: center; pointer-events: none; }
.nm-pagina-rep td.td_reparto_sel { background: #bd0000 !important; color: #fff !important; font-weight: 700; }
.nm-pagina-rep td.td_reparto_sel .rep-veces { background: rgba(255,255,255,.3); }
.nm-pagina-rep td.td_pre_borrar { filter: none !important; background: color-mix(in srgb, #bd0000 14%, var(--nm-card)) !important; }
.nm-pagina-rep th.rep-pie { background: var(--nm-card) !important; padding: 12px 10px !important; text-align: left; border: 0 !important; }
@media (max-width: 760px) {
  .nm-pagina-rep th.rep-pac-th { white-space: normal; line-height: 1.25; }
  .nm-pagina-rep .rep-cama { display: block; width: fit-content; margin: 0 0 2px; }
  .nm-pagina-rep .rep-pac { font-size: 12px; }
  .nm-rep-barra-sep { display: none; }
  .nm-rep-toggles { width: 100%; }
}

/* VER PUENTES (verpuentes.php): la vista de puentes del generador, sólo para mirar */
.nm-vp-sub { margin: 4px 0 0 !important; }
/* los contadores de cada persona (N tot / N pts) en la vista de puentes, legibles también en oscuro */
.nm-pagina-gn #puentes_calendar_table td.td_nguardias { background-color: var(--nm-card) !important; padding: 0 2px; }
.nm-pagina-gn #puentes_calendar_table td.td_nguardias p { margin: 0; border-radius: 4px; font-size: 11px; font-weight: 700; line-height: 18px; background: color-mix(in srgb, #bd0000 10%, var(--nm-card)) !important; color: #a30000 !important; }
:root[data-tema="oscuro"] .nm-pagina-gn #puentes_calendar_table td.td_nguardias p { color: #ff9b9b !important; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-pagina-gn #puentes_calendar_table td.td_nguardias p { color: #ff9b9b !important; } }.nm-pv-titulo { color: var(--nm-text); font: 650 15px var(--nm-font) !important; background: transparent; }
.nm-pv-titulo .fa-solid { color: var(--nm-accent-ink); margin-right: 4px; }

/* =====================================================================================
   ADMINISTRACIÓN (.nm-pagina-adm): Gestionar grupo, Gestionar calendarios, Calendario laboral,
   Eventos especiales, Incompatibilidades, Personalizar grupo, Control de eventos y de login.
   Son páginas grandes con el marcado de siempre; esta capa las pone con el aspecto de la v2
   (también en oscuro) sin cambiar su HTML. Lo propio de cada una va después, con su clase.
   ===================================================================================== */
.nm-adm-sub { margin: 4px 0 0 !important; color: var(--nm-muted); font: 14px/1.45 var(--nm-font); max-width: 760px; }
.nm-pagina-adm .nm-ptabs { margin: 0 0 18px; }

/* bloques: tarjetas */
.nm-pagina-adm ul.group.elements { margin: 0 0 16px !important; padding: 0 !important; background: transparent !important; }
.nm-pagina-adm ul.group.elements > li { width: 100% !important; float: none !important; margin: 0 !important; }
.nm-pagina-adm ul.group.elements > li > article,
.nm-pagina-adm ul > article { background: var(--nm-card) !important; color: var(--nm-text); border: 1px solid var(--nm-line); border-radius: 12px; box-shadow: 0 1px 2px rgba(0,0,0,.04) !important; padding: 16px !important; margin: 0 0 16px !important; text-align: left; }
.nm-pagina-adm ul.group.elements > li > article[style*="padding:0"], .nm-pagina-adm ul.group.elements > li > article[style*="padding: 0"] { padding: 0 !important; overflow: hidden; }

/* separadores: títulos de sección */
.nm-pagina-adm .white_separator { float: none !important; width: auto !important; margin: 22px 0 10px !important; border: 0 !important; box-shadow: none !important; background: transparent !important; display: flex; align-items: center; gap: 8px; }
.nm-pagina-adm .white_separator > span, .nm-pagina-adm .white_separator_span { float: none !important; background: transparent !important; color: var(--nm-text) !important; padding: 0 !important; font: 700 16px var(--nm-font) !important; text-transform: none !important; letter-spacing: 0 !important; }
.nm-pagina-adm .barra_botones { gap: 8px; }

/* botones de la plantilla, con el aspecto de .nm-btn */
.nm-pagina-adm :is(.bigbutton-grey, .bigbutton-lightred, .bigbutton-lightblue, .bigbutton-black, .smallbutton-grey, .buttonblack, .buttonblackchecked),
.nm-adm-modal :is(.bigbutton-grey, .bigbutton-lightred, .bigbutton-lightblue) {
  display: inline-flex !important; align-items: center; justify-content: center; gap: 6px; min-height: 34px; height: auto; padding: 6px 14px !important; margin: 2px !important;
  border-radius: 8px !important; border: 1px solid var(--nm-line) !important; background: var(--nm-card) !important; color: var(--nm-text) !important;
  font: 600 14px/1.2 var(--nm-font) !important; box-shadow: none !important; text-decoration: none !important; cursor: pointer; filter: none !important; width: auto;
}
.nm-pagina-adm :is(.bigbutton-grey, .bigbutton-lightblue, .bigbutton-black, .smallbutton-grey, .buttonblack):hover { background: var(--nm-hover) !important; border-color: var(--nm-muted) !important; }
.nm-pagina-adm :is(.bigbutton-lightred) { color: #bd0000 !important; border-color: color-mix(in srgb, #bd0000 35%, var(--nm-line)) !important; }
.nm-pagina-adm :is(.bigbutton-lightred):hover { background: #bd0000 !important; border-color: #bd0000 !important; color: #fff !important; }
:root[data-tema="oscuro"] .nm-pagina-adm .bigbutton-lightred { color: #ff8a8a !important; }
.nm-pagina-adm .buttonblackchecked { background: var(--nm-accent-soft) !important; border-color: var(--nm-accent) !important; color: var(--nm-accent-ink) !important; }
.nm-pagina-adm button img[style*="brightness(0)"] { filter: none !important; width: 16px !important; }
:root[data-tema="oscuro"] .nm-pagina-adm button img[style*="brightness(0)"] { filter: invert(1) !important; }

/* campos */
.nm-pagina-adm :is(.normal_input, .like_login_input, .separator_input),
.nm-pagina-adm select:not(.nm-sel),
.nm-pagina-adm input:is([type="text"], [type="number"], [type="date"], [type="email"], [type="time"], [type="search"], [type="month"]):not(.nm-sel) {
  min-height: 32px; border: 1px solid var(--nm-line) !important; border-radius: 7px !important; background-color: var(--nm-card) !important; color: var(--nm-text) !important;
  font: 13.5px var(--nm-font) !important; box-shadow: none !important; box-sizing: border-box;
}
.nm-pagina-adm :is(.normal_input, .like_login_input):disabled, .nm-pagina-adm select:disabled, .nm-pagina-adm input:disabled { background-color: var(--nm-hover) !important; color: var(--nm-text) !important; opacity: 1; }
.nm-pagina-adm :is(input, select, textarea):focus { outline: 2px solid var(--nm-accent); outline-offset: -1px; }
.nm-pagina-adm textarea { border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); font: 13.5px var(--nm-font); }
/* los campos rosas de las extras */
.nm-pagina-adm input[type][style*="#ffc1c1"]:not(.nm-sel):not(.x), .nm-pagina-adm input.normal_input[style*="#ffc1c1"] { background-color: color-mix(in srgb, #bd0000 13%, var(--nm-card)) !important; border-color: color-mix(in srgb, #bd0000 30%, var(--nm-line)) !important; }

/* tablas (las de rejilla de días tienen su estilo propio: .tabla_planning / tablas de guardias) */
.nm-pagina-adm .tabla_resp { border-radius: 10px; }
.nm-pagina-adm table, .nm-pagina-adm table tr { border-color: var(--nm-line-soft) !important; }
.nm-pagina-adm table:not(.tabla_planning):not(.tabla_guardias):not(.nm-adm-libre):not(.vil-table) { font-family: var(--nm-font); color: var(--nm-text); border-collapse: collapse !important; border-spacing: 0 !important; background-color: transparent !important; margin: 0 !important; }
.nm-pagina-adm table:not(.tabla_planning):not(.tabla_guardias):not(.nm-adm-libre):not(.vil-table) thead th,
.nm-pagina-adm table:not(.tabla_planning):not(.tabla_guardias):not(.nm-adm-libre):not(.vil-table) > tr:first-child > th {
  background: var(--nm-hover) !important; color: var(--nm-muted) !important; font: 700 12px var(--nm-font) !important; border: 0 !important; border-bottom: 1px solid var(--nm-line) !important; padding: 9px 8px !important; text-align: center;
}
.nm-pagina-adm table:not(.tabla_planning):not(.tabla_guardias):not(.nm-adm-libre):not(.vil-table) td,
.nm-pagina-adm table:not(.tabla_planning):not(.tabla_guardias):not(.nm-adm-libre):not(.vil-table) tbody th {
  color: var(--nm-text); border: 0 !important; border-bottom: 1px solid var(--nm-line-soft) !important; padding: 7px 8px !important;
}
/* el fondo, sólo a las casillas sin clase: las que la tienen (festivos, fines de semana, eventos) llevan el suyo */
.nm-pagina-adm table:not(.tabla_planning):not(.tabla_guardias):not(.nm-adm-libre):not(.vil-table) :is(td, tbody th):not([class]),
.nm-pagina-adm table:not(.tabla_planning):not(.tabla_guardias):not(.nm-adm-libre):not(.vil-table) :is(td, tbody th)[class=""] { background-color: var(--nm-card); }
.nm-pagina-adm table:not(.tabla_planning):not(.tabla_guardias):not(.nm-adm-libre):not(.vil-table) tbody tr:hover > td:not([class]) { background-color: color-mix(in srgb, var(--nm-accent) 5%, var(--nm-card)); }

/* las casillas de los subgrupos (A, F, G, Res...): marcadas en verde */
.nm-pagina-adm .day-label { min-width: 26px !important; width: auto !important; height: 26px !important; padding: 0 6px !important; line-height: 24px !important; border-radius: 6px !important; box-sizing: border-box; border: 1px solid var(--nm-line) !important; background: var(--nm-card) !important; color: var(--nm-muted) !important; font: 600 12px/24px var(--nm-font) !important; box-shadow: none !important; }
.nm-pagina-adm .day-checkbox:checked + .day-label { background: #bd0000 !important; border-color: #bd0000 !important; color: #fff !important; }
.nm-pagina-adm .day-checkbox:disabled + .day-label { opacity: .55; }

/* globos de ayuda de la plantilla (.hasTooltip) */
.nm-pagina-adm .hasTooltip p { background: var(--nm-card) !important; color: var(--nm-text) !important; border: 1px solid var(--nm-line); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.18); font: 13px/1.4 var(--nm-font) !important; }

/* cajas de aviso y de error de la plantilla */
.nm-pagina-adm .error { border-radius: 8px; }
/* Gestionar grupo › Organización: el orden de las extras */
.nm-adm-org .extra-order-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
.nm-adm-org .extra-order-panel { width: auto !important; min-width: 0; overflow-x: auto !important; }
@media (max-width: 950px) { .nm-adm-org .extra-order-grid { grid-template-columns: minmax(0, 1fr); } }
/* filas compactas: con muchas extras la tabla no se acaba nunca */
#services.nm-adm-org .extra-order-table th, #services.nm-adm-org .extra-order-table td { padding: 2px 8px !important; height: auto !important; line-height: 1.25; font-size: 13px; }
#services.nm-adm-org .extra-order-table th { padding-top: 6px !important; padding-bottom: 6px !important; }
.nm-adm-org .extra-order-table .extra-scale-badge { padding: 3px 10px; }
.nm-adm-org .extra-order-editor { padding: 2px 8px; }
.nm-adm-org .extra-order-editor input[type="number"] { height: 22px; min-height: 0 !important; padding: 0 !important; }
.nm-adm-org .extra-order-panel { background: var(--nm-card) !important; color: var(--nm-text) !important; border: 1px solid var(--nm-line); border-radius: 12px; overflow: hidden; }
.nm-adm-org .nm-xo-titulo { padding: 11px 14px; font: 650 14.5px var(--nm-font); color: var(--nm-text); border-bottom: 1px solid var(--nm-line); background: var(--nm-card); }
.nm-adm-org .nm-xo-titulo .fa-solid { margin-right: 4px; }
.nm-adm-org .nm-xo-total-t { box-shadow: inset 4px 0 0 #bd0000; }
.nm-adm-org .nm-xo-total-t .fa-solid { color: #bd0000; }
.nm-adm-org .nm-xo-finde-t { box-shadow: inset 4px 0 0 var(--nm-accent); }
.nm-adm-org .nm-xo-finde-t .fa-solid { color: var(--nm-accent-ink); }
.nm-adm-org .extra-order-table tr.transparent > td { background: transparent !important; border: 0 !important; }
.nm-adm-org .extra-order-table td.nm-xo-total { background: var(--nm-hover) !important; color: var(--nm-text) !important; font-weight: 700; border: 0 !important; }
.nm-adm-org .extra-scale-badge { background: var(--nm-hover); color: var(--nm-text); }
.nm-adm-org .extra-scale-bar { background: color-mix(in srgb, var(--nm-card) 70%, transparent); }
@media (max-width: 760px) { .nm-adm-org .extra-order-panel { width: 100% !important; } }
/* Gestionar grupo › Viladecans: la rejilla de días, con los colores del tema */
.nm-adm-vil .vil-table thead th, .nm-adm-vil .vil-month-name { background: var(--nm-card) !important; color: var(--nm-text) !important; }
.nm-adm-vil .vil-table .headcol, .nm-adm-vil .vil-table .vil-headcol, .nm-adm-vil .vil-count-head, .nm-adm-vil .vil-count-cell { background: var(--nm-card) !important; color: var(--nm-text) !important; }
.nm-adm-vil .vil-table thead th { color: var(--nm-muted) !important; font-family: var(--nm-font); }
.nm-adm-vil .vil-day-row th, .nm-adm-vil .vil-week-label { color: var(--nm-text) !important; border-color: var(--nm-line-soft) !important; }
.nm-adm-vil .vil-week-current { background: color-mix(in srgb, #f5c400 18%, var(--nm-card)) !important; box-shadow: inset 0 0 0 2px #bd0000; }
.nm-adm-vil .vil-person { font: 600 12.5px var(--nm-font); color: var(--nm-text); }
.nm-adm-vil .vil-person span { color: var(--nm-accent-ink); }
.nm-adm-vil .vil-day-cell { border-top-color: var(--nm-card) !important; border-bottom-color: var(--nm-card) !important; border-left-color: var(--nm-line-soft) !important; }
.nm-adm-vil .vil-table td.td_weekend_plan:not([class*="td_but_"]) { background-color: var(--nm-finde) !important; }
.nm-adm-vil .vil-table .vil-month-start { border-left-color: var(--nm-text) !important; }
.nm-adm-vil .vil-guardia-label { color: var(--nm-text) !important; }
.nm-adm-vil .vil-loading-table { background: var(--nm-card) !important; border-color: var(--nm-line) !important; }
.nm-adm-vil .vil-loading-table th, .nm-adm-vil .vil-loading-table td { background: var(--nm-card) !important; color: var(--nm-muted) !important; }
:root[data-tema="oscuro"] .nm-adm-vil .vil-covered { background: #17361f !important; color: #8fd8a2; }
:root[data-tema="oscuro"] .nm-adm-vil .vil-missing { background: #3a1616 !important; color: #ff9b9b; }.nm-adm-vil .vil-table th, .nm-adm-vil .vil-table td { border-color: var(--nm-line-soft) !important; }
.nm-adm-vil .vil-table td.vil-day-cell:not([class*="td_"]):not(.vil-covered):not(.vil-missing) { background-color: var(--nm-card); }
/* desplegables hechos a mano (el candado de Cerrar en Gestionar calendarios) */
.nm-pagina-adm .dropdown-selected { background-color: var(--nm-card) !important; border-color: var(--nm-line) !important; color: var(--nm-text); border-radius: 8px; }
.nm-pagina-adm .dropdown-arrow { border-top-color: var(--nm-text); }
.nm-pagina-adm .dropdown-select-content { background-color: var(--nm-card) !important; color: var(--nm-text) !important; border-color: var(--nm-line) !important; border-radius: 8px; overflow: hidden; }
.nm-pagina-adm .dropdown-select-content .dropdown-option:hover { background-color: var(--nm-hover); }
/* la columna fija de nombres (headcol) de las tablas de administración */
.nm-pagina-adm table:not(.tabla_planning):not(.tabla_guardias) :is(td, th).headcol { background-color: var(--nm-card) !important; color: var(--nm-text) !important; font-family: var(--nm-font); }/* Calendario laboral › periodos de navidad, con los colores del tema */
.nm-adm-festivos .nv-intro, .nm-adm-festivos .nv-nota, .nm-adm-festivos .nv-dias, .nm-adm-festivos .nv-num small, .nm-adm-festivos .nv-campo label { color: var(--nm-muted); }
.nm-adm-festivos .nv-intro b, .nm-adm-festivos .nv-num, .nm-adm-festivos .nv-dias b { color: var(--nm-text); }
.nm-adm-festivos .nv-chip { background: var(--nm-hover); color: var(--nm-muted); }
.nm-adm-festivos .nv-periodo { background: var(--nm-card); border-color: var(--nm-line); border-radius: 10px; }
.nm-adm-festivos .nv-periodo.nv-mal { background: color-mix(in srgb, #bd0000 7%, var(--nm-card)); }
.nm-adm-festivos .nv-tira { border-color: var(--nm-line); border-radius: 6px; }
.nm-adm-festivos .nv-mes { background: var(--nm-muted); color: var(--nm-card); }
.nm-adm-festivos .nv-mes + .nv-mes { border-left-color: var(--nm-card); }
.nm-adm-festivos .nv-tira-numeros .nv-dia { background: var(--nm-hover); color: var(--nm-text); }
.nm-adm-festivos .nv-quitar, .nm-adm-festivos .nv-boton:not(.nv-boton-ok) { background: var(--nm-card); color: var(--nm-text); border-color: var(--nm-line); border-radius: 8px; }
.nm-adm-festivos .nv-quitar { color: #bd0000; }
.nm-adm-festivos .nv-boton { border-radius: 8px; font-family: var(--nm-font); }
/* pestañas de la plantilla (white_separator_option), p. ej. "Festivos Oficiales" */
.nm-pagina-adm .white_separator_option, .nm-pagina-adm .white_separator > span.white_separator_option { background: var(--nm-card) !important; color: var(--nm-text) !important; border: 1px solid var(--nm-line) !important; border-bottom: 0 !important; border-radius: 8px 8px 0 0; padding: 7px 12px !important; font: 600 13px var(--nm-font) !important; }/* barra de "Editar" (botones de evento con su nombre debajo o al lado) */
.nm-pagina-adm :is([class^="butlabel_"], [class*=" butlabel_"]) { color: var(--nm-text) !important; font-family: var(--nm-font); }
/* Incompatibilidades: sus piezas propias (.ie-*) con los colores del tema */
.nm-adm-incomp .ie-intro { background: color-mix(in srgb, var(--nm-accent) 8%, var(--nm-card)); border-color: var(--nm-line); border-left-color: var(--nm-accent); color: var(--nm-text); border-radius: 8px; font-family: var(--nm-font); }
.nm-adm-incomp .ie-intro b { color: var(--nm-text); }
:root[data-tema="oscuro"] .nm-adm-incomp .ie-intro .ie-ojo { color: #e8c46a; }
.nm-adm-incomp .ie-plantilla { background: var(--nm-card); color: var(--nm-text); border-color: var(--nm-line); border-radius: 10px; font-family: var(--nm-font); }
.nm-adm-incomp .ie-plantilla span { color: var(--nm-muted); }
.nm-adm-incomp .ie-plantilla:hover { border-color: var(--nm-accent); color: var(--nm-accent-ink); }
.nm-adm-incomp .ie-caja { background: var(--nm-card); border-color: var(--nm-line); border-radius: 12px; }
.nm-adm-incomp .ie-cab { background: var(--nm-hover); border-bottom-color: var(--nm-line); }
.nm-adm-incomp :is(.ie-nombre, .ie-max input, .ie-buscar) { background: var(--nm-card) !important; color: var(--nm-text) !important; border-color: var(--nm-line) !important; }
.nm-adm-incomp .ie-seg { background: var(--nm-card); border-color: var(--nm-line); }
.nm-adm-incomp .ie-seg button { color: var(--nm-muted); }
.nm-adm-incomp :is(.ie-max, .ie-interruptor) { color: var(--nm-muted); }
.nm-adm-incomp .ie-borrar { background: var(--nm-card); border-color: color-mix(in srgb, #bd0000 35%, var(--nm-line)); color: #bd0000; }
.nm-adm-incomp .ie-frase { color: var(--nm-text); border-bottom-color: var(--nm-line-soft); }
.nm-adm-incomp .ie-frase b { color: var(--nm-accent-ink); }
.nm-adm-incomp :is(.ie-campo > label, .ie-campo .ie-pista) { color: var(--nm-muted); }
.nm-adm-incomp .ie-chip { background: var(--nm-card); border-color: var(--nm-line); color: var(--nm-text); }
.nm-adm-incomp .ie-chip:hover { border-color: var(--nm-accent); color: var(--nm-accent-ink); }
.nm-adm-incomp .ie-chip.on { background: var(--nm-accent-ink); border-color: var(--nm-accent-ink); color: #fff; }
:root[data-tema="oscuro"] .nm-adm-incomp .ie-chip.on { background: var(--nm-accent); border-color: var(--nm-accent); color: #0b1a20; }
.nm-adm-incomp .ie-chip.ie-no.on { background: #bd0000; border-color: #bd0000; color: #fff; }
.nm-adm-incomp .ie-mas { border-color: var(--nm-line); color: var(--nm-muted); }
.nm-adm-incomp .ie-personas { background: var(--nm-hover); border-color: var(--nm-line-soft); }
.nm-adm-incomp .ie-vacia { background: var(--nm-card); border-color: var(--nm-line); color: var(--nm-muted); }
.nm-adm-incomp .ie-vacia b { color: var(--nm-text); }
:root[data-tema="oscuro"] .nm-adm-incomp .ie-ok { background: #12301a; border-color: #2c6b3a; color: #8fd8a2; }
:root[data-tema="oscuro"] .nm-adm-incomp .ie-mal { background: #3a1616; border-color: #6b2c2c; color: #ffb3b3; }.nm-adm-incomp .ie-barra { border-top-color: var(--nm-line-soft); }
.nm-adm-incomp .ie-boton:not(.ie-boton-guardar) { background: var(--nm-card); color: var(--nm-text); border-color: var(--nm-line); border-radius: 8px; }
.nm-adm-incomp .ie-boton { border-radius: 8px; font-family: var(--nm-font); }
:root[data-tema="oscuro"] .nm-adm-incomp .ie-sucio-linea { color: #e8c46a; }
:root[data-tema="oscuro"] .nm-adm-incomp .ie-sucio { background: #33290f; border-color: #6b5520; color: #f0d48a; }
/* Personalizar grupo */
.nm-pers-barra { margin: 0 0 16px; }
.nm-pers-sub { display: inline-flex; align-items: center; gap: 8px; margin: 0; color: var(--nm-muted); font: 600 13px var(--nm-font); }.nm-adm-personalizar .aside-element { background: var(--nm-card) !important; color: var(--nm-text) !important; border: 1px solid var(--nm-line); border-radius: 12px; box-shadow: none !important; }
.nm-adm-personalizar .aside-element :is(.cib-2of3, .cib-2of3a, .center-item-button) { color: var(--nm-text); }
.nm-adm-personalizar .center-item-button { border-color: var(--nm-line-soft) !important; }
.nm-adm-personalizar .center-item-button:hover { background: var(--nm-hover); }
.nm-adm-personalizar .lateral-button { background: var(--nm-card) !important; color: var(--nm-text) !important; border-radius: 8px; }
.nm-adm-personalizar .personalizar-apodo { background: var(--nm-hover) !important; color: var(--nm-text) !important; border-radius: 5px; }
.nm-adm-personalizar .lateral-button:hover { background: var(--nm-hover) !important; }
.nm-adm-personalizar .tittle-display, .nm-adm-personalizar .title-display { color: var(--nm-muted) !important; }
/* desplegables de varias opciones (.multi-select) y etiquetas de filtros en administración */
.nm-pagina-adm .multi-select .ms-btn { background: var(--nm-card) !important; color: var(--nm-text) !important; border: 1px solid var(--nm-line) !important; border-radius: 8px !important; font: 13.5px var(--nm-font) !important; box-shadow: none !important; }
.nm-pagina-adm .multi-select .ms-panel { background: var(--nm-card) !important; color: var(--nm-text) !important; border-color: var(--nm-line) !important; border-radius: 10px; }
.nm-pagina-adm .multi-select .ms-item:hover { background: var(--nm-hover); }
.nm-pagina-adm .multi-select .ms-caret { color: var(--nm-muted); }
.nm-pagina-adm :is(.control-ev-filterform, .control-login-filterform) label, .nm-pagina-adm :is(.control-ev-filterlabel, .control-login-filterlabel) { color: var(--nm-muted) !important; font: 700 11px var(--nm-font) !important; letter-spacing: .05em; text-transform: uppercase; }.nm-pagina-adm td.control-login-useragent { background-color: var(--nm-card) !important; color: var(--nm-muted) !important; }
/* Sin puntos suspensivos ("…") en las páginas rehechas ni en sus modales */
.nm-v2 :is(.nm-pagina, .modal) * { text-overflow: clip !important; }

/* =====================================================================================
   PROYECTOS (proyectos.php): una ficha por persona con sus proyectos por tipo
   ===================================================================================== */
.nm-proy-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.nm-proy-buscar { display: inline-flex; align-items: center; gap: 8px; height: 34px; padding: 0 10px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); margin: 0; }
.nm-proy-buscar .fa-solid { color: var(--nm-muted); }
.nm-proy-buscar input[type="search"] { border: 0 !important; outline: 0; background: transparent !important; color: var(--nm-text) !important; width: 220px; min-height: 0 !important; height: 32px; padding: 0 !important; font: 14px var(--nm-font) !important; }
.nm-pagina-proy .project-people { background: var(--nm-card) !important; color: var(--nm-text) !important; border: 1px solid var(--nm-line); border-radius: 12px; box-shadow: none !important; padding: 12px 44px 12px 14px !important; margin: 0 0 10px !important; text-align: left !important; }
.nm-pagina-proy .project-people.nm-proy-oculta { display: none !important; }
.nm-pagina-proy .project-1st-line { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; float: none; }
.nm-pagina-proy .project-ID { float: none; padding: 0; border-radius: 0; background: transparent !important; color: var(--nm-text) !important; font: 700 15px var(--nm-font); }
.nm-pagina-proy .project-small-group { padding: 0; gap: 6px 10px; align-items: center; }
.nm-pagina-proy .nm-proy-cat { padding: 1px 8px; border-radius: 6px; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font: 700 11.5px var(--nm-font); }
.nm-pagina-proy .nm-proy-mail { color: var(--nm-muted); font-size: 13px; }
.nm-pagina-proy .nm-proy-mail a { color: var(--nm-accent-ink) !important; }
.nm-pagina-proy .chevron-opener { top: 10px; right: 10px; width: 28px !important; height: 28px; padding: 0; display: grid; place-items: center; border-radius: 7px; background: var(--nm-hover) !important; color: var(--nm-text) !important; }
.nm-pagina-proy .chevron-opener:hover { background: var(--nm-accent-soft) !important; }
.nm-pagina-proy .project-big-group { margin: 6px 0 0; gap: 8px; }
.nm-pagina-proy .project-big-el { margin: 0 !important; width: calc(33.33% - 6px); padding: 10px 12px; border: 1px solid var(--nm-line-soft) !important; border-radius: 10px; background: var(--nm-hover); color: var(--nm-muted); font: 600 12px var(--nm-font); }
.nm-pagina-proy .project-big-el.project-hide { display: none; }
.nm-pagina-proy .project-big-el img { width: 18px !important; vertical-align: -3px; margin-right: 4px; }
.nm-pagina-proy .project-el-div { margin-top: 4px; padding: 3px 6px; border-radius: 6px; font: 600 13.5px/1.35 var(--nm-font); }
.nm-pagina-proy .project-el-div > span { color: var(--nm-text) !important; }
.nm-pagina-proy .project-el-div.td_pre_guardia { background: color-mix(in srgb, #bd0000 14%, var(--nm-card)) !important; cursor: pointer; }
.nm-pagina-proy .project-el-div.td_pre_guardia > span { color: #bd0000 !important; }
.nm-proy-nada { margin-top: 6px; color: var(--nm-muted); font-size: 12.5px; }
.nm-pagina-proy .nm-proy-anadir { margin-top: 10px; height: 30px; font-size: 13px; }
@media (max-width: 900px) { .nm-pagina-proy .project-big-el { width: calc(50% - 4px); } }
@media (max-width: 560px) { .nm-pagina-proy .project-big-el { width: 100%; } .nm-proy-buscar { flex: 1 1 100%; } .nm-proy-buscar input[type="search"] { width: 100%; } }

/* =====================================================================================
   SEGUIMIENTO POSTUCI (seguimiento.php)
   ===================================================================================== */
.nm-pagina-seg ul.group.elements > li > article { padding: 0 !important; overflow: hidden; }
.nm-pagina-seg table thead th { text-align: left !important; }
.nm-pagina-seg th.nm-seg-pac { text-align: left; font: 700 13px var(--nm-font); color: var(--nm-text); background: var(--nm-card) !important; }
.nm-pagina-seg select.nm-seg-sel { width: 100%; max-width: 100%; height: 32px; }
.nm-pagina-seg .seg-quitar { width: 30px; height: 28px; border-radius: 7px; border: 1px solid var(--nm-line); background: var(--nm-card); color: var(--nm-muted); cursor: pointer; }
.nm-pagina-seg .seg-quitar:hover { color: #bd0000; border-color: #e3a0a0; background: var(--nm-card); }
.nm-pagina-seg td.nm-vacio { padding: 22px 12px !important; }

/* =====================================================================================
   MODALES (todos los .modal de las páginas v2: modals.php, modal_grupo.php,
   modal_personalizar.php, modals/*.php y los propios de cada página). Misma estructura en
   todos: .modal > .modal-content(-big) > .close + .modal-header > .modal-title + <hr> +
   .modal-body. Aquí se les da a todos el mismo aspecto, en claro y en oscuro, y en el móvil.
   ===================================================================================== */
.nm-pagina-v2 .modal { background-color: rgba(8, 12, 18, .55) !important; padding-top: 7vh !important; backdrop-filter: blur(2px); font-family: var(--nm-font); }
.nm-pagina-v2 .modal :is(.modal-content, .modal-content-big) {
  position: relative; background: var(--nm-card) !important; color: var(--nm-text); border: 1px solid var(--nm-line) !important; border-radius: 14px !important;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .28) !important; width: 460px; max-width: calc(100vw - 24px) !important; margin: 0 auto 40px !important;
  animation: nmModalEntra .18s ease-out !important;
}
.nm-pagina-v2 .modal .modal-content-big { width: 760px; }
@keyframes nmModalEntra { from { transform: translateY(10px); } to { transform: none; } }
@media (prefers-reduced-motion: reduce) { .nm-pagina-v2 .modal :is(.modal-content, .modal-content-big) { animation: none !important; } }

/* cabecera: título a la izquierda y la ✕ redonda a la derecha; fuera la raya <hr> */
.nm-pagina-v2 .modal .modal-header { background: transparent !important; color: var(--nm-text) !important; padding: 16px 56px 12px 20px !important; border-bottom: 1px solid var(--nm-line-soft); border-radius: 14px 14px 0 0; }
.nm-pagina-v2 .modal .modal-header .modal-title, .nm-pagina-v2 .modal .modal-title { padding: 0 !important; color: var(--nm-text) !important; font: 700 17px/1.3 var(--nm-font) !important; text-align: left; }
.nm-pagina-v2 .modal :is(.modal-content, .modal-content-big) > hr { display: none; }
.nm-pagina-v2 .modal .close { position: absolute; top: 12px; right: 12px; z-index: 2; float: none; margin: 0 !important; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; color: var(--nm-muted) !important; background: transparent; font: 400 24px/1 var(--nm-font) !important; cursor: pointer; }
.nm-pagina-v2 .modal .close:hover { background: var(--nm-hover); color: var(--nm-text) !important; }

/* cuerpo: letra legible (era de 11 px) */
.nm-pagina-v2 .modal .modal-body { padding: 16px 20px 18px !important; font: 14px/1.45 var(--nm-font) !important; color: var(--nm-text); }
.nm-pagina-v2 .modal .modal-body :is(td, th, p, li, label, span:not([class*="fa-"])) { font-size: inherit; }
.nm-pagina-v2 .modal .modal-body td { font-size: 13.5px !important; }
.nm-pagina-v2 .modal .modal-body > p:first-child, .nm-pagina-v2 .modal .modal-body > div > p:first-child { margin-top: 0; }
.nm-pagina-v2 .modal .modal-footer { background: transparent !important; color: var(--nm-text); border-top: 1px solid var(--nm-line-soft); padding: 12px 20px !important; }
.nm-pagina-v2 .modal table { background: transparent !important; border: 0 !important; }
.nm-pagina-v2 .modal table tr { background: transparent !important; }
.nm-pagina-v2 .modal table td, .nm-pagina-v2 .modal table th { border-color: var(--nm-line-soft) !important; }
.nm-pagina-v2 .modal :is(td, th, b, span, label, p)[style*="#6abcd4"] { color: var(--nm-accent-ink) !important; }
.nm-pagina-v2 .modal :is(td, th)[style*="background-color:white"], .nm-pagina-v2 .modal :is(td, th)[style*="background-color: white"], .nm-pagina-v2 .modal :is(td, th, div)[style*="background:#fff"] { background-color: var(--nm-card) !important; }

/* campos */
.nm-pagina-v2 .modal :is(.normal_input, .like_login_input, .separator_input, select, textarea),
.nm-pagina-v2 .modal input:is([type="text"], [type="number"], [type="date"], [type="email"], [type="time"], [type="search"], [type="month"], [type="password"], [type="url"]) {
  min-height: 36px; padding: 0 10px !important; border: 1px solid var(--nm-line) !important; border-radius: 8px !important; background-color: var(--nm-card) !important;
  color: var(--nm-text) !important; font: 14px var(--nm-font) !important; box-shadow: none !important; box-sizing: border-box; max-width: 100%;
}
.nm-pagina-v2 .modal textarea { padding: 8px 10px !important; min-height: 70px; line-height: 1.4; }
.nm-pagina-v2 .modal :is(input, select, textarea):focus { outline: 2px solid var(--nm-accent); outline-offset: -1px; }
.nm-pagina-v2 .modal :is(input, select, textarea):disabled { background-color: var(--nm-hover) !important; opacity: 1; }
.nm-pagina-v2 .modal input.invalid { background-color: color-mix(in srgb, #bd0000 12%, var(--nm-card)) !important; border-color: #e3a0a0 !important; }

/* botones: confirmar en color, borrar en rojo, cancelar neutro */
.nm-pagina-v2 .modal .barra_botones { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.nm-pagina-v2 .modal :is(.bigbutton-grey, .bigbutton-lightred, .bigbutton-lightblue, .bigbutton-black, .smallbutton-grey, .buttonblack, .buttonblackchecked) {
  display: inline-flex !important; align-items: center; justify-content: center; gap: 6px; min-height: 36px; height: auto; padding: 7px 16px !important; margin: 0 !important;
  border-radius: 8px !important; border: 1px solid var(--nm-line) !important; background: var(--nm-card) !important; color: var(--nm-text) !important;
  font: 600 14px/1.2 var(--nm-font) !important; box-shadow: none !important; text-decoration: none !important; cursor: pointer; filter: none !important; width: auto;
}
.nm-pagina-v2 .modal :is(.bigbutton-grey, .bigbutton-lightblue):not(.cancelbtn) { background: var(--nm-accent) !important; border-color: var(--nm-accent) !important; color: #fff !important; }
.nm-pagina-v2 .modal :is(.bigbutton-grey, .bigbutton-lightblue):not(.cancelbtn):hover { background: var(--nm-accent-ink) !important; border-color: var(--nm-accent-ink) !important; }
.nm-pagina-v2 .modal .bigbutton-lightred { background: #bd0000 !important; border-color: #bd0000 !important; color: #fff !important; }
.nm-pagina-v2 .modal .bigbutton-lightred:hover { background: #9a0000 !important; }
.nm-pagina-v2 .modal .cancelbtn { background: var(--nm-card) !important; color: var(--nm-text) !important; border-color: var(--nm-line) !important; }
.nm-pagina-v2 .modal .cancelbtn:hover { background: var(--nm-hover) !important; }
.nm-pagina-v2 .modal .buttonblackchecked { background: var(--nm-accent-soft) !important; border-color: var(--nm-accent) !important; color: var(--nm-accent-ink) !important; }
.nm-pagina-v2 .modal button img[style*="brightness(0)"] { filter: none !important; }

/* avisos y errores dentro del modal */
.nm-pagina-v2 .modal .error { border-radius: 8px; }
.nm-pagina-v2 .modal .textoerror { font-size: 13px !important; }
/* casillas de subgrupos y globos de ayuda, como en el resto */
.nm-pagina-v2 .modal .day-label { min-width: 26px !important; width: auto !important; height: 26px !important; padding: 0 6px !important; line-height: 24px !important; border-radius: 6px !important; border: 1px solid var(--nm-line) !important; background: var(--nm-card) !important; color: var(--nm-muted) !important; font: 600 12px/24px var(--nm-font) !important; }
.nm-pagina-v2 .modal .day-checkbox:checked + .day-label { background: #bd0000 !important; border-color: #bd0000 !important; color: #fff !important; }
.nm-pagina-v2 .modal .hasTooltip p { background: var(--nm-card) !important; color: var(--nm-text) !important; border: 1px solid var(--nm-line); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.18); font: 13px/1.4 var(--nm-font) !important; }
/* desplegables de varias opciones y autocompletar dentro de un modal */
.nm-pagina-v2 .modal .multi-select .ms-btn { background: var(--nm-card) !important; color: var(--nm-text) !important; border: 1px solid var(--nm-line) !important; border-radius: 8px !important; }
.nm-pagina-v2 .modal .multi-select .ms-panel, .nm-pagina-v2 .modal .search-box .result { background: var(--nm-card) !important; color: var(--nm-text) !important; border-color: var(--nm-line) !important; border-radius: 10px; }

/* en el móvil: casi a ancho completo, campos de 16 px (el iPhone no hace zoom) y botones a lo ancho */
@media (max-width: 600px) {
  .nm-pagina-v2 .modal { padding-top: 10px !important; }
  .nm-pagina-v2 .modal :is(.modal-content, .modal-content-big) { width: auto !important; max-width: none !important; margin: 0 8px 24px !important; }
  .nm-pagina-v2 .modal .modal-header { padding: 14px 52px 10px 16px !important; }
  .nm-pagina-v2 .modal .modal-body { padding: 14px 16px 16px !important; }
  .nm-pagina-v2 .modal :is(.normal_input, .like_login_input, select, textarea, input[type="text"], input[type="number"], input[type="date"], input[type="email"], input[type="time"], input[type="search"], input[type="password"]) { font-size: 16px !important; }
  .nm-pagina-v2 .modal .barra_botones > :is(button, a) { flex: 1 1 120px; }
  .nm-pagina-v2 .modal table:not(.tabla_planning) { width: 100% !important; }
  .nm-pagina-v2 .modal .modal-body table:not(.tabla_planning) > tbody > tr:has(> td:nth-child(2)):not(:has(> td:nth-child(3))) { display: flex; flex-direction: column; gap: 4px; padding: 6px 0; }
  .nm-pagina-v2 .modal .modal-body table:not(.tabla_planning) > tbody > tr:has(> td:nth-child(2)):not(:has(> td:nth-child(3))) > td { width: auto !important; padding: 0 !important; }
}
/* campos con icono delante (.div_placeholder): el hueco para el icono */
.nm-pagina-v2 .modal .div_placeholder { position: relative; }
.nm-pagina-v2 .modal .div_placeholder > :is(input, select) { padding-left: 38px !important; }
.nm-pagina-v2 .modal .div_placeholder > [class*="fa-"] { color: var(--nm-accent-ink) !important; z-index: 1; }.nm-pagina-v2 .modal .div_placeholder label { background: var(--nm-card) !important; color: var(--nm-muted) !important; }
/* Participantes del planning (modals/modal_participantes_planning.php): sus piezas con el tema */
.nm-pagina-v2 .mpp-subgrupo { background: var(--nm-card); border-color: var(--nm-line); color: var(--nm-text); border-radius: 999px; font-family: var(--nm-font); }
.nm-pagina-v2 .mpp-subgrupo:hover { background: var(--nm-hover); }
.nm-pagina-v2 .mpp-subgrupo.is-active { background: var(--nm-text); border-color: var(--nm-text); color: var(--nm-card); }
.nm-pagina-v2 .mpp-modo { border-radius: 8px; font-size: 13px; }
.nm-pagina-v2 .mpp-modo.is-auto { background: color-mix(in srgb, var(--nm-accent) 12%, var(--nm-card)); border-color: color-mix(in srgb, var(--nm-accent) 40%, var(--nm-line)); color: var(--nm-text); }
.nm-pagina-v2 .mpp-modo.is-manual { background: color-mix(in srgb, #e08a00 13%, var(--nm-card)); border-color: color-mix(in srgb, #e08a00 40%, var(--nm-line)); color: var(--nm-text); }
.nm-pagina-v2 .mpp-btn { background: var(--nm-card); color: var(--nm-text); border-color: var(--nm-line); border-radius: 7px; font: 600 12px var(--nm-font); padding: 5px 10px; }
.nm-pagina-v2 .mpp-btn:hover { background: var(--nm-hover); }
.nm-pagina-v2 .mpp-col-title { background: var(--nm-hover); color: var(--nm-text); border: 1px solid var(--nm-line); border-bottom: 0; border-radius: 8px 8px 0 0; font: 700 12.5px var(--nm-font); padding: 6px 10px; }
.nm-pagina-v2 .mpp-col-body { border-color: var(--nm-line); border-radius: 0 0 8px 8px; background: var(--nm-card); }
.nm-pagina-v2 :is(.mpp-grupo-titulo) { color: var(--nm-muted); }
.nm-pagina-v2 :is(.mpp-grupo-ayuda, .mpp-vacio, .mpp-cargando) { color: var(--nm-muted); }
.nm-pagina-v2 .mpp-persona { background: var(--nm-accent); color: #fff; font-family: var(--nm-font); }
.nm-pagina-v2 .mpp-persona.is-default { background: color-mix(in srgb, var(--nm-accent) 10%, var(--nm-card)); color: var(--nm-text); border-color: var(--nm-accent); }
.nm-pagina-v2 .mpp-persona.is-sugerencia { background: color-mix(in srgb, #d6cf5a 18%, var(--nm-card)); color: var(--nm-text); border-color: #b8b046; }
.nm-pagina-v2 .mpp-persona-nombre { overflow-wrap: anywhere; white-space: normal; }
.nm-pagina-v2 .mpp-aviso { background: color-mix(in srgb, #e08a00 13%, var(--nm-card)); color: var(--nm-text); border-radius: 8px; }
/* Controles nativos (barras de desplazamiento, calendario de las fechas…) oscuros en las páginas rehechas */
:root[data-tema="oscuro"] body.nm-pagina-v2 { color-scheme: dark; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] body.nm-pagina-v2 { color-scheme: dark; } }/* El contenedor de la plantilla (.bgded.overlay) llevaba z-index:1 y atrapaba a los modales de dentro
   por debajo de la barra de arriba (z-index 900). Su ::after sólo pinta el color de fondo. */
body.nm-pagina-v2 .bgded.overlay { z-index: auto; }
body.nm-pagina-v2 .bgded.overlay::after { display: none; }/* recuadros de detalle dentro de un modal (p. ej. qué se borra al borrar una simulación) */
.nm-modal-detalle { margin: 12px 0; padding: 10px 12px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-hover); color: var(--nm-text); text-align: left; }
/* cabeceras de tabla de los modales (Personalizar grupo usa th.dayweek) */
.nm-pagina-v2 .modal :is(th, td).dayweek { background-color: var(--nm-hover) !important; color: var(--nm-text) !important; }

/* =====================================================================================
   PANTALLA DE ENTRADA (index.php): la marca a la izquierda y la caja de acceso a la derecha;
   en el móvil, una debajo de otra
   ===================================================================================== */
body.nm-login-body { background: var(--nm-bg) !important; margin: 0; }
.nm-login { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); min-height: 100vh; font-family: var(--nm-font); }
.nm-login-marca { position: relative; background-size: cover; background-position: center; color: #fff; display: flex; align-items: flex-end; }
.nm-login-marca::before { content: ""; position: absolute; inset: 0; background: linear-gradient(160deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,.72) 55%, rgba(120,0,0,.78) 100%); }
.nm-login-marca-in { position: relative; padding: 48px 56px; max-width: 560px; }
.nm-login-logo { display: flex; align-items: center; font: 700 30px var(--nm-font); color: #fff; margin-bottom: 26px; letter-spacing: .01em; }
.nm-login-lema { margin: 0 0 22px; color: #fff; font: 750 30px/1.2 var(--nm-font); letter-spacing: -.01em; }
.nm-login-puntos { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.nm-login-puntos li { display: flex; align-items: center; gap: 12px; margin: 0; color: rgba(255,255,255,.9); font: 500 15px var(--nm-font); }
.nm-login-puntos .fa-solid { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 8px; background: rgba(255,255,255,.14); color: #fff; font-size: 14px; }

.nm-login-panel { display: flex; align-items: center; justify-content: center; padding: 40px 24px; }
.nm-login-caja { width: 100%; max-width: 380px; }
.nm-login-tab { width: 100%; }
.nm-login-t { margin: 0 0 6px; color: var(--nm-text); font: 750 26px/1.2 var(--nm-font); }
.nm-login-sub { margin: 0 0 22px; color: var(--nm-muted); font: 14px/1.45 var(--nm-font); }
.nm-login-campo { display: block; margin: 0 0 14px; }
.nm-login-campo-t { display: block; margin-bottom: 6px; color: var(--nm-text); font: 600 13px var(--nm-font); }
.nm-login-input { display: flex; align-items: center; gap: 10px; height: 46px; padding: 0 12px; border: 1px solid var(--nm-line); border-radius: 10px; background: var(--nm-card); transition: border-color .15s, box-shadow .15s; }
.nm-login-input:focus-within { border-color: var(--nm-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--nm-accent) 25%, transparent); }
.nm-login-input > .fa-solid { color: var(--nm-muted); width: 16px; text-align: center; }
.nm-login-input :is(input, select) { flex: 1 1 auto; min-width: 0; height: 44px; border: 0 !important; outline: 0; background: transparent !important; color: var(--nm-text) !important; font: 16px var(--nm-font) !important; padding: 0 !important; margin: 0 !important; box-shadow: none !important; }
.nm-login-ver { border: 0; background: transparent; color: var(--nm-muted); cursor: pointer; padding: 4px; }
.nm-login-ver:hover { color: var(--nm-text); }
.nm-login-ver .fa-regular { color: inherit !important; }
.nm-login-input :is(input)::placeholder { color: var(--nm-muted) !important; opacity: .8; }
.nm-login-entrar { width: 100%; height: 46px !important; margin-top: 6px !important; font-size: 15px !important; justify-content: center; }
/* Planning: las filas de quien no sale en ningún subgrupo en el que tienes permiso de planning (permisos_reglas.php) */
.tabla_planning tr.nm-plan-solo-ver td:not(.headcol) { cursor: default; }
/* "Mantener la sesión iniciada en este dispositivo" (sesion_recordar.php) */
.nm-login-recordar { display: flex; align-items: center; gap: 8px; margin: 2px 0 10px; font: 500 13.5px var(--nm-font); color: var(--nm-text); cursor: pointer; user-select: none; }
.nm-login-recordar input { width: 16px; height: 16px; margin: 0; accent-color: var(--nm-accent); cursor: pointer; }
.nm-login-recordar span { color: inherit; } /* layout.css pone en rojo todo "label span" */
.nm-login-enlaces { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 16px; margin-top: 16px; font: 500 13.5px var(--nm-font); }
.nm-login-enlaces a { color: var(--nm-accent-ink) !important; cursor: pointer; text-decoration: none; }
.nm-login-enlaces a:hover { text-decoration: underline; }
.nm-login-error { margin: 4px 0 10px !important; border-radius: 8px; overflow: hidden; background: color-mix(in srgb, #bd0000 12%, var(--nm-card)) !important; }
.nm-login-error.correcto { background: color-mix(in srgb, #3d9a3d 14%, var(--nm-card)) !important; }
.nm-login-error .textoerror { color: var(--nm-text) !important; font: 13.5px/1.4 var(--nm-font) !important; }
.nm-login-error .textoerror a { color: var(--nm-accent-ink) !important; text-decoration: underline; }
.nm-login-aviso { display: flex; gap: 12px; margin: 0 0 18px; padding: 14px; border-radius: 10px; background: color-mix(in srgb, #e08a00 12%, var(--nm-card)); border: 1px solid color-mix(in srgb, #e08a00 35%, var(--nm-line)); color: var(--nm-text); font: 14px/1.45 var(--nm-font); }
.nm-login-aviso .fa-solid { color: #b86e00; font-size: 20px; margin-top: 2px; }
.nm-login-aviso p { margin: 0; }
.nm-login-cookies { margin: 28px 0 0; color: var(--nm-muted); font: 12px/1.45 var(--nm-font); }
.nm-login-cookies a { color: var(--nm-accent-ink) !important; }
/* el formulario de datos (sin uso por ahora) con los campos de siempre */
#tab-register-data select.login_input { width: 100%; height: 40px; margin-bottom: 10px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); }
/* pie */
body.nm-login-body .wrapper.row5 { background: var(--nm-bg) !important; border-top: 1px solid var(--nm-line); }
body.nm-login-body .wrapper.row5, body.nm-login-body .wrapper.row5 :is(a, p) { color: var(--nm-muted) !important; background: transparent !important; }

@media (max-width: 860px) {
  .nm-login { grid-template-columns: minmax(0, 1fr); min-height: 0; }
  .nm-login-marca { min-height: 0; }
  .nm-login-marca-in { padding: 28px 22px 26px; }
  .nm-login-logo { font-size: 24px; margin-bottom: 14px; }
  .nm-login-logo img { width: 32px !important; height: auto !important; }
  .nm-login-logo img[alt="NightHUB"] { height: 32px !important; width: auto !important; }
  .nm-login-lema { font-size: 21px; margin-bottom: 0; }
  .nm-login-puntos { display: none; }
  .nm-login-panel { padding: 28px 18px 36px; align-items: flex-start; }
}

/* =====================================================================================
   REGISTRO DE CAMBIOS (log.php): una tarjeta por versión; la más nueva, abierta
   ===================================================================================== */
.nm-pagina-log .project-people { position: relative; background: var(--nm-card) !important; color: var(--nm-text) !important; border: 1px solid var(--nm-line); border-radius: 12px; box-shadow: none !important; padding: 0 !important; margin: 0 0 10px !important; text-align: left !important; overflow: hidden; }
.nm-pagina-log .project-people.nm-proy-oculta { display: none !important; }
.nm-pagina-log .project-1st-line { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; float: none; padding: 12px 52px 12px 16px; cursor: pointer; }
.nm-pagina-log .project-1st-line:hover { background: var(--nm-hover); }
.nm-pagina-log .project-ID { float: none; padding: 2px 10px; border-radius: 7px; background: var(--nm-text) !important; color: var(--nm-card) !important; font: 700 14px var(--nm-font); }
.nm-pagina-log .project-people.nm-log-ultima .project-ID { background: #bd0000 !important; color: #fff !important; }
.nm-pagina-log .project-small-group { display: flex; flex-wrap: wrap; padding: 0; gap: 4px 14px; align-items: center; }
.nm-pagina-log .project-small-el { margin: 0 !important; color: var(--nm-muted); font: 500 13px var(--nm-font); }
.nm-pagina-log .project-small-el span[style] { color: var(--nm-text) !important; }
.nm-pagina-log .chevron-opener { position: absolute; top: 10px; right: 12px; width: 28px !important; height: 28px; padding: 0; display: grid; place-items: center; border-radius: 7px; background: var(--nm-hover) !important; color: var(--nm-text) !important; cursor: pointer; }
.nm-pagina-log .project-big-group { display: block; margin: 0; padding: 0; }
.nm-pagina-log .project-big-el { width: auto !important; margin: 0 !important; padding: 4px 16px 14px; border: 0 !important; border-top: 1px solid var(--nm-line-soft) !important; background: transparent; }
.nm-pagina-log .project-big-el.project-hide { display: none; }
.nm-pagina-log .project-el-div { margin: 0; padding: 0; background: transparent !important; }
.nm-pagina-log .project-el-div li { list-style: none; position: relative; margin: 0; padding: 8px 0 8px 18px; border-bottom: 1px solid var(--nm-line-soft); color: var(--nm-text); font: 14px/1.5 var(--nm-font); }
.nm-pagina-log .project-el-div li:last-child { border-bottom: 0; }
.nm-pagina-log .project-el-div li::before { content: ""; position: absolute; left: 3px; top: 16px; width: 6px; height: 6px; border-radius: 50%; background: var(--nm-muted); opacity: .6; }
.nm-pagina-log .nm-log-mod { display: inline-block; margin-right: 2px; padding: 0 7px; border-radius: 6px; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font: 700 12px/20px var(--nm-font); vertical-align: 1px; }
@media (max-width: 600px) {
  .nm-pagina-log .project-1st-line { padding: 12px 48px 12px 12px; }
  .nm-pagina-log .project-big-el { padding: 2px 12px 12px; }
  .nm-pagina-log .project-el-div li { font-size: 13.5px; }
}

/* =====================================================================================
   PÁGINAS LEGALES (politica-privacidad.php y cookies.php, ver legal_ui.php)
   ===================================================================================== */
body.nm-legal-body { background: var(--nm-bg) !important; margin: 0; }
.nm-legal-barra { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 20px; background: #111; }
.nm-legal-logo { display: flex; align-items: center; color: #fff !important; font: 700 22px var(--nm-font); text-decoration: none !important; }
.nm-legal-barra .nm-btn { background: transparent !important; color: #fff !important; border-color: rgba(255,255,255,.3) !important; }
.nm-legal-barra .nm-btn:hover { background: rgba(255,255,255,.1) !important; }
.nm-legal { max-width: 820px; margin: 0 auto; padding: 26px 20px 40px; font-family: var(--nm-font); color: var(--nm-text); }
.nm-legal .nm-h1 { margin: 4px 0 6px; }
.nm-legal-sub { margin: 0 0 16px; color: var(--nm-muted); font-size: 14.5px; }
.nm-legal-otras { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 16px; }
.nm-legal-otras a { padding: 6px 12px; border: 1px solid var(--nm-line); border-radius: 999px; background: var(--nm-card); color: var(--nm-text) !important; font: 600 13px var(--nm-font); text-decoration: none !important; }
.nm-legal-otras a.activa { background: var(--nm-text); border-color: var(--nm-text); color: var(--nm-card) !important; }
.nm-legal-card .nm-card-b { padding: 22px 26px; }
.nm-legal-card h2 { margin: 24px 0 8px; color: var(--nm-text); font: 700 16.5px/1.3 var(--nm-font); text-transform: none; }
.nm-legal-card h2:first-child { margin-top: 0; }
/* Tabla de las cookies (cookies.php) */
.nm-legal-tabla { overflow-x: auto; margin: 8px 0 4px; }
.nm-legal-tabla table { width: 100%; border-collapse: collapse; font-size: 14px; }
.nm-legal-tabla th, .nm-legal-tabla td { padding: 8px 10px; border-bottom: 1px solid var(--nm-line); text-align: left; vertical-align: top; color: var(--nm-text); background: transparent; }
.nm-legal-tabla th { font-weight: 700; color: var(--nm-muted); font-size: 12.5px; }
.nm-legal-tabla code { font-size: 13px; }
.nm-legal-card p, .nm-legal-card li { margin: 0 0 10px; color: var(--nm-text); font: 15px/1.6 var(--nm-font); }
.nm-legal-card ul { margin: 0 0 10px; padding-left: 22px; }
.nm-legal-card li { list-style: disc; margin-bottom: 4px; }
.nm-legal-card a { color: var(--nm-accent-ink) !important; }
.nm-legal-titular { margin-bottom: 20px; padding: 14px 16px; border-radius: 10px; background: var(--nm-hover); }
.nm-legal-titular p:last-child { margin-bottom: 0; }
.nm-legal-fecha { margin-top: 24px !important; padding-top: 14px; border-top: 1px solid var(--nm-line-soft); color: var(--nm-muted) !important; font-size: 13px !important; }
body.nm-legal-body .wrapper.row5 { background: var(--nm-bg) !important; border-top: 1px solid var(--nm-line); }
body.nm-legal-body .wrapper.row5, body.nm-legal-body .wrapper.row5 :is(a, p) { color: var(--nm-muted) !important; background: transparent !important; }
@media (max-width: 600px) {
  .nm-legal-barra { padding: 10px 14px; }
  .nm-legal-barra .nm-btn { font-size: 13px; }
  .nm-legal { padding: 18px 14px 32px; }
  .nm-legal-card .nm-card-b { padding: 16px; }
  .nm-legal-card p, .nm-legal-card li { font-size: 14.5px; }
}

/* Generador: los colores claros escritos a mano en generadornew_ui.php (estados, mes en curso,
   subgrupos, listas del paso 1, avisos), en oscuro */
:root[data-tema="oscuro"] .gn-estado-ok { background: #12301a; color: #7ee08f; }
:root[data-tema="oscuro"] .gn-estado-curso { background: #3a2c0c; color: #f3c56b; }
:root[data-tema="oscuro"] .gn-estado-lista { background: #15313a; color: #7fcfe6; }
:root[data-tema="oscuro"] .gn-estado-nueva { background: #3a1416; color: #ff9b9b; }
:root[data-tema="oscuro"] .gn-tabla .gn-secundario, :root[data-tema="oscuro"] :is(.gn-miga-actual, .gn-lista-pista) { color: var(--nm-muted); }
:root[data-tema="oscuro"] .gn-miga-sep, :root[data-tema="oscuro"] .gn-lista-vacia { color: var(--nm-muted); }
:root[data-tema="oscuro"] .gn-fila-actual td { background: #15232b !important; }
:root[data-tema="oscuro"] .gn-fila-actual td:first-child { box-shadow: inset 3px 0 0 var(--nm-accent-ink); }
:root[data-tema="oscuro"] .gn-mes-actual { background: #15313a; border-color: #24515f; color: #7fcfe6; }
:root[data-tema="oscuro"] .gn-subgrupos { background: var(--nm-hover); color: var(--nm-text); }
:root[data-tema="oscuro"] .gn-lista-titulo { color: var(--nm-text); }
:root[data-tema="oscuro"] .gn-lista { background: var(--nm-card); }
:root[data-tema="oscuro"] :is(.gn-publicada, .gn-generando) { background: #3a2c0c; border-color: #5a4512; color: #f3d9a0; }
:root[data-tema="oscuro"] .gn-generando-reloj { color: #f3c56b; }
:root[data-tema="oscuro"] .gn-generando-texto { color: #f3d9a0; }
:root[data-tema="oscuro"] .barra_botones .gn-btn-parar:disabled { background: var(--nm-hover); border-color: var(--nm-line); color: var(--nm-muted); }
:root[data-tema="oscuro"] #generation_failure_details { background: #3a1416 !important; border-color: #5a2226 !important; color: #ffd0d0; }

/* Contrastes que se quedaban bajos en oscuro (los encontró la revisión de páginas) */
.nm-pagina-stats .repstats-table tbody td.repstats-persona { color: var(--nm-text) !important; }
body.nm-v2 .control-ev-bulkcount { color: var(--nm-muted); }
:root[data-tema="oscuro"] .nm-btn-peligro { color: #ff8a8a !important; }
:root[data-tema="oscuro"] .nm-pagina-stats table tr.nm-stats-yo [class*="-persona"] strong { color: #ff8a8a !important; }
:root[data-tema="oscuro"] .nm-pagina-stats table tr.nm-stats-yo > th:first-child { box-shadow: inset 3px 0 0 #ff6b6b; }
.nm-pagina-adm .contract-main-cell small, .nm-pagina-adm :is(.personalizar-min-asist-help, .cambios-cfg-scope, .cambios-cfg-ayuda) { color: var(--nm-muted) !important; }
.nm-pagina-adm .contract-status-antiguo { background-color: var(--nm-hover); color: var(--nm-muted); }
.nm-pagina-adm tr.tachado, .nm-pagina-adm tr.tachado > td { background-color: var(--nm-hover) !important; color: var(--nm-muted); }
.nm-pagina-stats .guardstats-extratotal-row, .nm-pagina-stats .repstats-legend { color: var(--nm-muted); }

:root[data-tema="oscuro"] .nm-per-otra .nm-per-cat { color: #ff8a8a; }

/* Gestionar grupo › Detalles: filtro de miembros junto al título y aviso de guardado en los desplegables */
.nm-grupo-barra { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 8px 16px; margin: 22px 0 10px; }
.nm-pagina-adm .nm-grupo-barra .white_separator { margin: 0 !important; flex: 1 1 auto; }
.nm-grupo-filtro button { display: inline-flex; align-items: center; gap: 6px; }
.nm-grupo-n { min-width: 20px; padding: 0 6px; border-radius: 999px; background: var(--nm-hover); color: var(--nm-muted); font: 700 11.5px/18px var(--nm-font); text-align: center; }
.nm-grupo-filtro button.on .nm-grupo-n { background: var(--nm-card); color: var(--nm-accent-ink); }
@keyframes nmGuardado { 0% { box-shadow: 0 0 0 3px rgba(47, 163, 107, .55); border-color: #2fa36b; } 100% { box-shadow: 0 0 0 0 rgba(47, 163, 107, 0); } }
select.nm-guardado { animation: nmGuardado 1.4s ease-out; }

/* Rotaciones: arrastrar (bordes para estirar, barra para mover, Ctrl para copiar) */
.nm-pagina-rot .rotacion-banner.rot-editable { cursor: grab; touch-action: none; }
.nm-pagina-rot .rot-asa { position: absolute; top: 0; bottom: 0; width: 9px; z-index: 2; cursor: ew-resize; }
.nm-pagina-rot .rot-asa-i { left: 0; }
.nm-pagina-rot .rot-asa-f { right: 0; }
.nm-pagina-rot .rot-asa::after { content: ""; position: absolute; top: 8px; bottom: 8px; left: 3px; width: 3px; border-radius: 2px; background: currentColor; opacity: 0; transition: opacity .12s; }
.nm-pagina-rot .rotacion-banner:hover .rot-asa::after { opacity: .45; }
.nm-pagina-rot .rotacion-edit { right: 11px; }
body.rot-arrastrando, body.rot-arrastrando * { cursor: grabbing !important; user-select: none !important; }
body.rot-arrastrando-ew, body.rot-arrastrando-ew * { cursor: ew-resize !important; user-select: none !important; }
.nm-pagina-rot .rotacion-banner.rot-moviendo { z-index: 5; box-shadow: 0 6px 18px rgba(0,0,0,.25); transition: none; }
.rotacion-banner.rot-choca { outline: 2px dashed #bd0000; outline-offset: 1px; opacity: .75; }
.rotacion-banner.rot-guardando { opacity: .55; }
.rotacion-banner.rot-fantasma { position: fixed !important; z-index: 1000; height: 36px; pointer-events: none; opacity: .88; box-shadow: 0 8px 22px rgba(0,0,0,.3); }
.nm-pagina-rot .nm-rot-pista { margin: 0 0 10px; color: var(--nm-muted); font-size: 12.5px; }
.nm-pagina-rot .nm-rot-pista .fa-solid { margin-right: 4px; }

/* Viladecans: los dos bloques de edición (rotación por semanas / asistencia por días) */
.vil-bloque { padding: 12px 14px; border: 1px solid var(--nm-line); border-left: 4px solid #c73bb9; border-radius: 10px; background: var(--nm-card); color: var(--nm-text); text-align: left; font-family: var(--nm-font); }
.vil-bloque-asis { border-left-style: dashed; }
.vil-bloque-t { display: flex; align-items: center; gap: 8px; font: 700 14.5px var(--nm-font); }
.vil-bloque-muestra.vil-chip { min-height: 0; width: 22px; height: 16px; padding: 0; border-radius: 4px; }
.vil-bloque-muestra.td_viladecans { display: inline-block; padding: 1px 6px; border-radius: 4px; font-size: 11.5px; background: color-mix(in srgb, #c73bb9 14%, var(--nm-card)); }
.vil-bloque-por { margin-left: auto; padding: 1px 8px; border-radius: 999px; background: var(--nm-hover); color: var(--nm-muted); font: 600 11.5px var(--nm-font); }
.vil-bloque-ayuda { margin: 6px 0 10px; color: var(--nm-muted); font-size: 13px; line-height: 1.45; }
.vil-bloque-bot { display: flex; flex-wrap: wrap; gap: 8px; }
.vil-bloque .vil-mode-button.is-active { background: var(--nm-text) !important; border-color: var(--nm-text) !important; color: var(--nm-card) !important; }
.vil-bloque .nm-btn-peligro.vil-mode-button.is-active { background: #bd0000 !important; border-color: #bd0000 !important; color: #fff !important; }
.vil-bloque .vil-checkbox { display: flex; align-items: flex-start; gap: 8px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--nm-line-soft); font-weight: 500; font-size: 13px; color: var(--nm-text); line-height: 1.4; cursor: pointer; }
.vil-bloque .vil-checkbox input { flex: none; margin-top: 2px; }
.vil-rueda-ayuda { text-align: left; }
.vil-bloque .vil-checkbox span { color: inherit; }

/* Eventos especiales: las casillas son las del Calendario laboral (.nm-fest-c, al final del fichero) */
/* Gran Guardia HSA (círculo) y Código IAM (anillo): una figura redonda de tamaño fijo, centrada detrás de
   la letra. Antes era un degradado del tamaño de la celda: salía ovalado y la letra quedaba descentrada. */
.nm-adm-especiales .nm-fest-c:is(.td_HSA, .td_IAM, .td_HSA_IAM) { position: relative; z-index: 0; background-image: none !important; font-weight: 700; }
.nm-adm-especiales .nm-fest-c:is(.td_HSA, .td_HSA_IAM)::before,
.nm-adm-especiales .nm-fest-c:is(.td_IAM, .td_HSA_IAM)::after { content: ""; position: absolute; left: 50%; top: 50%; z-index: -1; border-radius: 50%; transform: translate(-50%, -50%); pointer-events: none; }
.nm-adm-especiales .nm-fest-c:is(.td_HSA, .td_HSA_IAM)::before { width: 24px; height: 24px; background: #00003b66; }
.nm-adm-especiales .nm-fest-c:is(.td_IAM, .td_HSA_IAM)::after { width: 28px; height: 28px; box-sizing: border-box; border: 3px solid #bd0000b0; }
.nm-adm-especiales .nm-fest-c:is(.td_HSA, .td_HSA_IAM) { color: #fff !important; }
:root[data-tema="oscuro"] .nm-adm-especiales .nm-fest-c:is(.td_HSA, .td_HSA_IAM)::before { background: #8fa3ff80; }
:root[data-tema="oscuro"] .nm-adm-especiales .nm-fest-c:is(.td_IAM, .td_HSA_IAM)::after { border-color: #ff7a7ad0; }
/* en la barra de Editar, más pequeños */
.nm-adm-especiales .nm-fest-muestra:is(.td_HSA, .td_HSA_IAM)::before { width: 16px; height: 16px; }
.nm-adm-especiales .nm-fest-muestra:is(.td_IAM, .td_HSA_IAM)::after { width: 20px; height: 20px; border-width: 2.5px; }

/* =====================================================================================
   GESTIONAR CALENDARIOS (calendargroup.php)
   Una fila por mes (con su flecha) y, al desplegarla, una por subgrupo. Todo con #services
   delante para ganar a las reglas genéricas de administración y a las de layout.css.
   ===================================================================================== */
/* lo escondido, escondido: la regla genérica de botones les ponía display y salían
   Publicar, Publicado y Despublicar a la vez */
#services.nm-adm-cal .hide { display: none !important; }

#services.nm-adm-cal .cal-col-chevron  { width: 40px; }
#services.nm-adm-cal .cal-col-mes      { width: 118px; }
#services.nm-adm-cal .cal-col-anyo     { width: 54px; }
#services.nm-adm-cal .cal-col-link     { width: 50px; }
#services.nm-adm-cal .cal-col-fecha    { width: 172px; }
#services.nm-adm-cal .cal-col-cerrar   { width: 86px; }
#services.nm-adm-cal .cal-col-publicar { width: 146px; }
#services.nm-adm-cal .cal-col-acciones { min-width: 230px; }
#services.nm-adm-cal .cal-col-gestion  { width: 86px; }

#services.nm-adm-cal .cal-tabla { border-collapse: separate !important; border-spacing: 0; font-family: var(--nm-font); }
#services.nm-adm-cal .cal-tabla th { padding: 10px 6px !important; border: 0 !important; border-bottom: 1px solid var(--nm-line) !important; background: var(--nm-card) !important; color: var(--nm-muted) !important; font: 650 11.5px var(--nm-font) !important; text-transform: uppercase; letter-spacing: .04em; text-align: center; vertical-align: middle; white-space: nowrap; }
#services.nm-adm-cal .cal-tabla th .hasTooltip > .fa-regular { font-size: 12px !important; opacity: .8; }
#services.nm-adm-cal .cal-tabla th .hasTooltip p { text-transform: none; letter-spacing: 0; white-space: normal; }
#services.nm-adm-cal .cal-tabla th .cal-ico { font-size: 12px; }
#services.nm-adm-cal .cal-tabla td { height: 46px; padding: 6px !important; border: 0 !important; border-top: 1px solid var(--nm-line-soft) !important; background: var(--nm-card) !important; color: var(--nm-text) !important; font: 13.5px var(--nm-font); text-align: center; vertical-align: middle; }
/* la fila de cada mes, separada de la anterior con una línea más marcada */
#services.nm-adm-cal .cal-tabla tr.tr_IDcalendar:not(.indiv_calendar) > td { border-top-color: var(--nm-line) !important; }
#services.nm-adm-cal .cal-tabla tr.tr_IDcalendar:not(.indiv_calendar):hover > td { background: color-mix(in srgb, var(--nm-hover) 55%, var(--nm-card)) !important; }
#services.nm-adm-cal .cal-tabla .td_monthName { text-align: left; font-weight: 700; }
#services.nm-adm-cal .cal-tabla .td_yearNum { color: var(--nm-muted) !important; font-variant-numeric: tabular-nums; }

/* las de cada subgrupo: metidas un poco hacia dentro, sobre un fondo apenas distinto */
#services.nm-adm-cal .cal-tabla tr.indiv_calendar > td { height: 42px; background: color-mix(in srgb, var(--nm-hover) 65%, var(--nm-card)) !important; font-size: 13px; }
#services.nm-adm-cal .cal-tabla tr.indiv_calendar > td:first-child { box-shadow: inset -3px 0 0 var(--nm-accent); }
#services.nm-adm-cal .cal-tabla .td_monthYearName { text-align: left; font-weight: 600; line-height: 1.25; }
#services.nm-adm-cal .cal-tabla .td_categoria_subgrupo { text-align: left; }
#services.nm-adm-cal .cal-sub-abrev { display: inline-block; padding: 1px 7px; border-radius: 6px; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font: 700 11.5px var(--nm-font); }

/* la flecha del mes */
#services.nm-adm-cal .chevron-opener { display: inline-grid !important; place-items: center; width: 26px !important; height: 26px; padding: 0 !important; border-radius: 7px; background: var(--nm-hover) !important; color: var(--nm-text) !important; font-size: 11px; cursor: pointer; transition: background .12s; }
#services.nm-adm-cal .chevron-opener:hover { background: var(--nm-accent-soft) !important; }
#services.nm-adm-cal .chevron-opener.fa-chevron-down { background: var(--nm-text) !important; color: var(--nm-card) !important; }

/* Link */
#services.nm-adm-cal .cal-tabla td[name="linked"] .fa-solid, #services.nm-adm-cal .cal-tabla td .fa-link, #services.nm-adm-cal .cal-tabla td .fa-link-slash { font-size: 15px !important; }

/* fecha límite: la casilla y la fecha en la misma línea */
#services.nm-adm-cal .cal-tabla td:has(> .date_fechalimite) { white-space: nowrap; }
#services.nm-adm-cal .check_fechalimite { width: 15px; height: 15px; margin: 0 5px 0 0 !important; vertical-align: middle; accent-color: var(--nm-accent); cursor: pointer; }
#services.nm-adm-cal .check_fechalimite:disabled { cursor: not-allowed; }
#services.nm-adm-cal .date_fechalimite { width: 132px !important; height: 30px !important; min-height: 0 !important; margin: 0 !important; padding: 0 6px !important; vertical-align: middle; border: 1px solid var(--nm-line) !important; border-radius: 8px !important; background: var(--nm-card) !important; color: var(--nm-text) !important; font: 13px var(--nm-font) !important; box-shadow: none !important; }
#services.nm-adm-cal .date_fechalimite:disabled { background: transparent !important; border-color: transparent !important; color: var(--nm-muted) !important; cursor: not-allowed; }
#services.nm-adm-cal .date_fechalimite:disabled::-webkit-calendar-picker-indicator { display: none; }

/* Cerrar: el desplegable */
#services.nm-adm-cal .dropdown-select { display: inline-block; }
#services.nm-adm-cal .dropdown-selected { display: inline-flex !important; align-items: center; justify-content: center; gap: 6px; min-width: 60px; height: 30px; padding: 0 8px !important; border: 1px solid var(--nm-line) !important; border-radius: 8px; background: var(--nm-card) !important; color: var(--nm-text) !important; cursor: pointer; box-sizing: border-box; }
#services.nm-adm-cal .dropdown-selected:hover { background: var(--nm-hover) !important; }
#services.nm-adm-cal .dropdown-selected[style*="not-allowed"], #services.nm-adm-cal .dropdown-select:has(.dropdown-select-content.disabled) .dropdown-selected { background: transparent !important; border-color: transparent !important; color: var(--nm-muted) !important; cursor: not-allowed; }
#services.nm-adm-cal .selectedOption { display: inline-flex; align-items: center; gap: 4px; padding: 0 !important; color: inherit; }
#services.nm-adm-cal .dropdown-arrow { position: static !important; margin: 0 !important; border-top-color: var(--nm-muted) !important; }
#services.nm-adm-cal .dropdown-select:has(.dropdown-select-content.disabled) .dropdown-arrow { display: none; }
#floatingDropdown.dropdown-select-content, #services.nm-adm-cal .dropdown-select-content { min-width: 64px; padding: 4px !important; border: 1px solid var(--nm-line) !important; border-radius: 10px !important; background: var(--nm-card) !important; color: var(--nm-text) !important; box-shadow: 0 10px 28px rgba(0,0,0,.18); z-index: 50; }
#floatingDropdown .dropdown-option, #services.nm-adm-cal .dropdown-option { display: flex !important; align-items: center; justify-content: center; gap: 4px; height: 32px; padding: 0 10px !important; border-radius: 7px; color: var(--nm-text); cursor: pointer; }
#floatingDropdown .dropdown-option:hover, #services.nm-adm-cal .dropdown-option:hover { background: var(--nm-hover) !important; }
#services.nm-adm-cal .cal-dato-mixto { color: var(--nm-muted); }

/* Publicar / Publicado / Despublicar: un botón cada vez */
#services.nm-adm-cal .td_publish button { display: inline-flex !important; align-items: center; justify-content: center; gap: 6px; width: 100% !important; height: 30px; margin: 0 !important; padding: 0 8px !important; border: 1px solid var(--nm-accent) !important; border-radius: 8px !important; background: var(--nm-card) !important; color: var(--nm-accent-ink) !important; font: 650 12.5px var(--nm-font) !important; box-shadow: none !important; white-space: nowrap; filter: none !important; cursor: pointer; }
#services.nm-adm-cal .td_publish button.hide { display: none !important; }
/* "Guardias listas" (guardias_listas.php), encima de Publicar */
#services.nm-adm-cal .td_publish button.cal-listas { margin: 0 0 4px !important; border-style: dashed !important; border-color: var(--nm-line) !important; color: var(--nm-text) !important; font-weight: 600 !important; }
#services.nm-adm-cal .td_publish button.cal-listas:hover:not(:disabled) { background: var(--nm-hover, rgba(0,0,0,.04)) !important; }
#services.nm-adm-cal .td_publish button.cal-listas-si { border-style: solid !important; border-color: #2f8f46 !important; color: #1d6b31 !important; background: color-mix(in srgb, #2f8f46 10%, var(--nm-card)) !important; }
#services.nm-adm-cal .td_publish button.cal-listas:disabled { opacity: .65; cursor: default; }
#services.nm-adm-cal .td_publish button.but_publish1:hover { background: var(--nm-accent-soft) !important; }
#services.nm-adm-cal .td_publish button:is(.but_publish2, [style*="darkgreen"]) { background: #1d7a1d !important; border-color: #1d7a1d !important; color: #fff !important; }
#services.nm-adm-cal .td_publish button.but_publish3 { background: #bd0000 !important; border-color: #bd0000 !important; color: #fff !important; }
#services.nm-adm-cal .td_publish button.cal-boton-parcial { outline: 0; border-color: #d08700 !important; border-style: dashed !important; background: color-mix(in srgb, #e08a00 12%, var(--nm-card)) !important; color: var(--nm-text) !important; }
#services.nm-adm-cal .td_publish button:is(.cal-boton-apagado, [style*="not-allowed"], [style*="cursor:auto"]) { cursor: default !important; }
#services.nm-adm-cal .td_publish button.cal-boton-apagado { opacity: .55; }

/* Guardias / Planning */
#services.nm-adm-cal .cal-acciones { gap: 6px; }
#services.nm-adm-cal .cal-slot { min-width: 112px; }
#services.nm-adm-cal .cal-slot button { display: inline-flex !important; align-items: center; gap: 6px; height: 30px; margin: 0 !important; padding: 0 12px !important; border: 1px solid var(--nm-line) !important; border-radius: 8px !important; background: var(--nm-card) !important; color: var(--nm-text) !important; font: 600 13px var(--nm-font) !important; box-shadow: none !important; filter: none !important; }
#services.nm-adm-cal .cal-slot button:hover { background: var(--nm-hover) !important; border-color: var(--nm-muted) !important; }

/* Clonar / borrar */
#services.nm-adm-cal .cal-tabla td:last-child > div { justify-content: center; gap: 6px !important; }
#services.nm-adm-cal .cal-tabla td:last-child button { display: inline-grid !important; place-items: center; width: 30px; height: 30px; margin: 0 !important; padding: 0 !important; border: 1px solid var(--nm-line) !important; border-radius: 8px !important; background: var(--nm-card) !important; color: var(--nm-text) !important; box-shadow: none !important; filter: none !important; font-size: 13px; }
#services.nm-adm-cal .cal-tabla td:last-child button:hover:not(:disabled) { background: var(--nm-hover) !important; }
#services.nm-adm-cal .cal-tabla td:last-child button.bigbutton-lightred { color: #bd0000 !important; border-color: color-mix(in srgb, #bd0000 40%, var(--nm-line)) !important; }
#services.nm-adm-cal .cal-tabla td:last-child button.bigbutton-lightred:hover:not(:disabled) { background: #bd0000 !important; border-color: #bd0000 !important; color: #fff !important; }
#services.nm-adm-cal .cal-tabla td:last-child button:disabled { opacity: .4; cursor: not-allowed; }
:root[data-tema="oscuro"] #services.nm-adm-cal .cal-tabla td:last-child button.bigbutton-lightred { color: #ff8a8a !important; }

/* paginación de los inactivos */
#services.nm-adm-cal .pagination { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin: 0 !important; padding: 12px; border-top: 1px solid var(--nm-line-soft); }
#services.nm-adm-cal .pagination :is(a, span) { display: inline-flex !important; align-items: center; justify-content: center; gap: 6px; min-width: 32px; height: 32px; margin: 0 !important; padding: 0 10px !important; border: 1px solid var(--nm-line) !important; border-radius: 8px !important; background: var(--nm-card) !important; color: var(--nm-text) !important; font: 600 13px var(--nm-font) !important; text-decoration: none !important; box-shadow: none !important; }
#services.nm-adm-cal .pagination a:hover { background: var(--nm-hover) !important; }
#services.nm-adm-cal .pagination span.buttonblackchecked { background: var(--nm-text) !important; border-color: var(--nm-text) !important; color: var(--nm-card) !important; }

/* el orden de Guardián Senior (sólo UCI de H Bellvitge) */
#services.nm-adm-cal .nm-senior-abrir { display: flex; align-items: center; gap: 14px; width: 100%; margin: 0 0 12px; padding: 14px 16px; border: 1px solid var(--nm-line); border-left: 4px solid #e0a800; border-radius: 12px; background: var(--nm-card); color: var(--nm-text); font-family: var(--nm-font); text-align: left; cursor: pointer; box-shadow: 0 1px 2px rgba(0,0,0,.04); transition: border-color .15s, box-shadow .15s; }
#services.nm-adm-cal .nm-senior-abrir:hover { border-color: #e0a800; box-shadow: 0 2px 10px rgba(0,0,0,.08); }
#services.nm-adm-cal .nm-senior-ic { width: 38px; height: 38px; flex: none; display: grid; place-items: center; border-radius: 10px; background: color-mix(in srgb, #e0a800 18%, var(--nm-card)); color: #b38600; font-size: 17px; }
:root[data-tema="oscuro"] #services.nm-adm-cal .nm-senior-ic { color: #ffc93c; }
#services.nm-adm-cal .nm-senior-txt { flex: 1 1 auto; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
#services.nm-adm-cal .nm-senior-txt b { font-size: 15px; font-weight: 700; }
#services.nm-adm-cal .nm-senior-txt small { color: var(--nm-muted); font-size: 12.5px; line-height: 1.4; }
#services.nm-adm-cal .nm-senior-acc { flex: none; display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px; border-radius: 8px; background: var(--nm-text); color: var(--nm-card); font: 650 13px var(--nm-font); }
#services.nm-adm-cal .nm-senior-acc .fa-chevron-down { transition: transform .2s; }
#services.nm-adm-cal .nm-senior-abrir.open .nm-senior-acc .fa-chevron-down { transform: rotate(180deg); }
@media (max-width: 600px) { #services.nm-adm-cal .nm-senior-txt small { display: none; } }
#services.nm-adm-cal .senior-rank-toggle { display: inline-flex; align-items: center; gap: 6px; padding: 0; color: var(--nm-text); font: 650 14px var(--nm-font); text-transform: none; letter-spacing: 0; }
#services.nm-adm-cal .senior-rank-position { color: #bd0000; }
:root[data-tema="oscuro"] #services.nm-adm-cal .senior-rank-position { color: #ff8a8a; }

/* MÓVIL: la tabla no cabe, así que se desplaza de lado con la letra a tamaño normal (antes se
   encogía todo a 9 px) y el mes se queda fijo a la izquierda */
@media (max-width: 768px) {
  #services.nm-adm-cal .cal-tabla { min-width: 880px; font-size: 13px; }
  #services.nm-adm-cal .cal-col-chevron  { width: 36px !important; }
  #services.nm-adm-cal .cal-col-mes      { width: 104px !important; }
  #services.nm-adm-cal .cal-col-anyo     { width: 48px !important; }
  #services.nm-adm-cal .cal-col-link     { width: 42px !important; }
  #services.nm-adm-cal .cal-col-fecha    { width: 166px !important; }
  #services.nm-adm-cal .cal-col-cerrar   { width: 80px !important; }
  #services.nm-adm-cal .cal-col-publicar { width: 132px !important; }
  #services.nm-adm-cal .cal-col-acciones { min-width: 100px !important; }
  #services.nm-adm-cal .cal-col-gestion  { width: 80px !important; }
  #services.nm-adm-cal .cal-tabla th, #services.nm-adm-cal .cal-tabla td { padding: 5px 4px !important; font-size: 12.5px !important; }
  #services.nm-adm-cal .cal-tabla td.td_publish button { font-size: 12px !important; padding: 0 6px !important; }
  #services.nm-adm-cal .cal-slot { min-width: 40px; }
  #services.nm-adm-cal .cal-slot button { padding: 0 10px !important; font-size: 0 !important; }
  #services.nm-adm-cal .cal-slot button > span { font-size: 13px !important; }
  #services.nm-adm-cal .cal-tabla tr > :is(td, th):nth-child(-n+2) { position: sticky; z-index: 2; }
  #services.nm-adm-cal .cal-tabla tr > :is(td, th):nth-child(1) { left: 0; }
  #services.nm-adm-cal .cal-tabla tr > :is(td, th):nth-child(2) { left: 36px; box-shadow: 1px 0 0 var(--nm-line); }
}

/* Control de eventos / de login: los filtros en rejilla (una regla general de formularios los
   ponía en columna y ocupaban cinco o seis líneas); en pantalla completa caben en dos */
#services.nm-adm-control :is(.control-ev-filterform, .control-login-filterform) { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px 12px; align-items: end; }
#services.nm-adm-control :is(.control-ev-filterbox, .control-login-filterbox) { grid-column: auto !important; min-width: 0; }
#services.nm-adm-control :is(.control-ev-filterbox--dia, .control-login-filterbox--fecha) { grid-column: span 2 !important; }
#services.nm-adm-control :is(.control-ev-filter-actions, .control-login-filter-actions) { grid-column: -2 / -1 !important; display: flex; gap: 8px; justify-content: flex-end; align-items: center; }
#services.nm-adm-control :is(.control-ev-filterlabel, .control-login-filterlabel) { color: var(--nm-muted); font: 650 11.5px var(--nm-font); text-transform: uppercase; letter-spacing: .04em; }
#services.nm-adm-control .ms-btn, #services.nm-adm-control :is(.control-ev-filterform, .control-login-filterform) .like_login_input { height: 36px; min-height: 0 !important; padding-top: 0 !important; padding-bottom: 0 !important; }
@media (max-width: 640px) {
  #services.nm-adm-control :is(.control-ev-filterbox--dia, .control-login-filterbox--fecha, .control-ev-filter-actions, .control-login-filter-actions) { grid-column: 1 / -1 !important; }
}

/* =====================================================================================
   PERSONALIZAR GRUPO (personalizar.php): arriba lo del servicio, abajo lo del subgrupo
   ===================================================================================== */
/* Personalizar: las dos pestañas (servicio / subgrupo) y debajo los accesos de la que se ve */
.nm-pers-pestanas { display: flex; gap: 0; margin: 0 0 12px; border-bottom: 2px solid var(--nm-line); }
.nm-pers-pestana { display: inline-flex; align-items: center; gap: 8px; margin: 0 0 -2px; padding: 10px 16px; border: 0; border-bottom: 2px solid transparent; background: none; color: var(--nm-muted); font: 700 15px var(--nm-font); cursor: pointer; }
.nm-pers-pestana small { padding: 2px 8px; border-radius: 999px; background: var(--nm-hover); color: var(--nm-muted); font: 600 12px var(--nm-font); }
.nm-pers-pestana:hover { color: var(--nm-text); }
.nm-pers-pestana.activo { color: var(--nm-text); border-bottom-color: var(--nm-accent); }
.nm-pers-pestana.activo small { background: var(--nm-accent-soft); color: var(--nm-accent-ink); }
.nm-pers-pestana:focus-visible { outline: 2px solid var(--nm-accent); outline-offset: -2px; }
.nm-pers-indice[hidden], .nm-pers-ambito[hidden] { display: none !important; }
@media (max-width: 560px) { .nm-pers-pestana { flex: 1 1 0; justify-content: center; padding: 10px 6px; font-size: 14px; } .nm-pers-pestana small { display: none; } }
.nm-pers-indice { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0 0 18px; }
.nm-pers-indice a { padding: 5px 11px; border: 1px solid var(--nm-line); border-radius: 999px; background: var(--nm-card); color: var(--nm-text) !important; font: 600 13px var(--nm-font); text-decoration: none !important; }
.nm-pers-indice a:hover { background: var(--nm-hover); }
@media (max-width: 900px) { .nm-pers-indice { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; } .nm-pers-indice::-webkit-scrollbar { display: none; } .nm-pers-indice a { flex: 0 0 auto; white-space: nowrap; } }

.nm-pers-ambito { margin: 0 0 26px; scroll-margin-top: 80px; }
/* Lo del servicio, para quien no lo administra: se ve pero no se puede tocar (inert en el HTML) */
.nm-pers-solo-ver .nm-pers-card { opacity: .72; }
.nm-pers-solo-ver .nm-pers-fila-btn, .nm-pers-solo-ver .switch { cursor: default; }
.nm-pers-ambito-cab { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 0 0 12px; padding: 0 0 10px; border-bottom: 2px solid var(--nm-line); }
.nm-pers-ambito-cab h2 { margin: 0; color: var(--nm-text); font: 750 19px var(--nm-font); display: inline-flex; align-items: center; gap: 8px; }
.nm-pers-ambito-cab h2 .fa-solid { color: var(--nm-muted); font-size: 16px; }
.nm-pers-ambito-cab p { flex: 1 1 100%; margin: 0; color: var(--nm-muted); font-size: 13.5px; }
.nm-pers-sub .nm-sel { height: 34px; font-weight: 650; }

.nm-pers-rejilla { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-bottom: 14px; }
@media (max-width: 960px) { .nm-pers-rejilla { grid-template-columns: minmax(0, 1fr); } }
.nm-pers-card { margin: 0 0 14px; scroll-margin-top: 80px; }
.nm-pers-rejilla .nm-pers-card { margin: 0; }
.nm-pers-card .nm-card-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.nm-pers-card .nm-card-h h3 { margin: 0; color: var(--nm-text); font: 700 15px var(--nm-font); display: inline-flex; align-items: center; gap: 8px; }
.nm-pers-card .nm-card-h h3 .fa-solid, .nm-pers-card .nm-card-h h3 .fa-regular { color: var(--nm-muted); width: 16px; text-align: center; }
.nm-pers-card-acc { display: inline-flex; align-items: center; gap: 8px; }
.nm-pers-card .nm-card-b { padding: 4px 0 !important; }

/* cada ajuste, una fila: título · valor · flecha o candado */
.nm-pers-fila { display: grid; grid-template-columns: 190px minmax(0, 1fr) 24px; align-items: center; gap: 12px; min-height: 44px; padding: 8px 16px; border-top: 1px solid var(--nm-line-soft); color: var(--nm-text); text-align: left; }
.nm-pers-fila:first-child { border-top: 0; }
.nm-pers-fila-btn { cursor: pointer; }
.nm-pers-fila-btn:hover { background: var(--nm-hover); }
.nm-pers-fila-btn:focus-visible { outline: 2px solid var(--nm-accent); outline-offset: -2px; }
.nm-pers-fila-t { color: var(--nm-muted); font: 600 13px var(--nm-font); }
.nm-pers-fila-t .hasTooltip { margin-left: 3px; }
.nm-pers-fila-t .hasTooltip > .fa-regular { font-size: 12px; opacity: .8; }
.nm-pers-fila-v { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; min-width: 0; font: 14px var(--nm-font); }
.nm-pers-fila-ico { color: var(--nm-muted); text-align: right; font-size: 13px; }
.nm-pers-rejilla .nm-pers-fila { grid-template-columns: 150px minmax(0, 1fr) 20px; }
@media (max-width: 600px) {
  .nm-pers-fila, .nm-pers-rejilla .nm-pers-fila { grid-template-columns: minmax(0, 1fr) 20px; gap: 4px 10px; padding: 10px 14px; }
  .nm-pers-fila-t { grid-column: 1 / -1; }
  .nm-pers-fila-v { grid-column: 1; }
}

/* fichas de personas, categorías, eventos y boxes */
#services.nm-adm-personalizar .personalizar-apodo { display: inline-flex; align-items: center; gap: 5px; margin: 0 !important; padding: 2px 9px !important; border: 1px solid var(--nm-line) !important; border-radius: 999px !important; background: var(--nm-hover) !important; color: var(--nm-text) !important; font: 600 12.5px var(--nm-font) !important; }
#services.nm-adm-personalizar .personalizar-apodo.nm-pers-chip-grupo { background: var(--nm-accent-soft) !important; border-color: color-mix(in srgb, var(--nm-accent) 35%, var(--nm-line)) !important; color: var(--nm-accent-ink) !important; }
#services.nm-adm-personalizar .personalizar-apodo.nm-pers-box { border-radius: 6px !important; background: var(--nm-text) !important; border-color: var(--nm-text) !important; color: var(--nm-card) !important; font-variant-numeric: tabular-nums; }
.nm-pers-ev { display: inline-grid; place-items: center; min-width: 28px; height: 26px; padding: 0 5px; border-radius: 6px; font: 700 11.5px var(--nm-font); }
.nm-pers-nadie { color: var(--nm-muted); font-style: italic; font-size: 13px; }
.nm-pers-onoff { min-width: 28px; color: var(--nm-muted); font: 700 12px var(--nm-font); }
#services.nm-adm-personalizar .personalizar-min-asist { display: inline-flex; align-items: center; gap: 6px; margin: 0 10px 0 0; font-size: 13px; }
#services.nm-adm-personalizar .personalizar-min-asist input { width: 64px; height: 32px; }
#services.nm-adm-personalizar .personalizar-min-asist-help { flex: 1 1 100%; }

/* Cambios de guardia */
.nm-pers-card .nm-card-b.nm-pers-cambios { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 22px; padding: 14px 16px !important; }
@media (max-width: 760px) { .nm-pers-cambios { grid-template-columns: minmax(0, 1fr); } }
.nm-pers-campo { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; text-align: left; min-width: 0; }
.nm-pers-campo > label, .nm-pers-campo-t { color: var(--nm-text); font: 650 13px var(--nm-font); }
.nm-pers-campo .nm-sel { width: 100%; max-width: 440px; height: 36px; }
.nm-pers-campo-ancho, .nm-pers-guardar { grid-column: 1 / -1; }
.nm-pers-guardar { display: flex; justify-content: flex-end; padding-top: 10px; border-top: 1px solid var(--nm-line-soft); }
.nm-pers-checks { display: flex; flex-wrap: wrap; gap: 6px; }
.nm-pers-check { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); font: 500 13px var(--nm-font); cursor: pointer; }
.nm-pers-check:has(input:checked) { background: var(--nm-accent-soft); border-color: color-mix(in srgb, var(--nm-accent) 45%, var(--nm-line)); color: var(--nm-accent-ink); font-weight: 650; }
.nm-pers-check:has(input:disabled) { cursor: default; opacity: .8; }
.nm-pers-check input { margin: 0; accent-color: var(--nm-accent); }
#services.nm-adm-personalizar .cambios-cfg-bloque { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; width: 100%; box-sizing: border-box; margin: 0 0 6px; padding: 8px 10px; border: 1px solid var(--nm-line); border-radius: 10px; background: var(--nm-hover); }
#services.nm-adm-personalizar .cambios-cfg-bloque .nm-pers-check { padding: 3px 8px; font-size: 12.5px; }
#services.nm-adm-personalizar .cambios-cfg-quitar { margin-left: auto; width: 30px; height: 30px; border: 1px solid transparent; border-radius: 8px; background: transparent; color: #bd0000; cursor: pointer; }
#services.nm-adm-personalizar .cambios-cfg-quitar:hover { background: var(--nm-card); border-color: var(--nm-line); }
#services.nm-adm-personalizar #cambios_cfg_bloques { width: 100%; }
#services.nm-adm-personalizar .cambios-cfg-vacio { color: var(--nm-muted); font-size: 12.5px; font-style: italic; }
:root[data-tema="oscuro"] #services.nm-adm-personalizar .cambios-cfg-quitar { color: #ff8a8a; }

/* Los modales de permisos y de miembros: buscador arriba y listas de fichas */
.nm-pers-modal { text-align: left; }
.nm-pers-modal-buscar { margin: 0 0 14px; }
.nm-pers-modal-t { display: block; margin: 0 0 6px; color: var(--nm-text); font: 650 13px var(--nm-font); }
.nm-pers-modal-t .nm-tenue { font-weight: 500; }
.nm-pers-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
@media (max-width: 600px) { .nm-pers-cols { grid-template-columns: minmax(0, 1fr); } }
.nm-pers-lista { min-height: 80px; max-height: 340px; overflow-y: auto; padding: 8px; border: 1px solid var(--nm-line); border-radius: 10px; background: var(--nm-hover); }
.nm-pers-lista:empty::after { content: "Nadie todavía."; display: block; padding: 12px 4px; color: var(--nm-muted); font-size: 13px; font-style: italic; text-align: center; }
.nm-pers-lista-t { margin: 8px 2px 6px; color: var(--nm-muted); font: 650 11px var(--nm-font); text-transform: uppercase; letter-spacing: .05em; }
.nm-pers-lista-t:first-child { margin-top: 0; }

/* cada ficha: categoría + nombre + quitar/añadir */
:is(#permisos_grupo, #miembros_predet) :is(.ppl_participant, .membergroup_incluido, .membergroup_sugerido) {
  display: flex !important; align-items: center; gap: 8px; width: auto !important; margin: 0 0 6px !important; padding: 5px 6px !important;
  border: 1px solid var(--nm-line) !important; border-radius: 10px !important; background: var(--nm-card) !important; color: var(--nm-text) !important;
  text-align: left !important; filter: none !important; font: 600 13.5px var(--nm-font) !important; box-shadow: 0 1px 1px rgba(0,0,0,.04);
}
:is(#permisos_grupo, #miembros_predet) .ppl_participant.ui-sortable-helper { box-shadow: 0 8px 20px rgba(0,0,0,.2); }
:is(#permisos_grupo, #miembros_predet) .ppl_participant { cursor: grab !important; }
:is(#permisos_grupo, #miembros_predet) .nm-chip-cat { flex: none; display: inline-grid; place-items: center; min-width: 34px; height: 22px; padding: 0 6px; border-radius: 6px; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font: 700 11px var(--nm-font); float: none !important; }
:is(#permisos_grupo, #miembros_predet) .nm-pers-ficha-grupo { background: color-mix(in srgb, var(--nm-accent) 8%, var(--nm-card)) !important; border-color: color-mix(in srgb, var(--nm-accent) 35%, var(--nm-line)) !important; }
:is(#permisos_grupo, #miembros_predet) .nm-pers-ficha-grupo .nm-chip-cat { background: var(--nm-accent); color: #fff; }
:is(#permisos_grupo, #miembros_predet) .nm-pers-ficha-n { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
:is(#permisos_grupo, #miembros_predet) :is(.span_add_ev, .span_close_ev, .ppl_span) {
  flex: none; margin-left: auto; float: none !important; display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 7px;
  color: var(--nm-muted) !important; font: 700 16px/1 var(--nm-font) !important; cursor: pointer; text-align: center !important;
}
:is(#permisos_grupo, #miembros_predet) :is(.span_add_ev, .span_close_ev, .ppl_span).nodisplay { display: none !important; }
:is(#permisos_grupo, #miembros_predet) .ppl_span i { font-size: 13px; color: inherit !important; }
:is(#permisos_grupo, #miembros_predet) :is(.span_close_ev, .ppl_span):hover { background: color-mix(in srgb, #bd0000 12%, var(--nm-card)); color: #bd0000 !important; }
:is(#permisos_grupo, #miembros_predet) .span_add_ev:hover { background: color-mix(in srgb, #1d7a1d 14%, var(--nm-card)); color: #1d7a1d !important; }
:root[data-tema="oscuro"] :is(#permisos_grupo, #miembros_predet) :is(.span_close_ev, .ppl_span):hover { color: #ff8a8a !important; }
:root[data-tema="oscuro"] :is(#permisos_grupo, #miembros_predet) .span_add_ev:hover { color: #7ee08f !important; }

/* Rotaciones: el hueco de un mes vacío (pulsar para crear ahí) y el filtro por servicio */
.nm-pagina-rot .rot-hueco { position: absolute; top: 6px; bottom: 6px; z-index: 2; display: flex; align-items: center; justify-content: center; gap: 5px; border: 1.5px dashed color-mix(in srgb, var(--nm-accent) 70%, transparent); border-radius: 7px; background: color-mix(in srgb, var(--nm-accent) 10%, transparent); color: var(--nm-accent-ink); font: 650 11.5px var(--nm-font); text-transform: capitalize; cursor: pointer; }
.nm-pagina-rot .rot-hueco[hidden] { display: none; }
.nm-pagina-rot .rot-hueco:hover { background: color-mix(in srgb, var(--nm-accent) 20%, transparent); }
.nm-pagina-rot .rotacion-banner.rot-atenuada { opacity: .18; }
.nm-rot-filtro { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin: 0 0 14px; }
.nm-rot-filtro label { color: var(--nm-muted); font: 600 13px var(--nm-font); }
.nm-rot-filtro .nm-sel { height: 34px; min-width: 200px; }

/* Entrada: la ventana del código de un solo uso (recuperar o crear la contraseña) */
.nm-codigo { text-align: left; }
.nm-codigo p { margin: 0 0 14px; }
.nm-v2 .modal .nm-codigo .nm-login-input :is(input, select) { min-height: 0 !important; height: 44px; border: 0 !important; background: transparent !important; padding: 0 !important; outline: 0 !important; }
.nm-codigo .nm-codigo-input { font: 700 20px var(--nm-font) !important; letter-spacing: .35em; font-variant-numeric: tabular-nums; }
.nm-codigo-aviso { padding: 10px 12px; border-radius: 8px; background: var(--nm-accent-soft); color: var(--nm-text); font-size: 13.5px; line-height: 1.45; }
.nm-codigo-aviso:empty { display: none; }
.nm-codigo-ya { margin: 12px 0 0 !important; text-align: center; font-size: 13px; }
.nm-codigo-ya a { color: var(--nm-accent-ink) !important; cursor: pointer; }

/* Estadísticas › Reparto: cada casilla con el color de dónde llevó los pacientes (verde UCI, rojo
   SEMIS, partida si los dos) y los fines de semana en azul. La regla general de las tablas de
   estadísticas les ponía el fondo de tarjeta y se perdían. */
.nm-pagina-stats { --rep-uci: #88ffaa; --rep-semis: #ff7c7c; --rep-finde: #d6eef6; --rep-txt: #14261a; }
:root[data-tema="oscuro"] .nm-pagina-stats { --rep-uci: #2e7d4a; --rep-semis: #9c3a3a; --rep-finde: #1d3a47; --rep-txt: #f1f5f2; }
.nm-pagina-stats .repstats-table tbody td.weekend { background: var(--rep-finde) !important; }
.nm-pagina-stats .repstats-table tbody td.reparto_uci { background: var(--rep-uci) !important; color: var(--rep-txt) !important; font-weight: 700; text-align: center; }
.nm-pagina-stats .repstats-table tbody td.reparto_semis { background: var(--rep-semis) !important; color: var(--rep-txt) !important; font-weight: 700; text-align: center; }
.nm-pagina-stats .repstats-table tbody td.diagonal-split { padding: 0 !important; background: linear-gradient(to bottom right, var(--rep-uci) 50%, var(--rep-semis) 50%) !important; color: var(--rep-txt) !important; font-weight: 700; }
.nm-pagina-stats .repstats-table tbody td.diagonal-split .top-left { top: 1px; left: 4px; font-size: 11.5px; }
.nm-pagina-stats .repstats-table tbody td.diagonal-split .bottom-right { bottom: 1px; right: 4px; font-size: 11.5px; }
.nm-pagina-stats .repstats-table tbody tr:hover td:is(.reparto_uci, .reparto_semis, .diagonal-split) { filter: brightness(.95); }
.repstats-legend-box.rep-uci { background: var(--rep-uci); }
.repstats-legend-box.rep-semis { background: var(--rep-semis); }
.repstats-legend-box.rep-ambos { background: linear-gradient(to bottom right, var(--rep-uci) 50%, var(--rep-semis) 50%); }
.repstats-legend-box.rep-finde { background: var(--rep-finde); }
.repstats-legend-box { border-radius: 4px; border-color: var(--nm-line) !important; }

/* Repartir pacientes (repaso del 06/10/2026)
   - La celda de quien lo lleva hoy: la regla general de las celdas (más específica) le ponía el
     fondo de tarjeta, y quedaba texto blanco sobre blanco.
   - Los botones de cada cama: cuadrados con su icono y su color, que se rellenan al pasar. */
.nm-pagina-rep table.tabla_planning tbody td.td_reparto_sel { background: #bd0000 !important; color: #fff !important; font-weight: 700; }
.nm-pagina-rep table.tabla_planning tbody td.td_reparto_sel .rep-veces { background: rgba(255,255,255,.28); color: #fff; }
.nm-pagina-rep table.tabla_planning tbody td.td_addevlistener:not(.td_reparto_sel):hover,
.nm-pagina-rep table.tabla_planning tbody td.td_pre_borrar:not(.td_reparto_sel) { background: color-mix(in srgb, #bd0000 12%, var(--nm-card)) !important; }
.nm-pagina-rep table.tabla_planning tbody td.td_reparto_sel.td_pre_borrar { background: #9a0000 !important; }
.nm-pagina-rep .but_patient { position: absolute; top: 50%; z-index: 3; width: 22px !important; height: 22px; padding: 0 !important; transform: translateY(-50%); display: grid; place-items: center; border: 1px solid var(--nm-line); border-radius: 6px; background: var(--nm-card) !important; color: var(--rep-btn, var(--nm-text)); font-size: 11px; box-shadow: 0 2px 6px rgba(0,0,0,.14); cursor: pointer; filter: none !important; }
.nm-pagina-rep .but_patient:hover { background: var(--rep-btn, var(--nm-text)) !important; border-color: var(--rep-btn, var(--nm-text)); color: #fff; }
.nm-pagina-rep #but_add { --rep-btn: #1d7a1d; }
.nm-pagina-rep #but_alta { --rep-btn: #bd0000; }
.nm-pagina-rep #but_edit { --rep-btn: #237f99; }
.nm-pagina-rep #but_view { --rep-btn: #7a3fb0; }
.nm-pagina-rep #but_drag { --rep-btn: #5b6672; cursor: grab; }
.nm-pagina-rep #but_alta, .nm-pagina-rep #but_add { right: 4px !important; }
.nm-pagina-rep #but_edit { right: 28px !important; }
.nm-pagina-rep #but_view { right: 52px !important; }
.nm-pagina-rep #but_drag { right: 76px !important; }
.nm-pagina-rep tbody.rep-box-vacio #but_drag { right: 28px !important; }
.nm-pagina-rep th.rep-pac-th:hover .rep-pac { opacity: .3; }
:root[data-tema="oscuro"] .nm-pagina-rep #but_edit { --rep-btn: #7fcfe6; }
:root[data-tema="oscuro"] .nm-pagina-rep #but_view { --rep-btn: #c9a2f0; }
:root[data-tema="oscuro"] .nm-pagina-rep #but_alta { --rep-btn: #ff8a8a; }
:root[data-tema="oscuro"] .nm-pagina-rep #but_add { --rep-btn: #7ee08f; }
:root[data-tema="oscuro"] .nm-pagina-rep .but_patient:hover { color: #10151a; }

/* Modales de Repartir */
.rep-alta-opciones { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0 0 12px; }
@media (max-width: 520px) { .rep-alta-opciones { grid-template-columns: minmax(0, 1fr); } }
.rep-alta-opcion { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; padding: 12px 14px; border: 1px solid var(--nm-line); border-radius: 10px; background: var(--nm-card); color: var(--nm-text); text-align: left; cursor: pointer; font: 13px/1.4 var(--nm-font); }
.rep-alta-opcion:hover { border-color: #bd0000; background: color-mix(in srgb, #bd0000 7%, var(--nm-card)); }
.rep-alta-opcion > .fa-solid { color: #bd0000; font-size: 18px; }
.rep-alta-opcion b { font-size: 14.5px; }
.rep-alta-opcion > span:last-child { color: var(--nm-muted); }
.nm-condiciones { margin: 10px 0 14px 20px; padding: 0; }
.nm-condiciones li { margin: 0 0 8px; line-height: 1.45; }
.rep-cond-pie { text-align: center; margin: 12px 0 0; font-size: 12.5px; }
.rep-cond-pie a { color: var(--nm-muted) !important; }
.rep-cond-falta { color: #b45309; }
:root[data-tema="oscuro"] .rep-cond-falta { color: #f3c35a; }
.rep-alta-opcion:disabled { cursor: not-allowed; opacity: .55; }
.rep-alta-opcion:disabled:hover { border-color: var(--nm-line); background: var(--nm-card); }
.rep-alta-opcion:disabled > .fa-solid { color: var(--nm-muted); }
.rep-alta-sub { margin: 0 0 12px !important; font-weight: 600; }
.rep-alta-nota { margin: 4px 0 10px !important; color: var(--nm-muted); font-size: 12.5px !important; }
.rep-aviso { padding: 10px 12px; border-radius: 8px; background: color-mix(in srgb, #e08a00 12%, var(--nm-card)); border: 1px solid color-mix(in srgb, #e08a00 35%, var(--nm-line)); }
.rep-hist-cab { margin: 0 0 10px !important; font-size: 15px !important; }
.nm-v2 .modal table.rep-hist th { text-align: left; padding: 6px 8px; background: var(--nm-hover) !important; color: var(--nm-muted); font: 700 11.5px var(--nm-font); text-transform: uppercase; letter-spacing: .04em; position: sticky; top: 0; }
.nm-v2 .modal table.rep-hist td { padding: 6px 8px; }
.rep-hist-dia { display: inline-block; min-width: 30px; color: var(--nm-muted); font-weight: 600; }

/* Seguimiento postUCI (repaso del 06/10/2026) */
.nm-seg-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.nm-seg-barra .nm-proy-buscar { flex: 1 1 280px; max-width: 420px; }
.nm-seg-barra .nm-proy-buscar input[type="search"] { width: 100%; }
.nm-btn.nm-btn-on { background: var(--nm-accent-soft); border-color: var(--nm-accent); color: var(--nm-accent-ink); }
.nm-seg-card { overflow: hidden; }
.nm-pagina-seg table.nm-seg-tabla { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; margin: 0; font-family: var(--nm-font); }
.nm-pagina-seg table.nm-seg-tabla thead th { background: var(--nm-hover) !important; color: var(--nm-muted) !important; font: 700 11.5px var(--nm-font) !important; text-transform: uppercase; letter-spacing: .04em; text-align: left !important; padding: 9px 10px !important; border: 0 !important; border-bottom: 1px solid var(--nm-line) !important; }
.nm-pagina-seg table.nm-seg-tabla tbody :is(td, th) { background: var(--nm-card) !important; color: var(--nm-text); padding: 9px 10px !important; border: 0 !important; border-bottom: 1px solid var(--nm-line-soft) !important; vertical-align: middle; text-align: left; font-size: 13.5px; }
.nm-pagina-seg table.nm-seg-tabla tbody tr.seg-fila:hover :is(td, th) { background: color-mix(in srgb, var(--nm-accent) 5%, var(--nm-card)) !important; }
.nm-pagina-seg th.nm-seg-pac b { display: block; font: 700 14px var(--nm-font); overflow-wrap: anywhere; }
.seg-notas { display: block; margin-top: 3px; color: var(--nm-muted); font: 500 12px/1.35 var(--nm-font); overflow-wrap: anywhere; }
.seg-servicio { display: block; font-weight: 600; }
.seg-cama { display: inline-block; margin-top: 3px; padding: 0 7px; border-radius: 6px; background: var(--nm-hover); color: var(--nm-muted); font: 700 11.5px/1.6 var(--nm-font); font-variant-numeric: tabular-nums; }
.seg-fecha { display: block; font-variant-numeric: tabular-nums; }
.seg-hace { display: inline-block; margin-top: 3px; padding: 0 7px; border-radius: 999px; background: var(--nm-hover); color: var(--nm-muted); font: 600 11.5px/1.6 var(--nm-font); }
.seg-hace-nuevo { background: var(--nm-accent-soft); color: var(--nm-accent-ink); }
.seg-hace-viejo { opacity: .7; }
.nm-pagina-seg td.seg-acc { text-align: right !important; white-space: nowrap; }
.nm-pagina-seg td.seg-acc .nm-btn-icono { width: 30px; height: 30px; }
.nm-pagina-seg select.nm-seg-sel { width: 100%; height: 32px; }
.nm-pagina-seg select.nm-seg-sel:disabled { background: transparent; border-color: transparent; color: var(--nm-text); opacity: 1; }
.seg-form { text-align: left; }
.seg-form label { display: block; margin: 0 0 12px; color: var(--nm-text); font: 600 13px var(--nm-font); }
.seg-form label :is(input, textarea) { display: block; width: 100%; margin-top: 5px; }
.seg-form-2 { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 0 12px; }
@media (max-width: 520px) { .seg-form-2 { grid-template-columns: minmax(0, 1fr); } }

/* Sesiones (repaso del 06/10/2026): filas alternas por mes, las tuyas, cuánto falta y el resumen */
.nm-pagina-sesiones .nm-ses-tabla tbody tr.sesion-row.nm-ses-par > td { background: color-mix(in srgb, var(--nm-hover) 70%, var(--nm-card)) !important; }
.nm-pagina-sesiones .nm-ses-tabla tbody tr.sesion-row.nm-ses-mia > td:nth-child(2) { box-shadow: inset 3px 0 0 var(--nm-accent); }
.nm-pagina-sesiones .nm-ses-tabla tbody tr.sesion-row:hover > td { background: color-mix(in srgb, var(--nm-accent) 7%, var(--nm-card)) !important; }
.nm-ses-chip-suave { background: var(--nm-hover) !important; color: var(--nm-muted) !important; }
.nm-ses-chip-mia { background: var(--nm-accent-soft) !important; color: var(--nm-accent-ink) !important; }
.nm-ses-nav { flex-wrap: wrap; }
.nm-ses-buscar { flex: 1 1 220px; max-width: 320px; margin-left: auto; }
.nm-ses-buscar input[type="search"] { width: 100%; }
.nm-ses-resumen { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin: 0 0 10px; }
.nm-ses-res { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; background: var(--nm-card); border: 1px solid var(--nm-line); color: var(--nm-text); font: 600 12.5px var(--nm-font); }
.nm-ses-res-ok .fa-solid { color: #1d7a1d; }
.nm-ses-res-no .fa-solid { color: #bd0000; }
:root[data-tema="oscuro"] .nm-ses-res-ok .fa-solid { color: #7ee08f; }
:root[data-tema="oscuro"] .nm-ses-res-no .fa-solid { color: #ff8a8a; }
.nm-pagina-sesiones .nm-ses-pista { margin: 0 0 8px; font-size: 12.5px; }
.nm-ses-del-que { margin: 0 0 12px !important; line-height: 1.5; }

.nm-ses-form-lab { width: 32%; padding: 6px 10px 6px 4px !important; border: 0 !important; color: var(--nm-text); font: 600 13px var(--nm-font); white-space: nowrap; }
#addSesion .modal-body table tr, #addSesion .modal-body table td { background: transparent !important; border: 0 !important; }
#addSesion input::placeholder { color: var(--nm-muted); }
.nm-ses-nada { margin: 14px 4px; color: var(--nm-muted); }

/* Actualizar categorías (mejora 6): vista previa de quién cambia */
.nm-cat-intro { margin: 0 0 12px !important; color: var(--nm-muted); line-height: 1.5; }
.nm-cat-lista { max-height: 50vh; overflow-y: auto; margin-bottom: 10px; }
.nm-cat-cuenta { margin: 0 0 6px !important; font-weight: 600; }
.nm-cat-ok { margin: 6px 0 !important; color: var(--nm-text); }
.nm-cat-ok .fa-solid { color: #1d7a1d; margin-right: 4px; }
table.nm-cat-tabla { width: 100%; border-collapse: collapse; font-size: 13px; margin: 0; }
table.nm-cat-tabla th, table.nm-cat-tabla td { padding: 5px 8px; border: 0; border-bottom: 1px solid var(--nm-line-soft); text-align: left; background: transparent; color: var(--nm-text); white-space: nowrap; }
table.nm-cat-tabla th { font-size: 11.5px; color: var(--nm-muted); font-weight: 600; position: sticky; top: 0; background: var(--nm-card); }
#promote_resis .modal-content { width: min(640px, calc(100vw - 32px)); max-width: none; }
table.nm-cat-tabla td:nth-child(3) { white-space: normal; }
table.nm-cat-tabla td .fa-arrow-right { color: var(--nm-muted); font-size: 11px; }
.nm-cat-nota { margin: 0 0 8px !important; font-size: 12.5px; color: var(--nm-muted); }
tr.nm-cat-revisar td { background: color-mix(in srgb, #f0b400 9%, var(--nm-card)) !important; }
.nm-cat-aviso { display: inline-block; padding: 0 6px; border-radius: 999px; background: #fff4d6; color: #6e5300; font-size: 11px; font-weight: 600; }
:root[data-tema="oscuro"] .nm-cat-aviso { background: #4a3b10; color: #ffd98a; }
.nm-cat-contrato { display: inline-block; padding: 0 6px; border-radius: 999px; background: var(--nm-accent-soft); color: var(--nm-accent-ink); font-size: 11px; font-weight: 600; }

/* Generador: volver a un paso ya hecho desde la barra (gnIrAPaso guarda antes lo del paso actual) */
.nm-gn-pasos a.nm-gn-volver { display: flex; flex-direction: column; align-items: center; gap: 6px; color: inherit; text-decoration: none; position: relative; z-index: 1; border-radius: 8px; padding: 0 4px 2px; }
.nm-gn-pasos a.nm-gn-volver:hover .nm-gn-num { box-shadow: 0 0 0 4px color-mix(in srgb, #2f8f46 22%, transparent); }
.nm-gn-pasos a.nm-gn-volver:hover .nm-gn-nom { text-decoration: underline; }
body.gn-saliendo { cursor: progress; }
body.gn-saliendo .nm-gn-pasos a, body.gn-saliendo button { pointer-events: none; }

/* Generador: paso de huecos por día (los dos hospitales) */
.gn-huecos-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 0 0 12px; }
.gn-huecos-campo { display: inline-flex; align-items: center; gap: 8px; font: 600 13px var(--nm-font); color: var(--nm-text); }
.gn-huecos-campo .normal_input { width: auto; margin: 0; }
.gn-huecos-total { margin-left: auto; font: 600 13px var(--nm-font); color: var(--nm-muted); }
.gn-huecos-marco { max-width: 100%; overflow-x: auto; padding-top: 20px; }
table.gn-huecos-tabla { table-layout: auto; border-collapse: collapse; margin: 0; }
table.gn-huecos-tabla th, table.gn-huecos-tabla td { min-width: 24px; padding: 4px 2px; text-align: center; }
table.gn-huecos-tabla th.gn-huecos-sg { min-width: 200px; text-align: left; padding: 6px 8px; }
table.gn-huecos-tabla th.gn-huecos-tot { min-width: 54px; }
.gn-huecos-tot b { display: block; font-size: 14px; }
.gn-huecos-tot small { display: block; font-size: 10.5px; font-weight: 400; color: var(--nm-muted); white-space: nowrap; }
.gn-huecos-nombre { display: block; font-weight: 700; margin-bottom: 4px; }
.gn-huecos-acciones { display: flex; align-items: center; gap: 4px; font: 400 11.5px var(--nm-font); color: var(--nm-muted); white-space: nowrap; }
.gn-huecos-acciones label { display: inline-flex; align-items: center; gap: 4px; margin: 0; }
.gn-huecos-acciones input.gn-huecos-todo { width: 42px; padding: 2px 4px; margin: 0; text-align: center; border: 1px solid var(--nm-line); border-radius: 6px; background: var(--nm-card); color: var(--nm-text); }
.gn-huecos-acciones .nm-btn-icono { width: 24px; height: 24px; }
.huecos-cell { position: relative; cursor: default; }
.huecos-cell p { margin: 0; font-weight: 600; }
.huecos-cell-controls { display: none; position: absolute; inset: -20px 0 auto 0; justify-content: center; gap: 2px; z-index: 5; }
.huecos-cell:hover .huecos-cell-controls { display: flex; }
.huecos-cell-control { display: inline-flex; width: 17px; height: 17px; align-items: center; justify-content: center; border-radius: 4px; border: 1px solid var(--nm-line); background: var(--nm-card); color: var(--nm-text); font-size: 12px; line-height: 1; cursor: pointer; }
.huecos-cell-control:hover { background: var(--nm-hover); }

/* Huecos e histórico de puentes y navidades: corte entre bloques de días y el mes bajo el día */
table.gn-huecos-tabla .gn-huecos-corte { border-left: 3px solid var(--nm-line) !important; }
table.gn-huecos-tabla #dayofmonth th small { display: block; font-size: 9.5px; font-weight: 400; color: var(--nm-muted); }
.gn-huecos-campo input[type="checkbox"] { width: 16px; height: 16px; margin: 0; }

/* Generador: aviso de que falta (o ya no vale) la distribución por subgrupos */
.gn-aviso-distribucion { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 12px 0; padding: 10px 14px; border-radius: 10px; background: #fff4d6; color: #6e5300; border: 1px solid #e7cc7b; font-size: 13.5px; }
.gn-aviso-distribucion a { font-weight: 700; color: inherit; text-decoration: underline; }
:root[data-tema="oscuro"] .gn-aviso-distribucion { background: #4a3b10; color: #ffd98a; border-color: #6e5a1c; }

/* Mejorar: destino de un arrastre que rompería una incompatibilidad obligatoria (se pregunta al soltar) */
td.calendar-guardia-drop-target.calendar-guardia-drop-aviso { outline: 2px dashed #e08600 !important; outline-offset: -2px; background-color: color-mix(in srgb, #e08600 22%, transparent) !important; }

/* Tablas de personas por días (planning, generadores, ver guardias...): la fila mide lo mismo tenga
   o no eventos. Antes una fila vacía medía 17-19 px y al ponerle una guardia saltaba a 23, y en el
   generador las filas bailaban en cada intento. 23 px es lo que ocupa una celda con un evento. */
table.tabla-resp tr.peoples > td,
table.tabla-resp tr.peoples > th,
table.tabla_planning tr.peoples > td,
table.tabla_planning tr.peoples > th,
table.tabla_guardias tr.peoples > td,
table.tabla_guardias tr.peoples > th,
.nm-pagina-gn table tr.peoples > td,
.nm-pagina-gn table tr.peoples > th { height: 23px; box-sizing: border-box; }

/* Generador: resumen de los intentos logrados (una línea por intento) */
.gn-logrados-nota { margin: 0 0 8px !important; font-size: 12.5px; color: var(--nm-muted); }
.gn-logrados-marco { max-width: 100%; overflow-x: auto; }
table.gn-logrados { width: 100%; border-collapse: collapse; font-size: 12.5px; margin: 0; background: var(--nm-card); }
table.gn-logrados th, table.gn-logrados td { padding: 5px 8px; border: 0; border-bottom: 1px solid var(--nm-line-soft); text-align: right; white-space: nowrap; color: var(--nm-text); background: transparent; }
table.gn-logrados th { font-size: 11.5px; font-weight: 600; color: var(--nm-muted); text-align: right; }
table.gn-logrados th:first-child, table.gn-logrados td:first-child { text-align: left; }
table.gn-logrados td small { color: var(--nm-muted); }
table.gn-logrados tr.gn-logrado-elegido td { background: color-mix(in srgb, #2f8f46 7%, var(--nm-card)); }
.gn-logrado-top { display: inline-block; padding: 0 6px; border-radius: 999px; background: #2f8f46; color: #fff; font-size: 11px; font-weight: 700; }

/* Personalizar grupo > Cómo se ve: ajustes a la izquierda, por bloques, y la vista previa a la derecha */
.nm-vista-cab-nota { font-size: 12px; color: var(--nm-muted); }
.nm-pers-card .nm-card-b.nm-vista { display: grid; grid-template-columns: minmax(0, 1fr) 290px; gap: 18px; align-items: start; padding: 4px 16px 16px !important; }
@media (max-width: 900px) { .nm-pers-card .nm-card-b.nm-vista { grid-template-columns: minmax(0, 1fr); } }
.nm-vista-ajustes { min-width: 0; }
.nm-vista-bloque { padding: 14px 0; border-bottom: 1px solid var(--nm-line-soft); }
.nm-vista-bloque:last-child { border-bottom: 0; padding-bottom: 2px; }
.nm-vista-bloque-t { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 10px; margin-bottom: 10px; font: 700 11.5px var(--nm-font); letter-spacing: .05em; text-transform: uppercase; color: var(--nm-muted); }
.nm-vista-bloque-t span { font-weight: 400; letter-spacing: 0; text-transform: none; font-size: 12px; opacity: .85; }

/* textos */
.nm-vista-textos { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px 14px; }
.nm-vista-texto { display: flex; flex-direction: column; gap: 4px; margin: 0; }
.nm-vista-texto > span { font: 600 13px var(--nm-font); color: var(--nm-text); }
.nm-vista-texto input[type="text"] { width: 100%; box-sizing: border-box; padding: 7px 10px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); font: 600 13px var(--nm-font); }
.nm-vista-texto input[type="text"]:focus { outline: none; border-color: var(--nm-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--nm-primary) 18%, transparent); }
.nm-vista-texto small { font-size: 11.5px; color: var(--nm-muted); line-height: 1.35; }

/* colores: una fila por cosa, con un selector de píldoras */
.nm-vista-color-fila { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.nm-vista-color-fila + .nm-vista-color-fila { margin-top: 10px; }
.nm-vista-color-que { width: 82px; font: 600 13px var(--nm-font); color: var(--nm-text); }
.nm-vista-seg { display: inline-flex; padding: 2px; border-radius: 999px; background: color-mix(in srgb, var(--nm-line) 55%, var(--nm-card)); }
.nm-vista-seg label { margin: 0; cursor: pointer; }
.nm-vista-seg input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.nm-vista-seg span { display: inline-block; padding: 4px 12px; border-radius: 999px; font: 600 12.5px var(--nm-font); color: var(--nm-muted); white-space: nowrap; transition: background .15s, color .15s; }
.nm-vista-seg input:checked + span { background: var(--nm-card); color: var(--nm-text); box-shadow: 0 1px 3px rgba(0, 0, 0, .16); }
.nm-vista-seg input:focus-visible + span { outline: 2px solid var(--nm-primary); outline-offset: 1px; }
.nm-vista-picker { width: 30px; height: 30px; padding: 0; border: 1px solid var(--nm-line); border-radius: 50%; background: none; cursor: pointer; overflow: hidden; }
.nm-vista-picker::-webkit-color-swatch-wrapper { padding: 0; }
.nm-vista-picker::-webkit-color-swatch { border: 0; border-radius: 50%; }
.nm-vista-picker::-moz-color-swatch { border: 0; border-radius: 50%; }
.nm-vista-picker:disabled { opacity: .3; cursor: default; }
.nm-vista-check { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-size: 12.5px; color: var(--nm-text); cursor: pointer; }
.nm-vista-check.nm-vista-apagado { opacity: .4; cursor: default; }

/* para todo el servicio: se elige pulsando una muestra de cada opción */
.nm-vista-elige + .nm-vista-elige { margin-top: 12px; }
.nm-vista-elige-t { display: block; margin-bottom: 6px; font: 600 13px var(--nm-font); color: var(--nm-text); }
.nm-vista-opciones { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.nm-vista-opcion { display: flex; align-items: center; gap: 10px; margin: 0; padding: 8px 10px; border: 1px solid var(--nm-line); border-radius: 10px; background: var(--nm-card); cursor: pointer; transition: border-color .15s, background .15s; }
.nm-vista-opcion:hover { border-color: color-mix(in srgb, var(--nm-primary) 45%, var(--nm-line)); }
.nm-vista-opcion input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.nm-vista-opcion:has(input:checked) { border-color: var(--nm-primary); background: color-mix(in srgb, var(--nm-primary) 6%, var(--nm-card)); box-shadow: inset 0 0 0 1px var(--nm-primary); }
.nm-vista-opcion:has(input:focus-visible) { outline: 2px solid var(--nm-primary); outline-offset: 2px; }
.nm-vista-opcion > .nm-vista-celda { flex: 0 0 auto; margin: 0; }
.nm-vista-opcion .vp-asis-txt { color: var(--nm-text) !important; } /* las etiquetas tienen un color general que aquí no va */
.nm-vista-opcion-txt { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.nm-vista-opcion-txt b { font: 650 13px var(--nm-font); color: var(--nm-text); }
.nm-vista-opcion-txt small { font-size: 11.5px; color: var(--nm-muted); line-height: 1.35; }
.nm-vista-siempre { font-style: normal; font-weight: 600; color: var(--nm-text); }

/* la vista previa */
.nm-vista-previa { position: sticky; top: 76px; margin-top: 14px; padding: 14px; border-radius: 12px; background: color-mix(in srgb, var(--nm-line) 28%, var(--nm-card)); border: 1px solid var(--nm-line-soft); }
.nm-vista-previa-t { display: flex; align-items: center; gap: 7px; margin-bottom: 12px; font: 700 11.5px var(--nm-font); letter-spacing: .05em; text-transform: uppercase; color: var(--nm-muted); }
.nm-vista-previa-bloque + .nm-vista-previa-bloque { margin-top: 12px; }
.nm-vista-donde { display: block; margin-bottom: 5px; font: 600 12.5px var(--nm-font); color: var(--nm-text); }
.nm-vista-fila { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 6px 4px; }
.nm-vista-caso { display: inline-flex; flex-direction: column; align-items: center; gap: 3px; }
.nm-vista-caso small { font-size: 10.5px; color: var(--nm-muted); white-space: nowrap; }
.nm-vista-celda { display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; min-width: 40px; height: 30px; padding: 0 5px; border: 1px solid var(--nm-line); border-radius: 4px; font-size: 12px; background: var(--nm-card); color: var(--nm-text); }
.nm-vista-celda.nm-vista-guardia { background: #bd0000; border-color: #bd0000; color: #fff; font-weight: 700; }
.nm-vista-botones { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.nm-vista-botones .nm-btn { width: 100%; justify-content: center; }
/* el día de guardia en el planning: raya negra (Mar) o raya roja, fondo amarillo y el texto en la esquina (Bellvitge) */
.nm-vista-celda.nm-vista-diag { position: relative; }
.nm-vista-celda.nm-vista-raya { background-image: linear-gradient(to bottom right, transparent calc(50% - 1px), var(--nm-diagonal-mar), transparent calc(50% + 1px)); }
.nm-vista-celda.nm-vista-etq { min-width: 56px; justify-content: flex-end; align-items: flex-end; padding-bottom: 2px; background-image: linear-gradient(to bottom right, #ffec9e50 calc(50% - .7px), rgba(185, 0, 0, .7), #ffec9e50 calc(50% + .7px)); }
.nm-vista-tag { position: absolute; top: 2px; left: 3px; font-size: 9px; line-height: 1; color: #bd0000; font-weight: 800; }
/* el generador: el día antes y el de después de la guardia, rayados en rojo */
.nm-vista-celda.nm-vista-prepost { background-color: #f7e2e2; background-image: repeating-linear-gradient(135deg, rgba(160,0,0,.16) 0 3px, rgba(0,0,0,0) 3px 7px); }
:root[data-tema="oscuro"] .nm-vista-celda.nm-vista-prepost { background-color: #3a2427; background-image: repeating-linear-gradient(135deg, rgba(255,120,120,.22) 0 3px, rgba(0,0,0,0) 3px 7px); }

/* al cambiar de subgrupo se baja a su apartado: que no quede debajo de la barra de arriba */
.nm-pers-ambito { scroll-margin-top: 70px; }

/* Personalizar: peticiones y bloqueos del servicio */
.nm-cupos-fila { display: flex; flex-wrap: wrap; gap: 10px 18px; margin-top: 6px; }
.nm-cupos-campo { display: flex; flex-direction: column; gap: 4px; font: 600 12.5px var(--nm-font); color: var(--nm-text); }
.nm-pers-card .nm-cupos-campo > span { color: var(--nm-muted) !important; }
.nm-cupos-campo input { width: 90px; padding: 6px 8px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); font: 600 13px var(--nm-font); }

/* ===== Imprimir (layout/scripts/imprimir.js): sólo sale #nm-print (el A4 apaisado lo pone el JS) ===== */
#nm-print { position: absolute; left: -30000px; top: 0; background: #fff; color: #1d2733; }
#nm-print .nm-print-capa { max-width: none !important; min-width: 0 !important; width: auto !important; height: auto !important; max-height: none !important; min-height: 0 !important;
  margin: 0 !important; padding: 0 !important; border: 0 !important; box-shadow: none !important; background: transparent !important;
  overflow: visible !important; position: static !important; transform: none !important; display: block !important; }
#nm-print .nm-print-cab { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 14px; margin: 0 0 8px; font: 12px 'Inter', system-ui, sans-serif; color: #1d2733; }
#nm-print .nm-print-t { font-weight: 700; font-size: 15px; }
#nm-print .nm-print-d { color: #4a5562; }
#nm-print .nm-print-f { margin-left: auto; color: #8a95a2; font-size: 11px; }
#nm-print .nm-print-trozo + .nm-print-trozo { margin-top: 14px; }
/* la columna de nombres y la cabecera dejan de ser "pegajosas": en papel no hay scroll */
#nm-print .headcol, #nm-print thead th, #nm-print thead td { position: static !important; left: auto !important; top: auto !important; }
#nm-print .nm-print-valor { font-weight: 600; }
/* el botón, a la derecha de la cabecera de cada paso del generador */
.nm-gn-paso-h .nm-gn-imprimir { margin-left: 10px; padding: 4px 10px !important; font-size: 12.5px !important; }
@media print {
  body.nm-imprimiendo > *:not(#nm-print) { display: none !important; }
  body.nm-imprimiendo { background: #fff !important; margin: 0 !important; padding: 0 !important; }
  /* sin altura mínima: con todo lo demás escondido, sacaba una hoja en blanco al final */
  html:has(body.nm-imprimiendo), body.nm-imprimiendo { height: auto !important; min-height: 0 !important; overflow: visible !important; }
  body.nm-imprimiendo #nm-print { position: static; left: auto; width: auto; }
  #nm-print, #nm-print * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
  /* la cabecera (día de la semana y día del mes) se repite arriba de cada hoja */
  #nm-print thead { display: table-header-group; }
  #nm-print tr { break-inside: avoid; page-break-inside: avoid; }
  /* Al imprimir, el navegador decide las reglas de "pantalla estrecha" con el papel por defecto
     (A4 vertical, unos 720 px) y no con el apaisado: se aplicaban las de móvil (max-width: 760px).
     En el calendario de Ver guardias se vuelve a lo de una pantalla de ~1040 px, que es la hoja. */
  #nm-print .nm-card-tucal div#calendar ul.label, #nm-print .nm-card-tucal div#calendar ul.dates { gap: 4px; margin-bottom: 4px; }
  #nm-print .nm-card-tucal div#calendar ul.label li { text-align: left; padding-left: 6px; font-size: 12px; }
  #nm-print .nm-card-tucal div#calendar ul.dates li { padding: 4px; border-radius: 8px; }
  #nm-print .nm-card-tucal .date-num { font-size: 13px; flex-direction: row-reverse; align-items: center; gap: 6px; }
  #nm-print .nm-card-tucal .date-num .cal_span_special { font-size: 10px; padding: 0 4px; }
  #nm-print .nm-card-vercal div#calendar ul.dates li { min-height: 110px; }
  #nm-print .nm-card-vercal .date-events-per { flex-direction: row; gap: 3px; padding: 1px 3px !important; font-size: 10.5px; text-align: left; align-items: baseline; }
  #nm-print .nm-card-vercal .date-events-per .nm-vc-sg { min-width: 0; font-size: 8.5px; }
}

/* ===== Mi perfil > Notificaciones (notificaciones.php) ===== */
.nm-nt-estado { display: flex; gap: 14px; align-items: flex-start; padding: 12px 14px; border-radius: 10px; background: color-mix(in srgb, var(--nm-line) 30%, var(--nm-card)); }
.nm-nt-estado b { display: block; font: 650 14.5px var(--nm-font); color: var(--nm-text); }
.nm-nt-estado p { margin: 3px 0 0 !important; font-size: 13px; color: var(--nm-muted); line-height: 1.45; }
.nm-nt-icono { flex: none; width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; background: var(--nm-card); color: var(--nm-muted); font-size: 15px; }
.nm-nt-estado.ok { background: color-mix(in srgb, #2f8f46 10%, var(--nm-card)); }
.nm-nt-estado.ok .nm-nt-icono { background: #2f8f46; color: #fff; }
.nm-nt-estado.aviso { background: color-mix(in srgb, #e08a00 12%, var(--nm-card)); }
.nm-nt-estado.aviso .nm-nt-icono { background: #e08a00; color: #fff; }
.nm-nt-botones { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.nm-nt-lista, .nm-nt-tipos { list-style: none; margin: 0; padding: 0; }
.nm-nt-lista li { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--nm-line-soft); margin: 0; }
.nm-nt-lista li:last-child { border-bottom: 0; }
.nm-nt-lista li > .fa-solid { width: 20px; text-align: center; color: var(--nm-muted); }
.nm-nt-lista li > div { flex: 1; min-width: 0; }
.nm-nt-lista b { font: 600 13.5px var(--nm-font); color: var(--nm-text); }
.nm-nt-lista small { display: block; font-size: 12px; color: var(--nm-muted); }
.nm-nt-este { margin-left: 8px; padding: 1px 7px; border-radius: 999px; background: #2f8f46; color: #fff; font: 700 10.5px var(--nm-font); vertical-align: 1px; }
.nm-nt-quitar { padding: 4px 9px !important; }
.nm-nt-vacio { margin: 0 !important; font-size: 13px; }
.nm-nt-tipos li { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--nm-line-soft); margin: 0; }
.nm-nt-tipos li:last-child { border-bottom: 0; }
.nm-nt-tipos b { display: block; font: 600 14px var(--nm-font); color: var(--nm-text); }
.nm-nt-tipos small { display: block; margin-top: 2px; font-size: 12.5px; color: var(--nm-muted); line-height: 1.4; }
.nm-nt-tipos .switch { flex: none; }
.nm-nt-cron p { margin: 0 0 8px !important; font-size: 13px; color: var(--nm-text); line-height: 1.45; }
.nm-nt-cron code { display: block; margin: 0 0 12px; padding: 8px 10px; border-radius: 8px; background: color-mix(in srgb, var(--nm-line) 35%, var(--nm-card)); font: 12px ui-monospace, Consolas, monospace; color: var(--nm-text); overflow-wrap: anywhere; }
.nm-nt-cron ul { margin: 0 0 8px; padding-left: 18px; font-size: 13px; }
.nm-nt-tarde { color: #b86e00; font-weight: 600; }

/* ===== Modal del comentario de un evento (modals.php, #addcomment) ===== */
.nm-coment .modal-body { display: flex; flex-direction: column; gap: 8px; }
.nm-coment-que { margin: 0 0 4px !important; font: 600 13.5px var(--nm-font); color: var(--nm-text); }
.nm-coment-que::first-letter { text-transform: uppercase; }
.nm-coment-t { display: block; font: 600 12.5px var(--nm-font); color: var(--nm-muted); }
.nm-coment-texto { width: 100%; box-sizing: border-box; min-height: 74px; padding: 9px 11px; border: 1px solid var(--nm-line); border-radius: 10px; background: var(--nm-card); color: var(--nm-text); font: 14px/1.45 var(--nm-font); resize: vertical; }
.nm-coment-texto:focus { outline: none; border-color: var(--nm-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--nm-accent) 25%, transparent); }
.nm-coment-cupo { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; margin-top: 6px; padding-top: 10px; border-top: 1px solid var(--nm-line-soft); }
.nm-coment-cupo[hidden] { display: none; }
.nm-coment-cupo small { font-size: 12px; color: var(--nm-muted); line-height: 1.4; }
.nm-coment-botones { display: flex; justify-content: flex-end; gap: 8px; margin-top: 8px; }
/* eventos de unas horas */
.nm-coment-horas { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; margin-top: 6px; padding-top: 10px; border-top: 1px solid var(--nm-line-soft); }
.nm-coment-horas[hidden], .nm-coment-horas-det[hidden] { display: none; }
.nm-coment-horas-det { display: flex; flex-direction: column; gap: 7px; width: 100%; margin-top: 4px; }
.nm-coment-horas-fila { display: flex; align-items: center; gap: 8px; color: var(--nm-muted); font: 14px var(--nm-font); }
.nm-coment-horas-fila input { height: 36px; padding: 0 8px; border: 1px solid var(--nm-line); border-radius: 9px; background: var(--nm-card); color: var(--nm-text); font: 14px var(--nm-font); }
.nm-coment-chk { display: flex; gap: 9px; align-items: flex-start; margin: 0; padding: 8px 10px; border: 1px solid var(--nm-line); border-radius: 10px; font: 13.5px/1.35 var(--nm-font); color: var(--nm-text); cursor: pointer; }
.nm-coment-chk input { margin-top: 2px; }
.nm-coment-chk > span { color: var(--nm-text) !important; font-weight: 500; } /* las etiquetas de los modales antiguos salen en rojo */
.nm-coment-chk small { display: block; color: var(--nm-muted); font-size: 12px; }
.nm-coment-horas-aviso { margin: 0 !important; font: 12.5px/1.45 var(--nm-font); color: var(--nm-muted); }
.nm-coment-horas-aviso.es-error { color: #b00020; font-weight: 600; }
.nm-coment-bloqueo { margin: 0 !important; padding: 8px 10px; border-radius: 9px; background: #fff6dd; color: #6b4e00; font: 13px/1.45 var(--nm-font); }
.nm-coment-bloqueo[hidden], #nmComentGuardar[hidden] { display: none !important; }
:root[data-tema="oscuro"] .nm-coment-bloqueo { background: #3a2e00; color: #ffe9a8; }
/* Observación obligatoria (Hospital del Mar: curso, docencia y "otro"; tipos_evento_reglas.php) */
.nm-coment-obligatorio { margin: 0 0 6px !important; font: 600 12.5px/1.4 var(--nm-font); color: var(--nm-accent-ink); }
.nm-coment-obligatorio[hidden] { display: none !important; }
/* Después de guardar: los días seguidos con el mismo evento (modals.php, nmComentarioSeguidos) */
#nmComentForm[hidden], .nm-coment-seg[hidden] { display: none !important; }
.nm-coment-seg-t { margin: 0 0 10px !important; font: 13.5px/1.45 var(--nm-font); color: var(--nm-text); }
.nm-coment-seg-lista { display: grid; gap: 6px; max-height: 300px; overflow-y: auto; margin-bottom: 4px; }
.nm-coment-seg-lista .nm-coment-chk > span::first-letter { text-transform: uppercase; }
:root[data-tema="oscuro"] .nm-coment-horas-aviso.es-error { color: #ff8a8a; }

/* ===== Planning: la barra de Editar plegable en el móvil (planning.php) ===== */
.planning-editbar-plegar { display: none; }
@media (max-width: 760px) {
  .nm-pagina-plan .planning-editbar .planning-editbar-rotulo { display: none; }
  .nm-pagina-plan .planning-editbar-plegar { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border: 1px solid var(--nm-line); border-radius: 999px; background: var(--nm-card); color: var(--nm-text); font: 600 13px var(--nm-font); cursor: pointer; }
  .nm-pagina-plan .planning-editbar-plegar .fa-pen { color: var(--nm-muted); font-size: 12px; }
  .nm-pagina-plan .planning-editbar-activo { color: var(--nm-accent-ink); font-weight: 700; }
  .nm-pagina-plan .planning-editbar-activo[hidden] { display: none !important; }
  .nm-pagina-plan .planning-editbar-flecha { font-size: 11px; color: var(--nm-muted); transition: transform .2s; }
  .nm-pagina-plan .planning-editbar:not(.is-plegada) .planning-editbar-flecha { transform: rotate(180deg); }
  .nm-pagina-plan .planning-editbar.is-plegada .planning-editbar-grupo { display: none !important; }
  .nm-pagina-plan .planning-editbar:not(.is-plegada) .planning-editbar-plegar { flex-basis: auto; }
}

/* ===== Planning: el globo de «Control de asistencias» (quién cuenta cada día) ===== */
.nm-cc-globo { position: fixed; z-index: 3000; width: max-content; min-width: 170px; max-width: min(300px, calc(100vw - 16px)); padding: 10px 12px; border-radius: 12px; background: var(--nm-card); color: var(--nm-text); border: 1px solid var(--nm-line); box-shadow: 0 12px 32px rgba(0,0,0,.22); font: 13px/1.4 var(--nm-font); pointer-events: none; }
.nm-cc-globo[hidden] { display: none; }
.nm-cc-globo-cab { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 6px; }
.nm-cc-globo-t { font-weight: 700; font-size: 12.5px; }
.nm-cc-globo-f { color: var(--nm-muted); font-size: 12px; white-space: nowrap; }
.nm-cc-globo-f::first-letter { text-transform: uppercase; }
.nm-cc-globo-n { display: flex; align-items: baseline; gap: 6px; padding-bottom: 7px; margin-bottom: 7px; border-bottom: 1px solid var(--nm-line-soft); color: var(--nm-muted); }
.nm-cc-globo-n b { font-size: 20px; line-height: 1; color: var(--nm-text); }
.nm-cc-globo-n span { margin-left: auto; padding: 1px 7px; border-radius: 999px; background: var(--nm-hover); font-size: 11.5px; }
.nm-cc-globo-n.is-bajo b { color: #e8590c; }
.nm-cc-globo-n.is-bajo span { background: color-mix(in srgb, #fd7e14 20%, transparent); color: #c2410c; }
.nm-cc-globo-n.is-cero b { color: #e03131; }
.nm-cc-globo-n.is-alto b { color: #3b6fd8; }
.nm-cc-globo-n.is-alto span { background: color-mix(in srgb, #4c7fe0 20%, transparent); color: #2f5fc4; }
.nm-cc-globo-l { margin: 0; padding: 0; list-style: none; display: grid; gap: 2px 14px; max-height: 45vh; overflow: auto; }
.nm-cc-globo-l.is-dos { grid-template-columns: 1fr 1fr; }
.nm-cc-globo-l li { white-space: nowrap; font-size: 12.5px; }
.nm-cc-globo-l li::before { content: ""; display: inline-block; width: 5px; height: 5px; margin: 0 7px 2px 0; border-radius: 50%; background: var(--nm-accent); vertical-align: middle; }
.nm-cc-globo-vacio { margin: 0 !important; color: var(--nm-muted); font-style: italic; }
.nm-cc-globo-flecha { position: absolute; left: var(--flecha-x, 50%); bottom: -6px; width: 10px; height: 10px; margin-left: -5px; background: var(--nm-card); border-right: 1px solid var(--nm-line); border-bottom: 1px solid var(--nm-line); transform: rotate(45deg); }
.nm-cc-globo.is-abajo .nm-cc-globo-flecha { bottom: auto; top: -6px; transform: rotate(225deg); }
.nm-pagina-plan [data-cc-fila] { cursor: pointer; }
.nm-pagina-plan [data-cc-fila].is-cc-activa { box-shadow: inset 0 0 0 2px var(--nm-accent); }

/* ===== Modo oscuro: colores fijos pensados para fondo claro (revisión de contraste, oct. 2026) =====
   Se leían casi del color del fondo: Bus, rotación, tu nombre en «Guardias de la semana», las
   fechas de puente y las etiquetas de las estadísticas, y la leyenda de Viladecans. */
:root[data-tema="oscuro"] .td_busca, :root[data-tema="oscuro"] .nm-imp-asis.td_busca, :root[data-tema="oscuro"] .nm-card-tucal .date-events-it.nm-asis[data-corto="Bus"] { color: #a5afff !important; }
:root[data-tema="oscuro"] .td_rotacion { color: #ff7a7a !important; }
:root[data-tema="oscuro"] .nm-per.yo .nm-per-nom, :root[data-tema="oscuro"] .nm-per-otra .nm-per-nom { color: #ff8080; }
:root[data-tema="oscuro"] .guardstats-bridgechip { color: #ff9d93; background: rgba(255, 120, 110, .15); }
:root[data-tema="oscuro"] .notas-chip { color: #e8c6be; background: rgba(230, 170, 150, .15); }
:root[data-tema="oscuro"] .vil-chip { background-color: var(--nm-card); color: var(--nm-text); border-color: var(--nm-line); }
:root[data-tema="oscuro"] .vil-chip-rotation { background-color: #c73bb985; border-color: #c73bb9; }
:root[data-tema="oscuro"] .vil-chip-missing { background-color: #5a2a2a; border-color: #e08a8a; }
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] .td_busca, :root[data-tema="auto"] .nm-imp-asis.td_busca, :root[data-tema="auto"] .nm-card-tucal .date-events-it.nm-asis[data-corto="Bus"] { color: #a5afff !important; }
  :root[data-tema="auto"] .td_rotacion { color: #ff7a7a !important; }
  :root[data-tema="auto"] .nm-per.yo .nm-per-nom, :root[data-tema="auto"] .nm-per-otra .nm-per-nom { color: #ff8080; }
  :root[data-tema="auto"] .guardstats-bridgechip { color: #ff9d93; background: rgba(255, 120, 110, .15); }
  :root[data-tema="auto"] .notas-chip { color: #e8c6be; background: rgba(230, 170, 150, .15); }
  :root[data-tema="auto"] .vil-chip { background-color: var(--nm-card); color: var(--nm-text); border-color: var(--nm-line); }
  :root[data-tema="auto"] .vil-chip-rotation { background-color: #c73bb985; border-color: #c73bb9; }
  :root[data-tema="auto"] .vil-chip-missing { background-color: #5a2a2a; border-color: #e08a8a; }
}

/* =====================================================================================
   BIBLIOTECA (biblioteca.php, Mejora 7). Carpetas a la izquierda, la lista y, al abrir un
   documento que se deja ver dentro, el visor a la derecha (en el móvil, a pantalla completa).
   ===================================================================================== */
.nm-pagina-bib { --bib-fav: #e0a100; --bib-ok: #2e7d32; font: 14px/1.45 var(--nm-font); } /* la plantilla deja 11px */
.nm-bib-modal [hidden], .nm-pagina-bib [hidden] { display: none !important; }
:root[data-tema="oscuro"] .nm-pagina-bib { --bib-fav: #ffc83d; --bib-ok: #66bb6a; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-pagina-bib { --bib-fav: #ffc83d; --bib-ok: #66bb6a; } }
.nm-bib-sub { margin: 2px 0 0 !important; color: var(--nm-muted); font-size: 13.5px; }
.nm-bib { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 16px; align-items: start; }
.nm-bib.con-visor { grid-template-columns: minmax(340px, 1fr) minmax(0, 1.25fr); }
.nm-bib.con-visor .nm-bib-carpetas { display: none; } /* con el visor abierto no caben tres columnas */
.nm-bib-centro { min-width: 0; }
#bibVisorHueco { align-self: stretch; min-width: 0; } /* todo el alto: si no, el visor (sticky) no tiene por dónde moverse y se queda arriba, fuera de la vista */
.nm-bib-meta { color: var(--nm-muted); font-size: 12.5px; font-weight: 500; }
.nm-bib-btn-sm { height: 30px; padding: 0 10px; font-size: 12.5px; }
.nm-bib-btn-sm.nm-btn-icono { width: 30px; padding: 0; }

/* izquierda */
.nm-bib-carpetas { position: sticky; top: calc(var(--nm-top-h) + 16px); padding: 8px; }
.nm-bib-cp { display: flex; align-items: center; gap: 10px; width: 100%; padding: 7px 10px; border: 0; background: transparent; border-radius: 8px; cursor: pointer; text-align: left; font: 550 13.5px/1.3 var(--nm-font); color: var(--nm-text); }
.nm-bib-cp:hover { background: var(--nm-hover); }
.nm-bib-cp.on { background: var(--nm-accent-soft); color: var(--nm-accent-ink); font-weight: 700; }
.nm-bib-cp > i { width: 16px; text-align: center; color: var(--nm-muted); }
.nm-bib-cp.on > i { color: inherit; }
.nm-bib-cp[data-cp="fav"] > i { color: var(--bib-fav); }
.nm-bib-cp.rojo, .nm-bib-cp.rojo > i { color: #c5221f; }
.nm-bib-cp .n { margin-left: auto; font-size: 12px; color: var(--nm-muted); font-weight: 600; }
.nm-bib-cp .dot { width: 10px; height: 10px; border-radius: 3px; flex: none; }
.nm-bib-cp .dot.vacia { border: 1px dashed var(--nm-muted); }
.nm-bib-cp-sep { height: 1px; background: var(--nm-line-soft); margin: 6px 8px; }
.nm-bib-cp-t { margin: 8px 10px 4px; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--nm-muted); font-weight: 700; }
.nm-bib-cp-vacio { margin: 4px 10px 8px !important; font-size: 12.5px; color: var(--nm-muted); }
.nm-bib-carpetas-movil { display: none; }

/* filtros */
.nm-bib-filtros { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; padding: 12px 14px; margin-bottom: 14px; }
.nm-bib-buscar { position: relative; flex: 1 1 240px; }
.nm-bib-buscar > span { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: var(--nm-muted); font-size: 13px; }
.nm-bib-buscar input { width: 100%; height: 36px; padding: 0 34px 0 32px; border: 1px solid var(--nm-line); border-radius: 9px; background: var(--nm-card); color: var(--nm-text); font: 14px var(--nm-font); }
.nm-bib-buscar input:focus { outline: none; border-color: var(--nm-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--nm-accent) 25%, transparent); }
.nm-bib-buscar kbd { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); font: 600 11px var(--nm-font); color: var(--nm-muted); border: 1px solid var(--nm-line); border-radius: 5px; padding: 1px 6px; }
.nm-bib-filtros .nm-sel { height: 36px; }
.nm-bib-fila-f { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; width: 100%; }
.nm-bib-fila-f:empty { display: none; }
.nm-bib-lab { font-size: 11.5px; font-weight: 700; color: var(--nm-muted); text-transform: uppercase; letter-spacing: .06em; margin-right: 2px; }
.nm-bib-chip { border: 1px solid var(--nm-line); background: var(--nm-card); color: var(--nm-text); border-radius: 999px; padding: 4px 10px; font: 600 12.5px/1.3 var(--nm-font); cursor: pointer; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.nm-bib-chip .n { font-size: 11px; color: var(--nm-muted); }
.nm-bib-chip.on { background: var(--nm-text); color: var(--nm-card); border-color: var(--nm-text); }
.nm-bib-chip.on .n { color: inherit; opacity: .75; }
.nm-bib-chip .fa-star { color: var(--bib-fav); }
.nm-bib-tag { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 6px; background: var(--nm-line-soft); color: var(--nm-muted); font: 600 12px/1.5 var(--nm-font); cursor: pointer; border: 1px solid transparent; }
.nm-bib-tag:hover { color: var(--nm-text); }
.nm-bib-tag.on { background: var(--nm-accent-soft); color: var(--nm-accent-ink); border-color: color-mix(in srgb, var(--nm-accent) 50%, transparent); }
.nm-bib-tag.mas { background: transparent; border: 1px dashed var(--nm-line); }
.nm-bib-tag i { font-size: 10px; }
.nm-bib-tag button { border: 0; background: transparent; cursor: pointer; color: inherit; padding: 0 0 0 2px; font-size: 13px; line-height: 1; }

/* recientes */
.nm-bib-recientes { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 10px; align-items: center; }
.nm-bib-recientes:empty { display: none; }
.nm-bib-recientes-t { color: var(--nm-muted); font-size: 12.5px; white-space: nowrap; }
.nm-bib-reciente { flex: none; display: flex; gap: 8px; align-items: center; max-width: 260px; text-align: left; line-height: 1.3; padding: 5px 10px 5px 5px; border: 1px solid var(--nm-line); border-radius: 10px; background: var(--nm-card); color: var(--nm-text); cursor: pointer; font: 600 12.5px var(--nm-font); }
.nm-bib-reciente:hover { border-color: var(--nm-accent); }
.nm-bib-reciente > span:last-child { white-space: normal; }

/* lista */
.nm-bib-lista { overflow: visible; }
.nm-bib-lista-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 14px; border-bottom: 1px solid var(--nm-line-soft); }
.nm-bib-lista-h b { font-size: 15px; display: flex; align-items: center; gap: 8px; }
.nm-bib-fila { display: flex; gap: 12px; padding: 12px 14px; border-bottom: 1px solid var(--nm-line-soft); cursor: pointer; align-items: flex-start; position: relative; }
.nm-bib-fila:last-child { border-bottom: 0; }
.nm-bib-fila:hover { background: var(--nm-hover); }
.nm-bib-fila.on { background: var(--nm-accent-soft); box-shadow: inset 3px 0 0 var(--nm-accent-ink); }
.nm-bib-fila.leido .nm-bib-tit { color: var(--nm-muted); font-weight: 550; }
.nm-bib-ic { width: 36px; height: 36px; border-radius: 9px; display: grid; place-items: center; flex: none; font-size: 15px; position: relative; color: var(--c); background: color-mix(in srgb, var(--c) 13%, var(--nm-card)); }
.nm-bib-ic.peq { width: 26px; height: 26px; font-size: 12px; border-radius: 7px; }
.nm-bib-src { position: absolute; right: -4px; bottom: -4px; width: 17px; height: 17px; border-radius: 50%; background: var(--nm-card); display: grid; place-items: center; font-size: 9.5px; color: var(--nm-muted); box-shadow: 0 0 0 1px var(--nm-line); }
.nm-bib-ic.peq .nm-bib-src { width: 14px; height: 14px; font-size: 8px; right: -3px; bottom: -3px; }
.nm-bib-txt { flex: 1; min-width: 0; }
.nm-bib-tit { font-weight: 650; font-size: 14.5px; overflow-wrap: anywhere; }
.nm-bib-cita { color: var(--nm-muted); font-size: 12.5px; margin-top: 1px; }
.nm-bib-lin2 { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 5px; }
.nm-bib-acc { display: flex; gap: 4px; flex: none; align-items: center; }
.nm-bib-acc .nm-bib-txt { flex: none; }
.nm-bib-estrella { border: 0; background: transparent; cursor: pointer; color: var(--nm-muted); font-size: 15px; width: 30px; height: 30px; border-radius: 8px; }
.nm-bib-estrella:hover { background: var(--nm-line-soft); }
.nm-bib-estrella.on { color: var(--bib-fav); }
.nm-bib-leido.on { color: var(--bib-ok) !important; border-color: color-mix(in srgb, var(--bib-ok) 40%, transparent); background: color-mix(in srgb, var(--bib-ok) 10%, var(--nm-card)); }
.nm-bib-nuevo { font-size: 10.5px; font-weight: 800; color: #fff; background: var(--nm-primary); border-radius: 4px; padding: 0 5px; letter-spacing: .04em; vertical-align: 1px; }
.nm-bib-cpill { display: inline-flex; align-items: center; font-size: 11.5px; font-weight: 700; padding: 1px 8px; border-radius: 999px; color: var(--c); background: color-mix(in srgb, var(--c) 12%, var(--nm-card)); }
:root[data-tema="oscuro"] .nm-bib-cpill { color: color-mix(in srgb, var(--c) 55%, #fff); }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-bib-cpill { color: color-mix(in srgb, var(--c) 55%, #fff); } }
.nm-bib-viejo { font-size: 11.5px; font-weight: 700; color: #b45309; background: color-mix(in srgb, #f59e0b 16%, var(--nm-card)); border-radius: 999px; padding: 1px 8px; white-space: nowrap; }
:root[data-tema="oscuro"] .nm-bib-viejo { color: #fbbf24; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-bib-viejo { color: #fbbf24; } }
.nm-bib-roto { font-size: 11.5px; font-weight: 700; color: #c5221f; background: color-mix(in srgb, #c5221f 12%, var(--nm-card)); border-radius: 999px; padding: 1px 8px; white-space: nowrap; }
.nm-bib-vacio i { font-size: 28px; }
.nm-bib-vacio { padding: 40px 20px; }

/* menú de los tres puntos */
.nm-bib-menu { position: absolute; right: 14px; top: 46px; z-index: 30; min-width: 230px; background: var(--nm-card); border: 1px solid var(--nm-line); border-radius: 10px; box-shadow: 0 10px 30px rgba(0,0,0,.18); padding: 4px; }
.nm-bib-menu > button, .nm-bib-menu > a { display: flex; gap: 10px; align-items: center; width: 100%; border: 0; background: transparent; padding: 8px 10px; border-radius: 7px; cursor: pointer; text-align: left; font: 500 13px var(--nm-font); color: var(--nm-text) !important; text-decoration: none !important; }
.nm-bib-menu > button:hover, .nm-bib-menu > a:hover { background: var(--nm-hover); }
.nm-bib-menu i { width: 16px; color: var(--nm-muted); }
.nm-bib-menu .rojo, .nm-bib-menu .rojo i { color: #c5221f !important; }

/* visor */
.nm-bib-visor { position: sticky; top: calc(var(--nm-top-h) + 16px); display: flex; flex-direction: column; height: calc(100vh - var(--nm-top-h) - 32px); overflow: hidden; }
.nm-bib-visor-h { display: flex; gap: 6px; align-items: center; padding: 10px 12px; border-bottom: 1px solid var(--nm-line); }
.nm-bib-visor-h .t { flex: 1; min-width: 0; font-weight: 650; line-height: 1.3; overflow-wrap: anywhere; }
.nm-bib-visor-h .t small { display: block; font-weight: 500; color: var(--nm-muted); font-size: 12px; }
.nm-bib-ficha { padding: 10px 14px; border-bottom: 1px solid var(--nm-line-soft); display: flex; flex-direction: column; gap: 5px; font-size: 13px; }
.nm-bib-nota { white-space: pre-line; }
.nm-bib-nota i { color: var(--nm-muted); }
.nm-bib-iframe { flex: 1; width: 100%; border: 0; background: #525659; }
.nm-bib-visor-nota { font-size: 12px; color: var(--nm-muted); padding: 8px 12px; border-top: 1px solid var(--nm-line); }
.nm-bib-visor-nota:empty, .nm-bib-visor-nota:has(> i:only-child) { display: none; }
.nm-bib-fuera { flex: 1; display: grid; place-items: center; text-align: center; padding: 30px; color: var(--nm-muted); }
.nm-bib-fuera > div > i { font-size: 34px; margin-bottom: 8px; }

/* ventana de añadir */
.nm-bib-modal { width: min(640px, calc(100vw - 24px)); max-width: none; }
.nm-bib-modal .modal-body { display: flex; flex-direction: column; gap: 12px; }
.nm-bib-campo label, .nm-bib-campo .nm-bib-lab { display: block; font: 650 12.5px var(--nm-font); color: var(--nm-muted); margin-bottom: 4px; text-transform: none; letter-spacing: 0; }
.nm-bib-campo input[type=text], .nm-bib-campo input[type=url], .nm-bib-campo input[type=month], .nm-bib-campo textarea { width: 100%; box-sizing: border-box; height: 38px; border: 1px solid var(--nm-line); border-radius: 9px; padding: 0 11px; background: var(--nm-card); color: var(--nm-text); font: 14px var(--nm-font); }
.nm-bib-campo textarea { height: 64px; padding: 8px 11px; resize: vertical; }
.nm-bib-campo input:focus, .nm-bib-campo textarea:focus { outline: none; border-color: var(--nm-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--nm-accent) 25%, transparent); }
.nm-bib-campo small { display: block; color: var(--nm-muted); font-size: 12px; margin-top: 4px; }
.nm-bib-dos { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.nm-bib-tres { display: grid; grid-template-columns: 2fr 1.4fr .8fr; gap: 10px; }
.nm-bib-detecta { display: flex; gap: 10px; align-items: center; padding: 8px 10px; border-radius: 9px; background: var(--nm-line-soft); font-size: 12.5px; margin-top: 8px; }
.nm-bib-detecta > i { font-size: 17px; color: var(--nm-muted); }
.nm-bib-detecta .t { flex: 1; }
.nm-bib-detecta small { color: var(--nm-muted); }
.nm-bib-detecta.ok { background: color-mix(in srgb, #2e7d32 10%, var(--nm-card)); }
.nm-bib-detecta.ok > i { color: #1a73e8; }
.nm-bib-detecta.aviso { background: color-mix(in srgb, #f59e0b 14%, var(--nm-card)); }
.nm-bib-detecta.dup { background: color-mix(in srgb, #c5221f 12%, var(--nm-card)); }
.nm-bib-detecta.dup > i { color: #c5221f; }
.nm-bib-tipos-sel { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; }
.nm-bib-tipo-op { border: 1px solid var(--nm-line); border-radius: 9px; padding: 7px 4px; background: var(--nm-card); color: var(--nm-text); cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 3px; font: 650 11.5px/1.25 var(--nm-font); text-align: center; }
.nm-bib-tipo-op i { font-size: 15px; }
.nm-bib-tipo-op.on { border-color: var(--nm-accent-ink); background: var(--nm-accent-soft); color: var(--nm-accent-ink); }
.nm-bib-cp-sel { display: flex; flex-wrap: wrap; gap: 6px; }
.nm-bib-cp-op { border: 1px solid var(--nm-line); border-radius: 999px; padding: 4px 10px; background: var(--nm-card); color: var(--nm-text); cursor: pointer; font: 600 12.5px var(--nm-font); display: inline-flex; gap: 6px; align-items: center; }
.nm-bib-cp-op .dot { width: 8px; height: 8px; border-radius: 2px; background: var(--c); }
.nm-bib-cp-op.on { background: var(--c); border-color: var(--c); color: #fff; }
.nm-bib-cp-op.on .dot { background: #fff; }
.nm-bib-etiq-input { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-height: 38px; border: 1px solid var(--nm-line); border-radius: 9px; padding: 4px 6px; background: var(--nm-card); position: relative; }
.nm-bib-etiq-input:focus-within { border-color: var(--nm-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--nm-accent) 25%, transparent); }
.nm-bib-etiq-input input { border: 0 !important; outline: none; flex: 1; min-width: 140px; height: 28px; background: transparent; color: var(--nm-text); font: 14px var(--nm-font); box-shadow: none !important; padding: 0 4px; }
.nm-bib-etiq-input .nm-bib-tag { cursor: default; }
.nm-bib-sug { position: absolute; left: -1px; right: -1px; top: calc(100% + 4px); background: var(--nm-card); border: 1px solid var(--nm-line); border-radius: 10px; box-shadow: 0 10px 30px rgba(0,0,0,.15); z-index: 5; overflow: hidden; display: none; }
.nm-bib-sug.on { display: block; }
.nm-bib-sug-op { padding: 8px 12px; cursor: pointer; display: flex; justify-content: space-between; gap: 10px; }
.nm-bib-sug-op:hover, .nm-bib-sug-op.act { background: var(--nm-hover); }
.nm-bib-sug-op small { color: var(--nm-muted); }
.nm-bib-sug-op.nueva { border-top: 1px solid var(--nm-line-soft); color: var(--nm-accent-ink); font-weight: 600; }
.nm-bib-aviso-dup { font-size: 12px; color: #b45309; margin-top: 4px; display: none; }
.nm-bib-botones { display: flex; justify-content: flex-end; gap: 8px; margin-top: 4px; }

/* Personalizar: las carpetas */
.nm-pers-card .nm-card-b.nm-bib-pers { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px !important; }
.nm-bib-pers .cambios-cfg-ayuda { display: block; }
.nm-bib-pers-fila { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px solid var(--nm-line-soft); }
.nm-bib-pers-fila .asa { color: var(--nm-muted); cursor: grab; padding: 0 4px; }
.nm-bib-pers-fila input[type=text] { flex: 1; min-width: 0; height: 34px; border: 1px solid var(--nm-line); border-radius: 8px; padding: 0 10px; background: var(--nm-card); color: var(--nm-text); font: 14px var(--nm-font); }
.nm-bib-pers-fila input[type=color] { width: 34px; height: 34px; border: 1px solid var(--nm-line); border-radius: 8px; padding: 2px; background: var(--nm-card); flex: none; }
.nm-bib-pers-fila .n { font-size: 12px; color: var(--nm-muted); white-space: nowrap; }
/* Personalizar > Rotaciones: la lista de sitios (la de siempre tiene más de 20) */
.nm-rot-pers #rotPersLista { max-height: 440px; overflow-y: auto; padding-right: 4px; margin-top: 6px; }
.nm-bib-pers-tipos { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 6px; margin-top: 8px; }
.nm-bib-pers-tipo { display: flex; gap: 8px; align-items: flex-start; padding: 7px; border: 1px solid var(--nm-line-soft); border-radius: 9px; font-size: 12.5px; }
.nm-bib-pers-tipo b { display: block; }
.nm-bib-pers-tipo small { color: var(--nm-muted); line-height: 1.35; display: block; }

/* hasta 1100 px (con el menú lateral no caben tres columnas): las carpetas, en una fila que se desliza */
@media (max-width: 1100px) {
  .nm-bib { grid-template-columns: minmax(0, 1fr); }
  .nm-bib.con-visor { grid-template-columns: minmax(300px, 1fr) minmax(0, 1.1fr); }
  .nm-bib-carpetas { display: none; }
  .nm-bib-carpetas-movil { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 8px; margin-bottom: 4px; }
  .nm-bib-carpetas-movil .nm-bib-chip { flex: none; }
  .nm-bib.con-visor .nm-bib-acc .nm-bib-txt { display: none; }
  .nm-bib.con-visor .nm-bib-acc .nm-bib-btn-sm { width: 30px; padding: 0; }
}
/* móvil: carpetas en una fila que se desliza, visor a pantalla completa */
@media (max-width: 760px) {
  .nm-bib, .nm-bib.con-visor { grid-template-columns: 1fr; }
  .nm-bib-carpetas { display: none; }
  .nm-bib-carpetas-movil { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 8px; margin-bottom: 4px; }
  .nm-bib-carpetas-movil .nm-bib-chip { flex: none; }
  .nm-bib-visor { position: fixed; z-index: 1200; inset: 0; height: auto; border-radius: 0; border: 0; }
  body.nm-bib-visor-movil { overflow: hidden; }
  .nm-pagina-bib .nm-vhead-acc .nm-bib-txt, .nm-bib-acc .nm-bib-txt { display: none; }
  .nm-bib-acc .nm-bib-btn-sm { width: 30px; padding: 0; }
  .nm-bib-tipos-sel { grid-template-columns: repeat(3, 1fr); }
  .nm-bib-tres, .nm-bib-dos { grid-template-columns: 1fr; }
  .nm-bib-fila { padding: 12px; gap: 10px; }
}

/* =====================================================================================
   CALENDARIO LABORAL (festivos.php)
   El año en una rejilla de casillas redondeadas (meses en filas, días en columnas), con el
   mismo color de fin de semana que Inicio y Preferencias. Las casillas (.nm-fest-c) son las
   mismas en la tabla, en la leyenda y en la tira de los periodos de navidad.
   Los puentes (PP, PPN) llevan una raya abajo y un fondo suave de su color; los festivos, sólo
   la raya del puente. La raya es una sombra interior: las reglas de las tablas de
   administración quitan los bordes con !important, y por eso no se veía.
   ===================================================================================== */
.nm-adm-festivos .nm-fest-card { padding: 14px 16px 16px !important; }
.nm-fest-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.nm-fest-barra-t { margin-right: 4px; color: var(--nm-muted); font: 700 11px var(--nm-font); letter-spacing: .08em; text-transform: uppercase; }
.nm-fest-herr { display: inline-flex; align-items: center; gap: 7px; height: 32px; padding: 0 10px 0 5px; margin: 0; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); font: 550 13px var(--nm-font); white-space: nowrap; }
button.nm-fest-herr { cursor: pointer; transition: border-color .15s, box-shadow .15s; }
button.nm-fest-herr:hover { border-color: var(--nm-muted); }
button.nm-fest-herr.on { border-color: var(--nm-text); box-shadow: 0 0 0 1px var(--nm-text); }
.nm-fest-herr-k { min-width: 18px; padding: 0 5px; border-radius: 999px; background: var(--nm-hover); color: var(--nm-muted); font: 650 11px/18px var(--nm-font); text-align: center; }
.nm-fest-herr .nm-fest-muestra { width: 22px; height: 22px; border-radius: 5px; flex: none; }
.nm-fest-goma { display: grid; place-items: center; background: var(--nm-text); color: var(--nm-card); font-size: 11px; }
.nm-fest-herr-borrar.on { border-color: var(--nm-primary); box-shadow: 0 0 0 1px var(--nm-primary); }
.nm-fest-herr-borrar.on .nm-fest-goma { background: var(--nm-primary); color: #fff; }
.nm-fest-ayuda { margin: 10px 0 0 !important; color: var(--nm-muted); font-size: 12.5px; line-height: 1.5; max-width: 900px; text-align: left; }
.nm-fest-ayuda b { color: var(--nm-text); }
.nm-fest-info { min-height: 18px; margin: 4px 0 6px !important; font-size: 12.5px; font-weight: 600; text-align: left; }
.nm-fest-info.ok { color: #1d7a1d; }
.nm-fest-info.error { color: var(--nm-primary); }

.nm-fest-scroll { overflow-x: auto; border: 1px solid var(--nm-line-soft); border-radius: 10px; background: var(--nm-card); }
table.nm-fest-tabla { width: 100%; min-width: 980px; margin: 0 !important; table-layout: fixed; border: 0 !important; border-collapse: separate !important; border-spacing: 3px !important; background: transparent !important; font-family: var(--nm-font); }
table.nm-fest-tabla col.nm-fest-col-mes { width: 104px; }
table.nm-fest-tabla :is(th, td) { border: 0 !important; padding: 0 !important; vertical-align: middle; }
table.nm-fest-tabla thead th { height: 24px; background: transparent !important; color: var(--nm-muted) !important; font: 650 11px var(--nm-font) !important; text-align: center; }
table.nm-fest-tabla .nm-fest-mes { position: sticky; left: 0; z-index: 2; padding: 0 10px 0 6px !important; background: var(--nm-card) !important; color: var(--nm-text) !important; font: 650 12.5px var(--nm-font) !important; text-align: left !important; white-space: nowrap; }
table.nm-fest-tabla thead .nm-fest-mes { color: var(--nm-muted) !important; font-size: 11px !important; }
/* la columna del mes tapa el hueco entre casillas al desplazar la tabla de lado */
table.nm-fest-tabla .nm-fest-mes { box-shadow: 4px 0 0 var(--nm-card), -4px 0 0 var(--nm-card); }
.nm-fest-mes-c { display: none; }
/* el año en la esquina: desplegable (en el móvil, sólo el número: se cambia con el de arriba) */
table.nm-fest-tabla thead th.nm-fest-anyo { height: 40px; padding: 4px 8px 4px 0 !important; }
.nm-fest-anyo-sel { width: 100%; height: 32px; font-weight: 650; }
.nm-fest-anyo-t { display: none; }
table.nm-fest-tabla td.nm-fest-nodia { background: transparent !important; }

/* la casilla de un día */
.nm-fest-c { height: 30px; border-radius: 5px; text-align: center; font: 650 11.5px var(--nm-font); }
.nm-fest-c.dayweek { background-color: var(--nm-hover); color: var(--nm-muted); }
.nm-fest-c.weekend { background-color: #abddec; color: #0d3b4c; }
:root[data-tema="oscuro"] .nm-fest-c.weekend { background-color: #1d4656; color: #cdeef8; }
@media (prefers-color-scheme: dark) { :root[data-tema="auto"] .nm-fest-c.weekend { background-color: #1d4656; color: #cdeef8; } }
.nm-fest-c.td_puente { box-shadow: inset 0 -4px 0 var(--nm-fest-pp, #b6b601); }
.nm-fest-c.td_puentenav { box-shadow: inset 0 -4px 0 var(--nm-fest-ppn, #00a500); }
.nm-fest-c.nm-fest-puente.td_puente { background-color: color-mix(in srgb, var(--nm-fest-pp, #b6b601) 24%, var(--nm-card)); color: var(--nm-text); }
.nm-fest-c.nm-fest-puente.td_puentenav { background-color: color-mix(in srgb, var(--nm-fest-ppn, #00a500) 18%, var(--nm-card)); color: var(--nm-text); }
/* en los días de navidad (verdes) la raya verde no se vería: un verde más oscuro */
.nm-fest-c.td_but_20NN.td_puentenav { box-shadow: inset 0 -4px 0 color-mix(in srgb, var(--nm-fest-ppn, #00a500) 55%, #000); }
/* hoy */
.nm-fest-c.nm-fest-hoy { outline: 2px solid var(--nm-text); outline-offset: -2px; font-weight: 800; }

/* editando: el día bajo el ratón y la vista previa de cómo va a quedar */
.nm-fest-editando td[data-dia] { cursor: pointer; user-select: none; }
.nm-fest-editando td[data-dia]:hover { outline: 2px solid var(--nm-accent); outline-offset: -2px; }
.nm-fest-c.nm-fest-previa { opacity: .55; }
.nm-fest-c.nm-fest-previa-borrar { opacity: 1; outline: 2px dashed var(--nm-primary) !important; outline-offset: -2px; }
.nm-fest-c.nm-fest-guardando { animation: nm-fest-guardando 1s ease-in-out infinite; }
@keyframes nm-fest-guardando { 50% { opacity: .5; } }

/* la tira de días de cada periodo de navidad, con las mismas casillas */
.nm-adm-festivos .nv-tira-letras .nm-fest-c { height: auto; border-radius: 0; font-size: 11px; }

@media (max-width: 760px) {
  .nm-fest-herr { height: 30px; font-size: 12.5px; }
  .nm-fest-herr-k { display: none; }
  table.nm-fest-tabla { min-width: 860px; }
  table.nm-fest-tabla col.nm-fest-col-mes { width: 46px; }
  .nm-fest-mes-l { display: none; }
  .nm-fest-mes-c { display: inline; }
  .nm-fest-anyo-sel { display: none; }
  .nm-fest-anyo-t { display: inline; }
}

/* =====================================================================================
   EDITAR LA TABLA: DESHACER / REHACER Y PINTAR ARRASTRANDO (edicion_tabla.js)
   Planning, guardias y Tu calendario. La barra sale abajo a la derecha en cuanto hay algo que
   deshacer, con lo que se va a deshacer (y, si has deshecho algo, lo que se puede rehacer).
   ===================================================================================== */
/* abajo a la derecha, una encima de otra: el aviso de cambios de otras personas y la barra de deshacer */
.nm-flotantes { position: fixed; right: 20px; bottom: 20px; z-index: 9998; display: flex; flex-direction: column; gap: 8px; width: min(460px, calc(100vw - 40px)); pointer-events: none; }
.nm-flotantes > * { pointer-events: auto; }
.nm-deshacer-barra { position: relative; display: flex; flex-direction: column; gap: 6px; padding: 10px 40px 10px 12px; border-radius: 12px; background: #1d2125; color: #fff; font-family: var(--nm-font); box-shadow: 0 10px 28px rgba(0,0,0,.28); animation: nm-deshacer-entra .25s ease; }
.nm-deshacer-barra[hidden], .nm-deshacer-fila[hidden] { display: none !important; }
@keyframes nm-deshacer-entra { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.nm-deshacer-fila { display: flex; align-items: center; gap: 10px; min-width: 0; }
.nm-deshacer-fila + .nm-deshacer-fila { padding-top: 6px; border-top: 1px solid rgba(255,255,255,.12); }
.nm-deshacer-b { flex: none; display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; margin: 0; border: 1px solid rgba(255,255,255,.28); border-radius: 8px; background: transparent; color: #fff; font: 650 13px var(--nm-font); white-space: nowrap; cursor: pointer; transition: background .15s, border-color .15s; }
.nm-deshacer-b:hover:not(:disabled) { background: rgba(255,255,255,.12); border-color: rgba(255,255,255,.5); }
.nm-deshacer-b:disabled { opacity: .5; cursor: default; }
.nm-deshacer-fila[data-fila="deshacer"] .nm-deshacer-b { background: #fff; border-color: #fff; color: #1d2125; }
.nm-deshacer-fila[data-fila="deshacer"] .nm-deshacer-b:hover:not(:disabled) { background: #e9ecef; }
.nm-deshacer-txt { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; color: #dfe4e9; }
.nm-deshacer-x { position: absolute; top: 8px; right: 8px; width: 26px; height: 26px; display: grid; place-items: center; padding: 0; margin: 0; border: 0; border-radius: 6px; background: transparent; color: #9aa3ad; cursor: pointer; }
.nm-deshacer-x:hover { background: rgba(255,255,255,.1); color: #fff; }
.nm-deshacer-barra.is-ocupado .fa-rotate-left, .nm-deshacer-barra.is-ocupado .fa-rotate-right { animation: nm-fa-spin 1s linear infinite; }
:root[data-tema="oscuro"] .nm-deshacer-barra { background: #f1f3f5; color: #15181b; }
:root[data-tema="oscuro"] .nm-deshacer-txt { color: #3c4855; }
:root[data-tema="oscuro"] .nm-deshacer-b { border-color: rgba(0,0,0,.25); color: #15181b; }
:root[data-tema="oscuro"] .nm-deshacer-fila[data-fila="deshacer"] .nm-deshacer-b { background: #15181b; border-color: #15181b; color: #fff; }
:root[data-tema="oscuro"] .nm-deshacer-fila + .nm-deshacer-fila { border-top-color: rgba(0,0,0,.12); }
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] .nm-deshacer-barra { background: #f1f3f5; color: #15181b; }
  :root[data-tema="auto"] .nm-deshacer-txt { color: #3c4855; }
  :root[data-tema="auto"] .nm-deshacer-b { border-color: rgba(0,0,0,.25); color: #15181b; }
  :root[data-tema="auto"] .nm-deshacer-fila[data-fila="deshacer"] .nm-deshacer-b { background: #15181b; border-color: #15181b; color: #fff; }
}
/* en el móvil, a lo ancho encima de la barra de abajo; el snackbar normal sube para no taparla */
@media (max-width: 760px) {
  .nm-flotantes { left: 8px; right: 8px; width: auto; bottom: calc(var(--nm-abajo-h) + 8px + env(safe-area-inset-bottom)); }
  .nm-deshacer-txt { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.3; font-size: 12.5px; }
  .nm-v2.nm-con-deshacer #snackbar-container, body.nm-con-deshacer #snackbar-container { bottom: calc(var(--nm-abajo-h) + 110px + env(safe-area-inset-bottom)); }
}
/* mientras se arrastra: sin seleccionar texto y con el cursor de pintar */
.nm-pintando, .nm-pintando * { user-select: none; cursor: crosshair !important; }

/* =====================================================================================
   CAMBIOS DE OTRAS PERSONAS (edicion_tabla.js + eventos_cambios.php)
   El aviso con quién ha cambiado qué mientras tenías la página abierta, y las celdas que tocó.
   ===================================================================================== */
.nm-aviso-cambios { position: relative; display: flex; align-items: flex-start; gap: 10px; padding: 12px 40px 12px 12px; border: 1px solid #e0a800; border-left-width: 4px; border-radius: 12px; background: #fff8e1; color: #3d2f00; font-family: var(--nm-font); box-shadow: 0 10px 28px rgba(0,0,0,.18); animation: nm-deshacer-entra .25s ease; }
.nm-aviso-cambios[hidden] { display: none !important; }
.nm-aviso-cambios .nm-aviso-ic { flex: none; margin-top: 2px; color: #b38600; font-size: 15px; }
.nm-aviso-txt { flex: 1 1 auto; min-width: 0; font-size: 13px; line-height: 1.4; }
.nm-aviso-t { display: block; margin-bottom: 4px; font-size: 13px; }
.nm-aviso-txt ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 3px; }
.nm-aviso-txt li { overflow-wrap: anywhere; }
.nm-aviso-hora { color: #8a6d00; font-size: 12px; }
.nm-aviso-conflicto { margin: 0 0 6px !important; color: #9c0000; font-weight: 650; }
.nm-aviso-cambios.es-conflicto { border-color: #bd0000; background: #fdecea; color: #3b0000; }
.nm-aviso-cambios.es-conflicto .nm-aviso-ic { color: #bd0000; }
.nm-aviso-cambios .nm-aviso-actualizar { align-self: center; background: #1d2125; border-color: #1d2125; color: #fff; }
.nm-aviso-cambios .nm-aviso-actualizar:hover:not(:disabled) { background: #000; border-color: #000; }
.nm-aviso-cambios .nm-deshacer-x { color: #8a6d00; }
.nm-aviso-cambios .nm-deshacer-x:hover { background: rgba(0,0,0,.06); color: #3d2f00; }
:root[data-tema="oscuro"] .nm-aviso-cambios { background: #3a2e00; border-color: #e0a800; color: #ffe9a8; }
:root[data-tema="oscuro"] .nm-aviso-cambios.es-conflicto { background: #3a1416; border-color: #ff7a7a; color: #ffd6d6; }
:root[data-tema="oscuro"] .nm-aviso-conflicto { color: #ff9b9b; }
:root[data-tema="oscuro"] .nm-aviso-hora, :root[data-tema="oscuro"] .nm-aviso-cambios .nm-deshacer-x { color: #e0c46a; }
:root[data-tema="oscuro"] .nm-aviso-cambios .nm-aviso-actualizar { background: #f1f3f5; border-color: #f1f3f5; color: #15181b; }
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] .nm-aviso-cambios { background: #3a2e00; border-color: #e0a800; color: #ffe9a8; }
  :root[data-tema="auto"] .nm-aviso-cambios.es-conflicto { background: #3a1416; border-color: #ff7a7a; color: #ffd6d6; }
  :root[data-tema="auto"] .nm-aviso-cambios .nm-aviso-actualizar { background: #f1f3f5; border-color: #f1f3f5; color: #15181b; }
}
@media (max-width: 760px) {
  .nm-aviso-cambios { flex-wrap: wrap; }
  .nm-aviso-cambios .nm-aviso-actualizar { margin-left: 25px; }
}
/* la celda que ha cambiado otra persona */
.nm-cambio-ajeno { outline: 2px dashed #e08900 !important; outline-offset: -2px; }

/* Cambios: con alguien de fuera (cambios.php, cambios_externos.php) */
.nm-cambios-tipos.con-externo { grid-template-columns: repeat(5, minmax(0, 1fr)); }
@media (max-width: 760px) { .nm-cambios-tipos.con-externo { grid-template-columns: repeat(2, minmax(0, 1fr)); } .nm-cambios-tipos.con-externo .nm-cambio-tipo:last-child { grid-column: 1 / -1; } }
.nm-ext { display: flex; flex-direction: column; gap: 12px; text-align: left; }
.nm-ext-ops { align-self: flex-start; }
.nm-ext-explica { margin: 0 !important; color: var(--nm-muted); font: 13.5px/1.4 var(--nm-font); }
.nm-ext-mes { display: flex; align-items: center; gap: 10px; }
.nm-ext-mes b { min-width: 130px; text-align: center; font: 700 15px var(--nm-font); color: var(--nm-text); }
.nm-ext-mes .nm-btn { padding: 0 10px; }
.nm-ext-paso[hidden] { display: none !important; }
.nm-ext-t { display: block; margin: 0 0 6px; color: var(--nm-muted); font: 650 12px var(--nm-font); text-transform: uppercase; letter-spacing: .03em; }
.nm-ext-t small { text-transform: none; letter-spacing: 0; font-weight: 500; }
.nm-ext-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.nm-ext-chip { padding: 6px 11px; border: 1px solid var(--nm-line); border-radius: 999px; background: var(--nm-card); color: var(--nm-text); font: 500 13px var(--nm-font); cursor: pointer; }
.nm-ext-chip b { font-weight: 700; color: #bd0000; margin-right: 2px; }
.nm-ext-chip:hover { background: var(--nm-hover); }
.nm-ext-chip.on { border-color: var(--nm-accent); background: var(--nm-accent-soft); color: var(--nm-accent-ink); font-weight: 700; }
.nm-ext-clase + .nm-ext-clase { margin-top: 10px; }
.nm-ext-clase-t { display: block; margin: 0 0 5px; font: 600 13px var(--nm-font); color: var(--nm-text); }
.nm-ext-vacio { color: var(--nm-muted); font: italic 13px var(--nm-font); }
.nm-ext-nombre { display: block; margin: 0; }
.nm-ext-nombre input { width: 100%; max-width: 380px; height: 36px; padding: 0 10px; border: 1px solid var(--nm-line); border-radius: 8px; background: var(--nm-card); color: var(--nm-text); font: 14px var(--nm-font); }
.nm-ext-nota { margin: -6px 0 0 !important; color: var(--nm-muted); font: 12px/1.4 var(--nm-font); }
.nm-ext-resumen { margin: 0 !important; padding: 10px 12px; border-left: 3px solid var(--nm-accent); border-radius: 6px; background: var(--nm-accent-soft); color: var(--nm-text); font: 13.5px/1.45 var(--nm-font); }
.nm-ext-resumen[hidden] { display: none !important; }
/* Cambios: mientras se pide uno, la vuelta a "Tus cambios" (cambios.php, cambiosModoPedir) */
.nm-pagina-cambios .nm-cambios-pregunta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; }
.nm-cambios-volver { margin-left: auto; font: 600 13px var(--nm-font); color: var(--nm-muted) !important; text-decoration: none !important; }
.nm-cambios-volver:hover { color: var(--nm-text) !important; }
.nm-cambios-volver[hidden] { display: none; }
