/* ============================================================================
 * mrh.css — Sistema de diseño del rediseño de magma_rrhh
 * 31-ago-2026 · Portado de las maquetas aprobadas ("RRHH Vistas" / "Rotas Mobile")
 *
 * TRES REGLAS QUE NO SE ROMPEN
 * ---------------------------
 * 1. TODO va dentro de #mrh. Un id gana a cualquier selector de Bootstrap 3
 *    (que no usa ninguno), así que no hace falta un solo !important para
 *    ganarle. Fuera de #mrh este fichero no pinta nada: no puede romper el
 *    resto del panel como hizo resourcebooking.css.
 * 2. EL ROJO ES SOLO ALERTA Y ACCIÓN DESTRUCTIVA. La acción primaria es negra
 *    (--mrh-ink). No existe ningún botón de fondo rojo en este fichero.
 *    Excepción única: verde para "Publicar", que es lo que cierra el flujo.
 * 3. Los umbrales del semáforo viven SOLO en la sección UMBRALES de abajo y en
 *    magma_rrhh_ui_helper.php. Las maquetas se contradecían entre sí
 *    (110/50 vs 100/70 vs 100/60); aquí están unificados y explicados.
 *
 * ⚠️ NO uses `font: <peso> <px>/<lh> inherit`. `inherit` no es una familia válida
 *    dentro del atajo `font:` y el navegador DESCARTA LA DECLARACIÓN ENTERA, sin
 *    error y sin hueco: el KPI de 26px sale a 16px con peso 400 y todo se aplana.
 *    Comprobado en Chrome. Por eso la escala va en formato largo: así la familia
 *    se hereda de #mrh, que es lo que se quería, y el tamaño y el peso se aplican.
 *
 * Tipografía: Geist (la del panel, cargada en head.php). Las maquetas usaban
 * Manrope; son la misma clase de grotesca geométrica y los pesos mapean 1:1.
 * Se mantiene Geist para que el módulo no parezca de otra aplicación.
 * ========================================================================= */

#mrh {
    /* ---- Neutros --------------------------------------------------------- */
    --mrh-ink:            #17171a;   /* acción primaria, texto fuerte */
    --mrh-ink-2:          #2a2a2e;   /* botón dentro de barra negra */
    --mrh-text:           #57575a;
    --mrh-muted:          #5a5a56;   /* el más usado del sistema. #5f5f5b se quedaba en 4,39:1 sobre la superficie 2 */
    --mrh-muted-2:        #6f6f6a;
    --mrh-muted-3:        #73736e;   /* 4,7:1 sobre blanco. Antes #8f8f8a = 3,0:1 */

    --mrh-surface:        #ffffff;
    --mrh-surface-2:      #fafaf9;   /* cabecera de tabla, panel de KPIs */
    --mrh-surface-3:      #fbfbfa;   /* lateral, barra de salud */
    --mrh-canvas:         #ececeb;

    --mrh-border-strong:  #dededa;
    --mrh-border:         #e2e2de;
    --mrh-border-soft:    #e4e4df;
    --mrh-border-head:    #e9e9e4;
    --mrh-rule:           #eeeeea;
    --mrh-rule-soft:      #f2f2ee;
    --mrh-rule-row:       #f4f4f1;
    --mrh-chip-bg:        #f4f4f1;
    --mrh-track:          #ecece8;
    --mrh-dash:           #d6d6d1;
    --mrh-checkbox:       #b4b4af;
    --mrh-bar-plan:       #c7c7c2;   /* barra "planificado" del gráfico */

    /* ---- Semáforo. Dos rampas a propósito:
            -bar  = señal (saturada, se ve de lejos en una barra de 5px)
            -ink  = lectura (oscura, legible como número)               ---- */
    --mrh-ok-bar:    #22c55e;  --mrh-ok-ink:    #15803d;
    --mrh-ok-bg:     #dcfce7;  --mrh-ok-border: #c9e7d2;  --mrh-ok-deep: #166534;
    --mrh-warn-bar:  #d97706;  --mrh-warn-ink:  #b45309;
    --mrh-warn-bg:   #fffbeb;  --mrh-warn-border:#f5e2ad; --mrh-warn-deep:#92400e;
    --mrh-bad-bar:   #dc2626;  --mrh-bad-ink:   #b91c1c;
    --mrh-bad-bg:    #fef2f2;  --mrh-bad-border:#f6cfcf;  --mrh-bad-deep: #7f1d1d;
    --mrh-fc-bar:    #5b21b6;  --mrh-fc-ink:    #5b21b6;   /* previsión / IA */
    --mrh-fc-bg:     #f3ecff;  --mrh-fc-border: #ddd0fb;
    --mrh-over-bar:  #a5b4fc;  --mrh-over-ink:  #1e3a8a;   /* sobredimensionado */
    --mrh-publish:   #15803d;                              /* única excepción cromática */

    /* ---- Radios ---------------------------------------------------------- */
    --mrh-r-card:   18px;
    --mrh-r-inner:  13px;
    --mrh-r-box:    11px;
    --mrh-r-btn:    10px;
    --mrh-r-chip:    9px;
    --mrh-r-mini:    8px;
    --mrh-r-pill:   99px;

    /* ---- Sombras: solo una, y solo en la tarjeta grande ------------------- */
    --mrh-shadow-card: 0 22px 50px -26px rgba(0,0,0,.26);

    font-family: var(--magma-font, 'Geist', system-ui, 'Helvetica Neue', Arial, sans-serif);
    -webkit-font-smoothing: antialiased;
    color: var(--mrh-ink);
    font-variant-numeric: tabular-nums;   /* cifras que no bailan al actualizarse */
}

/* ---- Modo oscuro. El panel lo activa con .theme-dark en <html>/<body>.
        Se invierten SOLO las superficies y los neutros: el semáforo mantiene
        su significado y solo se aclaran las tintas para que contrasten. ---- */
.theme-dark #mrh,
[data-theme="dark"] #mrh {
    --mrh-ink:           #f2f3f5;
    --mrh-ink-2:         #2f3138;
    --mrh-text:          #c3c7cf;
    --mrh-muted:         #9aa1ad;
    --mrh-muted-2:       #939aa6;   /* 4,7:1. Antes #848b96 = 4,2:1 */
    --mrh-muted-3:       #9aa2b0;   /* 4,9:1 sobre la superficie oscura. Antes #6d7480 = 3,3:1 */
    --mrh-surface:       #1a1c21;
    --mrh-surface-2:     #202329;
    --mrh-surface-3:     #1e2126;
    --mrh-canvas:        #14161a;
    --mrh-border-strong: #33373f;
    --mrh-border:        #2e323a;
    --mrh-border-soft:   #2b2f36;
    --mrh-border-head:   #2b2f36;
    --mrh-rule:          #272b32;
    --mrh-rule-soft:     #23262c;
    --mrh-rule-row:      #212429;
    --mrh-chip-bg:       #262a31;
    --mrh-track:         #2b2f36;
    --mrh-dash:          #3a3f48;
    --mrh-checkbox:      #565c66;
    --mrh-bar-plan:      #4a4f58;
    --mrh-ok-ink:   #4ade80;  --mrh-ok-bg:   #12271b;  --mrh-ok-border:  #1f4a30;  --mrh-ok-deep:  #86efac;
    --mrh-warn-ink: #fbbf24;  --mrh-warn-bg: #2a2011;  --mrh-warn-border:#5a4413;  --mrh-warn-deep:#fcd34d;
    --mrh-bad-ink:  #f87171;  --mrh-bad-bg:  #2a1416;  --mrh-bad-border: #5c2326;  --mrh-bad-deep: #fca5a5;
    --mrh-fc-ink:   #c4b5fd;  --mrh-fc-bg:   #201a35;  --mrh-fc-border:  #3d3168;
    --mrh-over-ink: #93c5fd;
    --mrh-publish:  #22c55e;
    --mrh-on-publish: #06210f;   /* blanco sobre este verde = 2,3:1; tinta oscura > 9:1 */
    --mrh-shadow-card: 0 22px 50px -26px rgba(0,0,0,.6);
}

/* ============================================================================
 * TIPOGRAFÍA
 * Regla de oro de la maqueta: las MAYÚSCULAS solo existen a 10-11px con peso
 * 700/800 y letter-spacing. Nunca a 12px o más. ("menos rótulos gritando")
 * ========================================================================= */
#mrh .mrh-h1        { font-weight: 800; font-size: 21px; line-height: 1.1; letter-spacing: -.01em; margin: 0; color: var(--mrh-ink); }
#mrh .mrh-h1-name   { font-weight: 800; font-size: 23px; line-height: 1;  letter-spacing: -.01em; margin: 0; color: var(--mrh-ink); }
#mrh .mrh-h2        { font-weight: 800; font-size: 17px; line-height: 1.1; margin: 0; color: var(--mrh-ink); }
#mrh .mrh-kpi-xl    { font-weight: 800; font-size: 26px; line-height: 1; }
#mrh .mrh-kpi-l     { font-weight: 800; font-size: 20px; line-height: 1; }
#mrh .mrh-kpi-m     { font-weight: 800; font-size: 19px; line-height: 1; }
#mrh .mrh-kpi-s     { font-weight: 800; font-size: 17px; line-height: 1; }
#mrh .mrh-num       { font-weight: 800; font-size: 14px; line-height: 1; }
#mrh .mrh-num-sm    { font-weight: 800; font-size: 13px; line-height: 1; }
#mrh .mrh-label     { font-weight: 700; font-size: 13px; line-height: 1.2; color: var(--mrh-ink); }
#mrh .mrh-body      { font-weight: 400; font-size: 13px; line-height: 1.5; color: var(--mrh-text); }
#mrh .mrh-meta      { font-weight: 500; font-size: 12px; line-height: 1.4; color: var(--mrh-muted); }
#mrh .mrh-meta-2    { font-weight: 600; font-size: 11px; line-height: 1;   color: var(--mrh-muted-2); }
#mrh .mrh-micro     { font-weight: 600; font-size: 10px; line-height: 1;   color: var(--mrh-muted-2); }
#mrh .mrh-eyebrow {
    font-weight: 700; font-size: 10px; line-height: 1;
    text-transform: uppercase;
    letter-spacing: .09em;
    color: var(--mrh-muted);
}
#mrh .mrh-eyebrow-strong { font-weight: 800; letter-spacing: .08em; color: var(--mrh-ink); }

/* ============================================================================
 * SUPERFICIES
 * ========================================================================= */
#mrh .mrh-card {
    background: var(--mrh-surface);
    border: 1px solid var(--mrh-border-strong);
    border-radius: var(--mrh-r-card);
    box-shadow: var(--mrh-shadow-card);
    overflow: hidden;
}
#mrh .mrh-box {
    background: var(--mrh-surface);
    border: 1px solid var(--mrh-rule);
    border-radius: var(--mrh-r-inner);
}
#mrh .mrh-zone { background: var(--mrh-surface-2); }
#mrh .mrh-aside { background: var(--mrh-surface-3); }
#mrh .mrh-sep { border-bottom: 1px solid var(--mrh-rule); }

/* ============================================================================
 * BOTONES — la acción primaria es NEGRA. Aquí no hay ni un fondo rojo.
 * Se blinda contra .btn / .btn-primary de Bootstrap, que en este panel es el
 * rojo corporativo: precisamente lo que el rediseño viene a quitar de en medio.
 * ========================================================================= */
#mrh .mrh-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 11px 15px;
    border-radius: var(--mrh-r-btn);
    border: 1px solid transparent;
    font-weight: 700; font-size: 13px; line-height: 1;
    cursor: pointer;
    text-decoration: none;
    background: var(--mrh-ink);
    color: var(--mrh-surface);
    transition: opacity 140ms cubic-bezier(.22,.61,.36,1),
                background-color 140ms cubic-bezier(.22,.61,.36,1);
    white-space: nowrap;
    min-height: 40px;
}
#mrh .mrh-btn:hover,
#mrh .mrh-btn:focus { opacity: .88; color: var(--mrh-surface); text-decoration: none; }

#mrh .mrh-btn--ghost {
    background: var(--mrh-surface);
    color: var(--mrh-text);
    border-color: var(--mrh-border);
    padding: 11px 14px;
}
#mrh .mrh-btn--ghost:hover,
#mrh .mrh-btn--ghost:focus { background: var(--mrh-surface-2); color: var(--mrh-ink); }

/* Publicar: la única excepción cromática. Es lo que cierra el flujo. */
#mrh .mrh-btn--publish { background: var(--mrh-publish); color: var(--mrh-on-publish, #fff); }
#mrh .mrh-btn--publish:hover { color: var(--mrh-on-publish, #fff); }

#mrh .mrh-btn--sm  { padding: 8px 11px;  font-weight: 700; font-size: 12px; line-height: 1; min-height: 34px; }
#mrh .mrh-btn--xs  { padding: 7px 10px;  font-weight: 700; font-size: 11px; line-height: 1; min-height: 30px; }
#mrh .mrh-btn--icon{ padding: 0; width: 32px; height: 32px; }
#mrh .mrh-btn--block { display: flex; width: 100%; }

/* Acción destructiva. No es un botón: es texto. Deliberado — en toda la maqueta
   la baja de un trabajador es la única acción destructiva y no compite con nada. */
#mrh .mrh-destructive {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: none;
    border: 0;
    padding: 0;
    font-weight: 700; font-size: 12px; line-height: 1;
    color: var(--mrh-bad-ink);
    cursor: pointer;
    text-decoration: none;
}
#mrh .mrh-destructive:hover { color: var(--mrh-bad-deep); text-decoration: underline; }
#mrh .mrh-destructive-slot {
    border-top: 1px solid var(--mrh-rule);
    padding-top: 14px;
    margin-top: auto;
}

/* Foco visible en todo lo pulsable (el panel lo pierde en varios sitios). */
#mrh .mrh-btn:focus-visible,
#mrh .mrh-chip:focus-visible,
#mrh .mrh-destructive:focus-visible,
#mrh .mrh-tab:focus-visible,
#mrh [tabindex]:focus-visible {
    outline: 2px solid var(--mrh-ink);
    outline-offset: 2px;
}

/* ============================================================================
 * AVATAR — obligatorio en toda fila, tarjeta, sugerencia y notificación.
 * El tinte se deriva del ID del trabajador, NUNCA de su posición en la lista:
 * si se deriva de la posición, el color de una persona cambia al reordenar y
 * deja de servir para reconocerla. (En la maqueta estaba mal por eso.)
 * ========================================================================= */
#mrh .mrh-av {
    border-radius: var(--mrh-r-pill);
    display: grid;
    place-items: center;
    flex: none;
    overflow: hidden;
    font-weight: 800;
    letter-spacing: -.02em;
    user-select: none;
    background-size: cover;
    background-position: center;
}
#mrh .mrh-av--64 { width: 64px; height: 64px; font-size: 22px; }
#mrh .mrh-av--44 { width: 44px; height: 44px; font-size: 15px; }
#mrh .mrh-av--40 { width: 40px; height: 40px; font-size: 13px; }
#mrh .mrh-av--36 { width: 36px; height: 36px; font-size: 12px; }
#mrh .mrh-av--34 { width: 34px; height: 34px; font-size: 12px; }
#mrh .mrh-av--30 { width: 30px; height: 30px; font-size: 11px; }
#mrh .mrh-av--24 { width: 24px; height: 24px; font-size: 9px;  }
#mrh .mrh-av--ring   { box-shadow: 0 0 0 3px var(--mrh-surface), 0 0 0 4px var(--mrh-border); }
#mrh .mrh-av--ring-2 { box-shadow: 0 0 0 2px var(--mrh-surface), 0 0 0 3px var(--mrh-border-soft); }
#mrh .mrh-av img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* 7 tintes rotatorios, índice = id % 7 */
#mrh .mrh-av--t0 { background: #e8e2f8; color: #4c1d95; }
#mrh .mrh-av--t1 { background: #dcecdf; color: #14532d; }
#mrh .mrh-av--t2 { background: #f6e3dd; color: #7c2d12; }
#mrh .mrh-av--t3 { background: #e2e6ef; color: #1e293b; }
#mrh .mrh-av--t4 { background: #f7e6c6; color: #78350f; }
#mrh .mrh-av--t5 { background: #e6e9f7; color: #1e3a8a; }
#mrh .mrh-av--t6 { background: #efe3ef; color: #701a75; }
.theme-dark #mrh .mrh-av--t0 { background: #342a4d; color: #d8ccf5; }
.theme-dark #mrh .mrh-av--t1 { background: #23392a; color: #b7e3c2; }
.theme-dark #mrh .mrh-av--t2 { background: #43302a; color: #f0c3ae; }
.theme-dark #mrh .mrh-av--t3 { background: #2b303a; color: #c3cbdb; }
.theme-dark #mrh .mrh-av--t4 { background: #443a29; color: #f3d9a5; }
.theme-dark #mrh .mrh-av--t5 { background: #2a3145; color: #b4c4ef; }
.theme-dark #mrh .mrh-av--t6 { background: #3d2c3d; color: #e6bde4; }

/* Grupo de avatares solapados (equipo del centro) */
#mrh .mrh-av-stack { display: flex; flex-wrap: wrap; gap: 4px; }

/* ============================================================================
 * CHIPS Y PÍLDORAS
 * ========================================================================= */
#mrh .mrh-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 10px;
    border-radius: var(--mrh-r-chip);
    font-weight: 700; font-size: 12px; line-height: 1;
    border: 1px solid var(--mrh-border-soft);
    background: var(--mrh-surface);
    color: var(--mrh-text);
    cursor: pointer;
    text-decoration: none;
    white-space: nowrap;
}
#mrh .mrh-chip:hover { background: var(--mrh-surface-2); color: var(--mrh-ink); text-decoration: none; }
/* Filtro aplicado: negro con su ✕. Es acción, por eso es negro. */
#mrh .mrh-chip--on {
    background: var(--mrh-ink);
    border-color: var(--mrh-ink);
    color: var(--mrh-surface);
}
#mrh .mrh-chip--on:hover { background: var(--mrh-ink); color: var(--mrh-surface); opacity: .88; }
#mrh .mrh-chip--add { border: 1px dashed var(--mrh-dash); background: none; color: var(--mrh-muted); }
#mrh .mrh-chip__n   { font-weight: 800; }
#mrh .mrh-chip__lbl { font-weight: 500; }
/* Carencia dura (sin asignación): rojo. Es una alerta, no una etiqueta. */
#mrh .mrh-chip--bad  { background: var(--mrh-bad-bg);  border-color: var(--mrh-bad-border);  color: var(--mrh-bad-ink); }
#mrh .mrh-chip--warn { background: var(--mrh-warn-bg); border-color: var(--mrh-warn-border); color: var(--mrh-warn-ink); }
#mrh .mrh-chip--fc   { background: var(--mrh-fc-bg);   border-color: var(--mrh-fc-border);   color: var(--mrh-fc-ink); }

#mrh .mrh-pill {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 8px;
    border-radius: var(--mrh-r-pill);
    font-weight: 600; font-size: 11px; line-height: 1;
    background: var(--mrh-chip-bg);
    color: var(--mrh-text);
    white-space: nowrap;
}
#mrh .mrh-pill--ok   { background: var(--mrh-ok-bg);   color: var(--mrh-ok-deep); }
#mrh .mrh-pill--warn { background: var(--mrh-warn-bg); color: var(--mrh-warn-deep); }
#mrh .mrh-pill--bad  { background: var(--mrh-bad-bg);  color: var(--mrh-bad-deep); }
#mrh .mrh-pill--fc   { background: var(--mrh-fc-bg);   color: var(--mrh-fc-ink); }
#mrh .mrh-pill__dot  { width: 6px; height: 6px; border-radius: var(--mrh-r-pill); background: currentColor; flex: none; }

/* Etiqueta de incidencia bajo el nombre. Solo cuando aporta. */
#mrh .mrh-flag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 7px;
    border-radius: 6px;
    font-weight: 700; font-size: 10px; line-height: 1;
    background: var(--mrh-warn-bg);
    color: var(--mrh-warn-ink);
    border: 1px solid var(--mrh-warn-border);
}
#mrh .mrh-flag--bad { background: var(--mrh-bad-bg); color: var(--mrh-bad-ink); border-color: var(--mrh-bad-border); }

/* Punto de última actividad. Nunca rojo: llevar 20 días sin fichar no es una
   alerta, es un dato. El rojo aquí devaluaría el rojo de verdad. */
#mrh .mrh-dot { width: 7px; height: 7px; border-radius: var(--mrh-r-pill); flex: none; display: inline-block; }
#mrh .mrh-dot--live { background: var(--mrh-ok-bar); }
#mrh .mrh-dot--warm { background: var(--mrh-bar-plan); }
#mrh .mrh-dot--cold { background: var(--mrh-warn-bar); }
#mrh .mrh-dot--none { background: var(--mrh-border); }

/* ============================================================================
 * PESTAÑAS con contador
 * ========================================================================= */
#mrh .mrh-tabs {
    display: flex;
    gap: 2px;
    border-bottom: 1px solid var(--mrh-rule);
    overflow-x: auto;
    scrollbar-width: none;
}
#mrh .mrh-tabs::-webkit-scrollbar { height: 0; }
#mrh .mrh-tab {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 12px 14px;
    border: 0;
    border-bottom: 2px solid transparent;
    background: none;
    font-weight: 700; font-size: 13px; line-height: 1;
    color: var(--mrh-muted);
    cursor: pointer;
    text-decoration: none;
    white-space: nowrap;
    margin-bottom: -1px;
}
#mrh .mrh-tab:hover { color: var(--mrh-ink); text-decoration: none; }
#mrh .mrh-tab--on { color: var(--mrh-ink); border-bottom-color: var(--mrh-ink); }
#mrh .mrh-tab__n {
    font-weight: 800; font-size: 10px; line-height: 1.6;
    padding: 0 6px;
    border-radius: var(--mrh-r-pill);
    background: var(--mrh-chip-bg);
    color: var(--mrh-muted);
    min-width: 18px;
    text-align: center;
}
#mrh .mrh-tab--on .mrh-tab__n { background: var(--mrh-ink); color: var(--mrh-surface); }
/* Contador de pendientes: ámbar, no rojo. Pendiente ≠ roto. */
#mrh .mrh-tab__n--warn { background: var(--mrh-warn-bg); color: var(--mrh-warn-ink); }

/* Conmutador segmentado (tabla / fichas) */
#mrh .mrh-seg {
    display: inline-flex;
    border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-btn);
    overflow: hidden;
    background: var(--mrh-surface);
}
#mrh .mrh-seg__i {
    padding: 8px 12px;
    font-weight: 700; font-size: 12px; line-height: 1;
    color: var(--mrh-muted);
    background: none;
    border: 0;
    cursor: pointer;
    text-decoration: none;
}
#mrh .mrh-seg__i--on { background: var(--mrh-chip-bg); color: var(--mrh-ink); }

/* ============================================================================
 * BARRA DE PROGRESO CON SEMÁFORO
 * La barra usa la rampa saturada; el número que la acompaña, la oscura.
 * ========================================================================= */
#mrh .mrh-bar {
    height: 6px;
    border-radius: var(--mrh-r-pill);
    background: var(--mrh-track);
    overflow: hidden;
}
#mrh .mrh-bar--5 { height: 5px; }
#mrh .mrh-bar--8 { height: 8px; }
#mrh .mrh-bar__f { height: 100%; border-radius: var(--mrh-r-pill); background: var(--mrh-ok-bar); transition: width 220ms cubic-bezier(.22,.61,.36,1); }
#mrh .mrh-bar__f--ok   { background: var(--mrh-ok-bar); }
#mrh .mrh-bar__f--warn { background: var(--mrh-warn-bar); }
#mrh .mrh-bar__f--bad  { background: var(--mrh-bad-bar); }
#mrh .mrh-bar__f--plan { background: var(--mrh-bar-plan); }
#mrh .mrh-bar__f--fc   { background: var(--mrh-fc-bar); }

/* Tinta de la cifra que acompaña a la barra */
#mrh .mrh-t-ok   { color: var(--mrh-ok-ink); }
#mrh .mrh-t-warn { color: var(--mrh-warn-ink); }
#mrh .mrh-t-bad  { color: var(--mrh-bad-ink); }
#mrh .mrh-t-fc   { color: var(--mrh-fc-ink); }
#mrh .mrh-t-over { color: var(--mrh-over-ink); }
#mrh .mrh-t-neutral { color: var(--mrh-ink); }
#mrh .mrh-t-muted   { color: var(--mrh-muted); }

/* ============================================================================
 * TARJETA KPI CON CONTEXTO
 * Cuatro capas FIJAS: eyebrow → cifra → frase que explica la cifra → acción.
 * La tercera capa nunca es opcional: es la regla "cada número con su contexto".
 * El orden de las tarjetas ES la priorización.
 * ========================================================================= */
#mrh .mrh-kpi {
    display: flex;
    flex-direction: column;
    gap: 7px;
    padding: 15px;
    border-radius: var(--mrh-r-inner);
    background: var(--mrh-surface);
    border: 1px solid var(--mrh-rule);
    text-decoration: none;
}
#mrh a.mrh-kpi:hover { border-color: var(--mrh-border-strong); text-decoration: none; }
#mrh .mrh-kpi--bad  { background: var(--mrh-bad-bg);  border-color: var(--mrh-bad-border); }
#mrh .mrh-kpi--warn { background: var(--mrh-warn-bg); border-color: var(--mrh-warn-border); }
#mrh .mrh-kpi__eyebrow { font-weight: 800; font-size: 10px; line-height: 1; text-transform: uppercase; letter-spacing: .08em; color: var(--mrh-muted); }
#mrh .mrh-kpi--bad  .mrh-kpi__eyebrow { color: var(--mrh-bad-deep); }
#mrh .mrh-kpi--warn .mrh-kpi__eyebrow { color: var(--mrh-warn-deep); }
#mrh .mrh-kpi__n    { font-weight: 800; font-size: 26px; line-height: 1; color: var(--mrh-ink); }
#mrh .mrh-kpi--bad  .mrh-kpi__n { color: var(--mrh-bad-deep); }
#mrh .mrh-kpi--warn .mrh-kpi__n { color: var(--mrh-warn-deep); }
#mrh .mrh-kpi__why  { font-weight: 600; font-size: 12px; line-height: 1.4; color: var(--mrh-muted); }
#mrh .mrh-kpi--bad  .mrh-kpi__why { color: var(--mrh-bad-deep); }
#mrh .mrh-kpi--warn .mrh-kpi__why { color: var(--mrh-warn-deep); }
#mrh .mrh-kpi__do   { font-weight: 700; font-size: 11px; line-height: 1; margin-top: 2px; color: var(--mrh-ink); }
#mrh .mrh-kpi--bad  .mrh-kpi__do { color: var(--mrh-bad-deep); }
#mrh .mrh-kpi--warn .mrh-kpi__do { color: var(--mrh-warn-deep); }

/* Banda de KPIs en cabecera (ficha, parrilla, cierre) */
#mrh .mrh-kpibar {
    display: grid;
    grid-template-columns: repeat(var(--mrh-kpi-n, 4), 1fr);
    gap: 0;
    background: var(--mrh-surface-2);
    border: 1px solid var(--mrh-rule);
    border-radius: 14px;
    overflow: hidden;
}
#mrh .mrh-kpibar__c {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 12px 18px;
    border-right: 1px solid var(--mrh-rule-soft);
}
#mrh .mrh-kpibar__c:last-child { border-right: 0; }
#mrh .mrh-kpibar__l { font-weight: 600; font-size: 10px; line-height: 1; text-transform: uppercase; letter-spacing: .08em; color: var(--mrh-muted); }
#mrh .mrh-kpibar__v { font-weight: 800; font-size: 17px; line-height: 1; color: var(--mrh-ink); }
#mrh .mrh-kpibar__s { font-weight: 600; font-size: 10px; line-height: 1.3; color: var(--mrh-muted); }

/* ============================================================================
 * TABLA DENSA — CSS Grid, no <table>. Cabecera y fila comparten plantilla.
 * ========================================================================= */
#mrh .mrh-grid { display: grid; align-items: center; padding: 0 20px; }
#mrh .mrh-grid--head {
    background: var(--mrh-surface-2);
    border-bottom: 1px solid var(--mrh-border-head);
    position: sticky;
    top: 0;
    z-index: 2;
}
#mrh .mrh-grid--head > * {
    padding: 10px 0;
    font-weight: 700; font-size: 10px; line-height: 1;
    text-transform: uppercase;
    letter-spacing: .09em;
    color: var(--mrh-muted);
}
#mrh .mrh-grid--head a { color: inherit; text-decoration: none; }
#mrh .mrh-grid--head a:hover { color: var(--mrh-ink); }
#mrh .mrh-grid--row { border-bottom: 1px solid var(--mrh-rule-row); background: var(--mrh-surface); }
#mrh .mrh-grid--row:hover { background: var(--mrh-surface-2); }
#mrh .mrh-grid--row > * { padding: 11px 0; }
#mrh .mrh-grid--row.is-sel { background: var(--mrh-chip-bg); }

/* Fila de grupo, a ancho completo (fuera del grid) */
#mrh .mrh-grouprow {
    padding: 9px 20px 6px;
    background: var(--mrh-surface);
    display: flex;
    align-items: center;
    gap: 9px;
    border-bottom: 1px solid var(--mrh-rule-soft);
    position: sticky;
    top: 32px;
    z-index: 1;
}

#mrh .mrh-cell2 { font-weight: 500; font-size: 12px; line-height: 1.4; color: var(--mrh-text); }
#mrh .mrh-cell2 span { color: var(--mrh-muted-2); }

/* Checkbox propio: el de Bootstrap no encaja en una fila de 58px */
#mrh .mrh-check {
    width: 15px; height: 15px;
    border-radius: 4px;
    display: grid; place-items: center;
    font-weight: 800; font-size: 9px; line-height: 1;
    background: var(--mrh-surface);
    border: 1.5px solid var(--mrh-checkbox);
    color: transparent;
    cursor: pointer;
    flex: none;
}
#mrh .mrh-check.is-on { background: var(--mrh-ink); border-color: var(--mrh-ink); color: var(--mrh-surface); }

/* Barra de acciones masivas: aparece al seleccionar */
#mrh .mrh-bulk {
    padding: 13px 20px;
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--mrh-ink);
    flex-wrap: wrap;
}
#mrh .mrh-bulk__n { font-weight: 700; font-size: 12px; line-height: 1; color: #fff; }
#mrh .mrh-bulk .mrh-btn {
    background: var(--mrh-ink-2);
    color: #fff;
    padding: 8px 11px;
    font-weight: 700; font-size: 12px; line-height: 1;
    min-height: 34px;
}
#mrh .mrh-bulk .mrh-btn:hover { background: #3a3a40; }
/* El "Mostrando 1–25 de 143" de esta barra usaba el gris de las superficies claras y
   sobre el negro se quedaba en 3,5:1. Dentro de la barra el tenue es otro. */
#mrh .mrh-bulk .mrh-meta,
#mrh .mrh-bulk .mrh-meta-2,
#mrh .mrh-bulk .mrh-micro { color: #a9adb6; }
/* Los desplegables de acción masiva también viven sobre el negro. */
#mrh .mrh-bulk select,
#mrh .mrh-bulk .mrh-sel {
    background: var(--mrh-ink-2);
    color: #eceff4;
    border: 1px solid #3a3a40;
    border-radius: var(--mrh-r-mini);
    padding: 8px 10px;
    font-weight: 600;
    font-size: 12px;
    min-height: 34px;
}
#mrh .mrh-bulk select option { background: #2a2a2e; color: #eceff4; }
.theme-dark #mrh .mrh-bulk { background: #0e1013; }

/* ============================================================================
 * FRANJA HORARIA DE COBERTURA
 * Una barra por hora de apertura: asignados contra recomendados.
 * ========================================================================= */
#mrh .mrh-band { display: flex; align-items: flex-end; gap: 2px; height: 28px; margin-top: 8px; }
#mrh .mrh-band__h { flex: 1; border-radius: 2px 2px 0 0; min-height: 3px; background: var(--mrh-track); }
#mrh .mrh-band__h--ok   { background: var(--mrh-ok-bar); }
#mrh .mrh-band__h--gap  { background: var(--mrh-bad-bar); }
#mrh .mrh-band__h--over { background: var(--mrh-over-bar); }
#mrh .mrh-band__h--shut { background: var(--mrh-rule-soft); }

/* ============================================================================
 * ESTADOS: vacío, cargando, error.
 * El vacío afirmativo (verde) es deliberado: "no hay huecos" es una buena
 * noticia y debe leerse como tal, no como una sección vacía.
 * ========================================================================= */
#mrh .mrh-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 28px 20px;
    text-align: center;
    color: var(--mrh-muted);
    font-weight: 600; font-size: 12px; line-height: 1.5;
}
#mrh .mrh-empty--ok {
    background: var(--mrh-ok-bg);
    border: 1px solid var(--mrh-ok-border);
    color: var(--mrh-ok-deep);
    border-radius: var(--mrh-r-inner);
}
#mrh .mrh-empty__t { font-weight: 800; font-size: 14px; line-height: 1.2; }
#mrh .mrh-empty .mrh-btn { margin-top: 4px; }

#mrh .mrh-error {
    padding: 14px 16px;
    border-radius: var(--mrh-r-inner);
    background: var(--mrh-bad-bg);
    border: 1px solid var(--mrh-bad-border);
    color: var(--mrh-bad-deep);
    font-weight: 600; font-size: 12px; line-height: 1.5;
}

#mrh .mrh-skel {
    background: linear-gradient(90deg, var(--mrh-rule-soft) 25%, var(--mrh-rule) 37%, var(--mrh-rule-soft) 63%);
    background-size: 400% 100%;
    animation: mrh-shimmer 1.4s ease infinite;
    border-radius: 6px;
}
@keyframes mrh-shimmer { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }
@media (prefers-reduced-motion: reduce) {
    #mrh .mrh-skel { animation: none; }
    #mrh .mrh-bar__f { transition: none; }
}

/* "Sin definir": cuando un dato no existe se dice, y se ofrece cómo conseguirlo.
   Nunca se rellena con un valor inventado. */
#mrh .mrh-undef { font-weight: 500; font-size: 12px; line-height: 1; color: var(--mrh-muted-3); font-style: normal; }

/* ============================================================================
 * UTILIDADES
 * ========================================================================= */
#mrh .mrh-row  { display: flex; align-items: center; gap: 9px; }
#mrh .mrh-row--wrap { flex-wrap: wrap; }
#mrh .mrh-col  { display: flex; flex-direction: column; gap: 4px; }
#mrh .mrh-gap7 { gap: 7px; }
#mrh .mrh-gap12{ gap: 12px; }
#mrh .mrh-fill { flex: 1; min-width: 0; }
#mrh .mrh-pad  { padding: 20px; }
#mrh .mrh-trunc{ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#mrh .mrh-right{ text-align: right; }
#mrh .mrh-sr {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* Caja de búsqueda protagonista */
#mrh .mrh-search {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 0 12px;
    height: 42px;
    border-radius: var(--mrh-r-box);
    background: var(--mrh-surface-2);
    border: 1px solid var(--mrh-border-soft);
}
#mrh .mrh-search input {
    flex: 1;
    border: 0;
    background: none;
    outline: none;
    font-weight: 500; font-size: 13px; line-height: 1;
    color: var(--mrh-ink);
    min-width: 0;
    height: 100%;
    box-shadow: none;
    padding: 0;
}
#mrh .mrh-search input::placeholder { color: var(--mrh-muted-3); }
#mrh .mrh-search__key {
    padding: 3px 6px;
    border-radius: 5px;
    border: 1px solid var(--mrh-border);
    font-weight: 700; font-size: 10px; line-height: 1;
    color: var(--mrh-muted-2);
    background: var(--mrh-surface);
}

/* ============================================================================
 * BLINDAJE CONTRA BOOTSTRAP 3 DE PERFEX
 * No hace falta !important: un id (#mrh) gana a cualquier selector de Bootstrap,
 * que no usa ninguno. Se neutraliza lo que pisa de verdad.
 * ========================================================================= */
#mrh .row { margin-left: 0; margin-right: 0; }
#mrh .panel_s { box-shadow: none; border: 0; background: none; margin: 0; }
#mrh .panel_s .panel-body { padding: 0; }
#mrh .table { margin: 0; }
#mrh .progress { height: auto; margin: 0; background: none; box-shadow: none; border-radius: 0; }
#mrh .btn { text-transform: none; }
/* Bootstrap 3 fuerza .show{display:block!important} y destroza los contenedores
   flex. Aquí los estados propios van con prefijo is-* y NUNCA se usa .show. */
#mrh .mrh-hidden { display: none; }
#mrh [hidden] { display: none; }

/* ============================================================================
 * CORRECCIÓN DE CONTRASTE EN CONTENIDO HEREDADO
 * Dentro de #mrh conviven piezas del panel anteriores al rediseño (el formulario
 * largo de la ficha, avisos de Bootstrap, ayudas de fórmula). Medido en Chrome,
 * se quedaban entre 2,4:1 y 3,2:1. Se corrigen SOLO aquí: `--magma-text-faint`
 * es un token global y cambiarlo tocaría los 30 módulos del panel.
 * ========================================================================= */
#mrh {
    --magma-text-faint: #6b7280;   /* 4,8:1 sobre blanco. El global es #98a1af = 2,6:1 */
}
.theme-dark #mrh,
[data-theme="dark"] #mrh { --magma-text-faint: #9aa2b0; }

#mrh .formula,
#mrh .help-block,
#mrh small.text-muted,
#mrh .text-muted { color: var(--mrh-muted); }
#mrh .close { color: var(--mrh-text); opacity: .85; }
#mrh .close:hover { color: var(--mrh-ink); opacity: 1; }

/* ============================================================================
 * MÓVIL — el uso principal es escritorio, pero en móvil tiene que ser usable:
 * consultar, retocar y que el trabajador vea su rota. Objetivo táctil 44px.
 * ========================================================================= */
@media (max-width: 991px) {
    #mrh .mrh-card { border-radius: 14px; box-shadow: none; }
    #mrh .mrh-pad  { padding: 14px; }
    #mrh .mrh-grid { padding: 0 14px; }
    /* En móvil siempre 2 columnas, pase lo que pase en --mrh-kpi-n. */
    #mrh .mrh-kpibar { grid-template-columns: repeat(2, 1fr); }
    #mrh .mrh-kpibar__c:nth-child(2n) { border-right: 0; }
    #mrh .mrh-kpibar__c:nth-child(-n+2) { border-bottom: 1px solid var(--mrh-rule-soft); }
}
@media (max-width: 767px) {
    /* [2026-08-31] 44px SIN excepción, también en --sm y --xs. Medido a 390px: los
       botones «Ficha» y «Jornada» de cada fila salían a 39px, y son justo la forma
       principal de abrir a alguien desde el teléfono. El encargo pide 44 y no dice
       "salvo los pequeños". En escritorio siguen siendo pequeños. */
    #mrh .mrh-btn      { min-height: 44px; padding: 13px 15px; }
    #mrh .mrh-btn--sm  { min-height: 44px; }
    #mrh .mrh-btn--xs  { min-height: 44px; padding: 11px 12px; }
    #mrh .mrh-btn--icon{ width: 44px; height: 44px; }
    #mrh .mrh-tab      { padding: 13px 12px; }
    #mrh .mrh-chip     { padding: 10px 12px; }
    #mrh .mrh-check    { width: 20px; height: 20px; }
    /* La tabla densa deja de ser tabla: pasa a tarjetas apiladas. */
    #mrh .mrh-grid--head { display: none; }
    #mrh .mrh-grid--row {
        grid-template-columns: 1fr !important;
        gap: 8px;
        padding: 14px;
        align-items: stretch;
    }
    #mrh .mrh-grid--row > * { padding: 0; }
    #mrh .mrh-grouprow { top: 0; }

    /* Los nombres de la tabla apilada son enlaces de 16px de alto. Se les amplía el
       área de toque con padding y se compensa con margen negativo: el objetivo pasa a
       44px y el diseño no se mueve ni un píxel. */
    #mrh .mrh-grid--row a.mrh-label,
    #mrh .mrh-grid--row a.mrh-trunc {
        display: inline-block;
        padding: 14px 0;
        margin: -14px 0;
    }
}

/* ── 2-sep-2026 · rejilla con columnas declaradas por la vista ───────────────────────
   La vista pone las columnas en una variable (style="--mrh-cols: 2fr 1fr ...") y el
   móvil las ignora: en 767 px la fila pasa a dos columnas y el texto largo ocupa la
   fila entera. Así ninguna tabla se sale por la derecha. */
#mrh .mrh-grid--cols { grid-template-columns: var(--mrh-cols, 1fr); column-gap: 12px; }
#mrh .mrh-grid--row.is-dec { background: var(--mrh-bad-bg); }
@media (max-width: 767px) {
    #mrh .mrh-grid--cols { grid-template-columns: 1fr 1fr; row-gap: 4px; }
    #mrh .mrh-grid--cols > *:first-child { grid-column: 1 / -1; }
    #mrh .mrh-grid--cols > .mrh-cell2:last-child { grid-column: 1 / -1; }
    #mrh .mrh-grid--head.mrh-grid--cols { display: none; }
    #mrh .mrh-grid--cols .mrh-gs-empty { display: none; }
    #mrh .mrh-grid--cols > * { padding: 4px 0; }
    #mrh .mrh-grid--row.mrh-grid--cols { padding-top: 8px; padding-bottom: 8px; }
}

/* ══════════════════════════════════════════════════════════════════════════════
 * 2-sep-2026 · ROTA POR EVENTO (views/admin/rota_event.php)
 *
 * La pantalla más visitada del ERP (1.453 visitas). Traía 240 líneas de <style>
 * propio con su capa dark a mano y el rojo corporativo como color de acción.
 * Aquí se conservan LOS MISMOS nombres de clase (`mrr-*`): son los ganchos que
 * usa el JS de la vista (drag&drop, filtros, swap AJAX, guardado de horas), y
 * renombrarlos habría roto la mitad de la pantalla sin ganar nada. Lo que cambia
 * es el pintado: tokens de mrh, primaria negra, rojo solo alerta/destructivo.
 * El modo oscuro sale gratis de los tokens; no hay una sola regla `theme-dark`.
 * ═══════════════════════════════════════════════════════════════════════════ */

/* ── Rejilla de la pantalla: pool de personal | recuadros por rol ─────────── */
/* 25-sep-2026: minmax(0,…) para que una columna no crezca con su contenido (en el móvil se salía 512px). */
#mrh .mrr-rota-page { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 18px; }
@media (max-width: 1100px) { #mrh .mrr-rota-page { grid-template-columns: minmax(0, 1fr); } }

#mrh .mrr-rota-card {
    background: var(--mrh-surface);
    border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-inner);
    padding: 16px;
}
/* La franja de color del local es dato, no decoración: identifica el evento. */
#mrh .mrr-rota-header-card { border-left: 4px solid var(--mrr-event-color, var(--mrh-ink)); }

/* ── Tarjeta de trabajador del pool ───────────────────────────────────────── */
#mrh .mrr-worker-card {
    display: flex; gap: 10px; align-items: center;
    padding: 9px 11px;
    border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-box);
    margin-bottom: 6px;
    cursor: grab;
    background: var(--mrh-surface);
    transition: border-color 120ms ease, background-color 120ms ease;
}
#mrh .mrr-worker-card:hover { border-color: var(--mrh-border-strong); background: var(--mrh-surface-2); }
#mrh .mrr-worker-card.dragging { opacity: .4; }
#mrh .mrr-worker-card.assigned { background: var(--mrh-surface-2); opacity: .6; cursor: not-allowed; }
/* Seleccionado para asignar en grupo: se marca en NEGRO (acción), no en rojo. */
#mrh .mrr-worker-card.msel {
    border-color: var(--mrh-ink);
    background: var(--mrh-chip-bg);
    box-shadow: inset 0 0 0 1px var(--mrh-ink);
}

#mrh .mrr-worker-av {
    width: 32px; height: 32px; border-radius: var(--mrh-r-pill);
    background: var(--mrh-chip-bg); color: var(--mrh-ink);
    display: flex; align-items: center; justify-content: center;
    font-size: 11px; font-weight: 800; overflow: hidden; flex-shrink: 0;
}
#mrh .mrr-worker-av img { width: 100%; height: 100%; object-fit: cover; }
#mrh .mrr-worker-name { font-weight: 700; font-size: 13px; color: var(--mrh-ink); }
#mrh .mrr-worker-meta { font-weight: 500; font-size: 11.5px; color: var(--mrh-muted); }
#mrh .mrr-worker-flags { font-size: 10px; margin-top: 3px; }

/* Banderas de incidencia del día. Los cuatro tonos del semáforo, nada más. */
#mrh .mrr-worker-flag {
    display: inline-block;
    padding: 2px 8px;
    border-radius: var(--mrh-r-pill);
    margin-right: 3px;
    font-weight: 700; font-size: 10px; line-height: 1.5;
    border: 1px solid transparent;
}
#mrh .mrr-flag-red    { background: var(--mrh-bad-bg);  color: var(--mrh-bad-deep);  border-color: var(--mrh-bad-border); }
#mrh .mrr-flag-orange { background: var(--mrh-warn-bg); color: var(--mrh-warn-deep); border-color: var(--mrh-warn-border); }
#mrh .mrr-flag-ok     { background: var(--mrh-ok-bg);   color: var(--mrh-ok-deep);   border-color: var(--mrh-ok-border); }
#mrh .mrr-flag-draft  { background: var(--mrh-warn-bg); color: var(--mrh-warn-deep); border-color: var(--mrh-warn-border); }
#mrh .mrr-flag-info   { background: var(--mrh-fc-bg);   color: var(--mrh-fc-ink);    border-color: var(--mrh-fc-border); }
#mrh .mrr-flag-neutral{ background: var(--mrh-chip-bg); color: var(--mrh-muted);     border-color: var(--mrh-border); }
/* Estado de PORTAL (registro/disponibilidad): CONTORNO, a propósito distinto de
   los chips sólidos de incidencia. No es un problema de la noche, es del alta. */
#mrh .mrr-flag-reg    { background: var(--mrh-surface); border: 1px solid var(--mrh-bad-border);  color: var(--mrh-bad-ink); }
#mrh .mrr-flag-avail  { background: var(--mrh-surface); border: 1px solid var(--mrh-warn-border); color: var(--mrh-warn-ink); }
#mrh .mrr-slot-assigned.mrr-readiness-blocked { border-left: 4px solid var(--mrh-bad-border); }
#mrh .mrr-slot-assigned.mrr-readiness-warning { border-left: 4px solid var(--mrh-warn-border); }

/* ── Etiquetas de trabajador (Office, Jefe de seguridad…) ─────────────────── */
#mrh .mrr-worker-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; align-items: center; }
#mrh .mrr-tag {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: 10px; font-weight: 700; padding: 2px 8px;
    border-radius: var(--mrh-r-pill); line-height: 1.4;
    color: var(--tagc, var(--mrh-muted));
    background: color-mix(in srgb, var(--tagc, #6b7280) 12%, var(--mrh-surface));
    border: 1px solid color-mix(in srgb, var(--tagc, #6b7280) 35%, var(--mrh-surface));
}
#mrh .mrr-tag-x { cursor: pointer; opacity: .55; font-style: normal; font-size: 12px; line-height: 1; }
#mrh .mrr-tag-x:hover { opacity: 1; }
#mrh .mrr-tag-add {
    display: inline-flex; align-items: center;
    font-size: 10px; font-weight: 700; cursor: pointer;
    padding: 2px 8px; border-radius: var(--mrh-r-pill);
    color: var(--mrh-muted); background: none; border: 1px dashed var(--mrh-dash);
}
#mrh .mrr-tag-add:hover { color: var(--mrh-ink); border-color: var(--mrh-border-strong); background: var(--mrh-surface-2); }

/* Menú de etiquetas (se posiciona sobre la tarjeta al pulsar «+ etiqueta»). */
#mrh #mrr-tag-menu {
    position: absolute; z-index: 9999;
    background: var(--mrh-surface); border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-inner);
    box-shadow: 0 10px 34px rgba(0,0,0,.16);
    padding: 10px; width: 250px; display: none;
}
#mrh #mrr-tag-menu .mrr-tm-title {
    font-weight: 800; font-size: 10px; line-height: 1;
    color: var(--mrh-muted-2); text-transform: uppercase; letter-spacing: .08em; margin: 0 0 7px;
}
#mrh #mrr-tag-menu .mrr-tm-item {
    display: inline-flex; align-items: center; gap: 5px;
    margin: 2px; padding: 4px 10px; border-radius: var(--mrh-r-pill);
    font-size: 12px; font-weight: 700; cursor: pointer;
    border: 1px solid var(--mrh-border); background: var(--mrh-surface-2); color: var(--mrh-text);
    border-left: 3px solid var(--tagc, var(--mrh-muted));
}
#mrh #mrr-tag-menu .mrr-tm-item:hover { border-color: var(--mrh-border-strong); }
#mrh #mrr-tag-menu .mrr-tm-item.on { background: var(--mrh-ink); border-color: var(--mrh-ink); color: var(--mrh-surface); }
#mrh #mrr-tag-menu .mrr-tm-new { display: flex; gap: 5px; margin-top: 9px; border-top: 1px solid var(--mrh-rule); padding-top: 9px; }
#mrh #mrr-tag-menu .mrr-tm-new input {
    flex: 1; min-width: 0; font-size: 12px; padding: 5px 9px;
    border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-mini);
    background: var(--mrh-surface); color: var(--mrh-ink);
}

/* ── Recuadros por rol y turnos ya asignados ──────────────────────────────── */
#mrh .mrr-slot-zone {
    background: var(--mrh-surface-2);
    border: 2px dashed var(--mrh-dash);
    border-radius: var(--mrh-r-box);
    padding: 10px; min-height: 80px; margin-bottom: 10px;
}
#mrh .mrr-slot-zone.dragover { background: var(--mrh-warn-bg); border-color: var(--mrh-warn-bar); }
#mrh .mrr-slot-zone h5 {
    margin: 0 0 8px;
    font-weight: 800; font-size: 10px; line-height: 1;
    color: var(--mrh-muted-2); text-transform: uppercase; letter-spacing: .08em;
}
#mrh .mrr-slot-assigned {
    display: grid; grid-template-columns: auto auto 1fr auto auto; gap: 8px; align-items: center;
    background: var(--mrh-surface); padding: 8px 10px;
    border-radius: var(--mrh-r-mini); margin-bottom: 4px;
    border-left: 3px solid var(--mrr-event-color, var(--mrh-ink));
}
/* Los <input type=time> del turno mandan sobre este ancho: en 12 h ("06:00 PM")
   90 px corta el meridiano y el turno deja de leerse. Va después, para ganar. */
#mrh .mrr-slot-assigned input { font-size: 12px; padding: 2px 6px; width: 90px; }
#mrh .mrr-slot-assigned input.mrr-timeinput { width: auto; min-width: 92px; }

/* Con ocho roles en pantalla, el recuadro grande hacía la columna kilométrica. */
#mrh .mrr-role-card { padding: 10px 12px; }
#mrh .mrr-role-card .mrr-slot-zone { min-height: 40px; padding: 8px 10px; margin-bottom: 0; }
#mrh .mrr-role-card .mrr-slot-zone h5 { margin: 0 0 4px; }
#mrh .mrr-role-card .mrr-slot-assigned { margin-bottom: 4px; padding: 6px 8px; }
@media (max-width: 640px) { #mrh .mrr-role-card .mrr-slot-zone { min-height: 40px; padding: 10px; } }

/* ── Editor de horario del turno ──────────────────────────────────────────── */
#mrh .mrr-timerange { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
#mrh .mrr-timeinput {
    border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-mini);
    background: var(--mrh-surface-2);
    padding: 7px 10px;
    font-size: 13px; font-weight: 700; color: var(--mrh-ink);
    width: auto; height: auto;
    font-variant-numeric: tabular-nums; line-height: 1; cursor: pointer;
    transition: border-color 120ms ease, box-shadow 120ms ease, background-color 120ms ease;
}
#mrh .mrr-timeinput:hover { border-color: var(--mrh-border-strong); background: var(--mrh-surface); }
#mrh .mrr-timeinput:focus {
    outline: none; border-color: var(--mrh-ink); background: var(--mrh-surface);
    box-shadow: 0 0 0 3px var(--mrh-chip-bg);
}
#mrh .mrr-timerange .tr-arrow { color: var(--mrh-muted-3); font-weight: 800; font-size: 15px; line-height: 1; }
#mrh .mrr-asg-nextday {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: 10px; font-weight: 700;
    color: var(--mrh-warn-deep); background: var(--mrh-warn-bg);
    border: 1px solid var(--mrh-warn-border);
    padding: 2px 7px; border-radius: var(--mrh-r-pill);
}
#mrh .mrr-slot-assigned small .mrr-asg-hours,
#mrh .mrr-slot-assigned small .mrr-asg-cost { font-variant-numeric: tabular-nums; font-weight: 800; color: var(--mrh-text); }

/* Selects propios (rol de la plantilla, rol del alta masiva, zona del local). */
#mrh select.evt-gen-role,
#mrh select.mrr-asg-zone,
#mrh #mrr-bulk-role {
    -webkit-appearance: none; -moz-appearance: none; appearance: none;
    background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2317171a' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 11px center;
    padding: 8px 32px 8px 12px;
    border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-mini);
    font-size: 13px; font-weight: 600; color: var(--mrh-ink);
    background-color: var(--mrh-surface);
    height: auto; cursor: pointer;
    transition: border-color 120ms ease, box-shadow 120ms ease;
}
.theme-dark #mrh select.evt-gen-role,
.theme-dark #mrh select.mrr-asg-zone,
.theme-dark #mrh #mrr-bulk-role {
    background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23f2f3f5' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
}
#mrh select.evt-gen-role:hover,
#mrh select.mrr-asg-zone:hover,
#mrh #mrr-bulk-role:hover { border-color: var(--mrh-border-strong); }
#mrh select.evt-gen-role:focus,
#mrh select.mrr-asg-zone:focus,
#mrh #mrr-bulk-role:focus { outline: none; border-color: var(--mrh-ink); box-shadow: 0 0 0 3px var(--mrh-chip-bg); }

/* ── Pie: horas, personas y coste ─────────────────────────────────────────── */
#mrh .mrr-rota-footer {
    background: var(--mrh-surface);
    padding: 14px 18px;
    border-radius: var(--mrh-r-inner);
    border: 1px solid var(--mrh-border);
    margin-top: 14px;
    display: flex; align-items: center; justify-content: space-between;
    flex-wrap: wrap; gap: 10px;
}
#mrh .mrr-rota-stats { display: flex; gap: 10px; flex-wrap: wrap; }
#mrh .mrr-rota-stats > div {
    background: var(--mrh-surface-2); border: 1px solid var(--mrh-rule);
    border-radius: var(--mrh-r-mini); padding: 8px 14px; text-align: center; min-width: 78px;
}
#mrh .mrr-rota-stats div .v {
    display: block;
    font-weight: 800; font-size: 19px; line-height: 1;
    color: var(--mrh-ink); font-variant-numeric: tabular-nums;
}
#mrh .mrr-rota-stats div .l {
    font-weight: 700; font-size: 10px; line-height: 1;
    color: var(--mrh-muted-2); text-transform: uppercase; letter-spacing: .08em; margin-top: 4px;
}

/* ── Barra de alta masiva al pool. Verde = AÑADIR (Muta la confundía con
      «Vaciar rota» cuando era roja). El vaciado sigue siendo rojo, arriba. ── */
#mrh #mrr-bulk-bar {
    display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
    background: var(--mrh-ok-bg); border: 1px solid var(--mrh-ok-border);
    border-radius: var(--mrh-r-box); padding: 8px 10px; margin-bottom: 10px;
}
#mrh #mrr-bulk-bar.mrr-bulk-bar--empty #mrr-bulk-role,
#mrh #mrr-bulk-bar.mrr-bulk-bar--empty #mrr-bulk-assign { display: none; }
#mrh #mrr-bulk-bar.mrr-bulk-bar--empty { padding: 5px 10px; }

/* Barra flotante de edición masiva de horas. */
#mrh #mrr-bulktime-bar {
    display: none; position: fixed; left: 50%; transform: translateX(-50%); bottom: 16px;
    z-index: 9999; background: var(--mrh-ink); color: var(--mrh-surface);
    border-radius: var(--mrh-r-inner); box-shadow: 0 8px 30px rgba(0,0,0,.35);
    padding: 10px 14px; align-items: center; gap: 10px; flex-wrap: wrap; max-width: 94vw;
}
#mrh #mrr-bulktime-bar label { color: var(--mrh-surface); margin: 0; }
#mrh #mrr-bulktime-bar input[type=time] {
    font-size: 12px; padding: 4px 6px; border-radius: var(--mrh-r-mini);
    border: 0; color: #111; background: #fff;
}

/* ── Pool: buscador pegado, filtros plegados, sin scroll anidado en móvil ── */
#mrh .mrr-worker-pool-card { max-height: 70vh; overflow-y: auto; }
#mrh .mrr-check-target { display: inline-flex; align-items: center; justify-content: center; margin: 0 4px 0 0; flex: 0 0 28px; cursor: pointer; }
#mrh .mrr-check-target input[type="checkbox"] { width: 22px; height: 22px; padding: 0; margin: 0; cursor: pointer; }
#mrh #mrr-filters-panel { margin-bottom: 2px; }
#mrh #mrr-filters-panel[hidden] { display: none; }
#mrh #mrr-filters-toggle.mrr-on { background: var(--mrh-ink); border-color: var(--mrh-ink); color: var(--mrh-surface); }
@media (max-width: 640px) {
    #mrh .mrr-rota-page { gap: 12px; }
    #mrh .mrr-rota-card { padding: 12px; }
    #mrh .mrr-worker-card { padding: 12px; margin-bottom: 8px; }
    #mrh .mrr-worker-av { width: 40px; height: 40px; font-size: 13px; }
    #mrh .mrr-worker-name { font-size: 15px; }
    #mrh .mrr-worker-meta { font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
    #mrh .mrr-slot-zone { min-height: 56px; padding: 12px; }
    #mrh .mrr-slot-assigned { grid-template-columns: auto 1fr auto; gap: 6px 8px; padding: 10px 12px; }
    #mrh .mrr-slot-assigned input[type="time"], #mrh .mrr-slot-assigned select { width: 100%; font-size: 16px; padding: 7px 8px; }  /* 16px = iOS no hace zoom */
    #mrh .mrr-check-target { width: 44px; height: 44px; margin: -10px 0 -10px -10px; flex-basis: 44px; }
    #mrh .mrr-check-target input[type="checkbox"] { width: 24px; height: 24px; padding: 0; margin: 0; cursor: pointer; }
    #mrh #mrr-bulk-bar { position: sticky; bottom: 0; z-index: 40; box-shadow: 0 -4px 14px rgba(0,0,0,.14); }
    #mrh #mrr-bulk-bar select, #mrh #mrr-bulk-bar button { font-size: 15px; min-height: 44px; }
    #mrh .mrr-rota-footer { position: sticky; bottom: 0; z-index: 39; }
    #mrh .mrr-rota-footer .mrh-btn { min-height: 44px; }
    #mrh #evt-gen-card select, #mrh #evt-gen-card input, #mrh #evt-gen-card button { min-height: 44px; font-size: 15px; }
    /* Quita la trampa de scroll-dentro-de-scroll: la página scrollea normal. */
    #mrh .mrr-worker-pool-card { max-height: none; overflow-y: visible; }
    #mrh #mrr-pool-search-row { position: sticky; top: 0; background: var(--mrh-surface); z-index: 6; padding: 4px 0; }
}

/* ── Sello BORRADOR ───────────────────────────────────────────────────────── */
#mrh .mrr-rota-draft-ribbon {
    position: fixed; top: 80px; right: -50px; transform: rotate(45deg);
    background: var(--mrh-warn-bg); color: var(--mrh-warn-deep);
    border-top: 1px solid var(--mrh-warn-border); border-bottom: 1px solid var(--mrh-warn-border);
    padding: 6px 60px;
    font-weight: 800; font-size: 11px; line-height: 1.4; letter-spacing: .1em;
    box-shadow: 0 2px 8px rgba(0,0,0,.2); z-index: 998;
    text-transform: uppercase; pointer-events: none;
}

/* ── Aviso de alta (cross-SL / sin contrato). Rojo porque ES una alerta: se
      está poniendo a alguien a prestar servicio donde no tiene alta. ──────── */
#mrh #mrr-alta-modal,
#mrh #mrr-rota-override-modal {
    display: none; position: fixed; inset: 0;
    background: rgba(17,20,26,.6);
    z-index: 100001; align-items: center; justify-content: center; padding: 16px;
}
#mrh #mrr-alta-modal .mrr-alta-box,
#mrh #mrr-rota-override-modal .mrr-alta-box {
    background: var(--mrh-surface);
    border-radius: var(--mrh-r-inner);
    width: min(500px, 100%);
    border-top: 4px solid var(--mrh-bad-bar);
    box-shadow: 0 12px 44px rgba(0,0,0,.22);
}
#mrh .mrr-alta-pad { padding: 22px 24px 0; }
#mrh .mrr-alta-h { font-weight: 800; font-size: 18px; line-height: 1.3; color: var(--mrh-ink); margin-bottom: 8px; }
#mrh .mrr-alta-s { font-weight: 400; font-size: 14px; line-height: 1.5; color: var(--mrh-text); margin-bottom: 18px; }
#mrh .mrr-alta-row { display: flex; gap: 14px; padding: 9px 0; border-bottom: 1px solid var(--mrh-rule); font-size: 13.5px; }
#mrh .mrr-alta-k { width: 150px; flex: none; color: var(--mrh-muted); }
#mrh .mrr-alta-v { font-weight: 700; color: var(--mrh-ink); }
#mrh .mrr-alta-c {
    font-size: 13.5px; line-height: 1.55; color: var(--mrh-ink);
    margin-top: 18px; padding-left: 12px; border-left: 3px solid var(--mrh-bad-bar);
}
#mrh .mrr-alta-foot { padding: 18px 24px 20px; display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
#mrh #mrr-rota-override-modal textarea {
    width: 100%; border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-mini);
    padding: 8px 10px; font-size: 13px; background: var(--mrh-surface); color: var(--mrh-ink);
}
@media (max-width: 480px) {
    #mrh .mrr-alta-row { flex-direction: column; gap: 2px; }
    #mrh .mrr-alta-k { width: auto; }
    #mrh .mrr-alta-foot .mrh-btn { display: block; width: 100%; }
}

/* ── Guía «¿Cómo funciona?» ───────────────────────────────────────────────── */
#mrh #mrr-tour-tip {
    position: absolute; z-index: 100000; width: 330px; max-width: 92vw;
    background: var(--mrh-surface); border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-card); box-shadow: 0 12px 44px rgba(0,0,0,.28);
    padding: 16px 18px; display: none;
}
#mrh #mrr-tour-tip .t-title { margin: 0 0 7px; font-weight: 800; font-size: 15px; line-height: 1.2; color: var(--mrh-ink); }
#mrh #mrr-tour-tip .t-body  { margin: 0 0 14px; font-weight: 400; font-size: 13px; line-height: 1.55; color: var(--mrh-text); }
#mrh #mrr-tour-nav { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
#mrh #mrr-tour-nav .t-count { font-weight: 600; font-size: 11px; color: var(--mrh-muted-2); }
#mrh #mrr-tour-tip button { border: 0; border-radius: var(--mrh-r-mini); padding: 8px 14px; font-size: 13px; font-weight: 700; cursor: pointer; }
#mrh #mrr-tour-tip .t-next { background: var(--mrh-ink); color: var(--mrh-surface); }
#mrh #mrr-tour-tip .t-prev { background: var(--mrh-chip-bg); color: var(--mrh-ink); margin-right: 6px; }
#mrh #mrr-tour-tip .t-skip { background: none; color: var(--mrh-muted-2); font-weight: 600; font-size: 12px; padding: 4px 2px; }
#mrh .mrr-tour-spot {
    position: relative; z-index: 99999 !important;
    outline: 3px solid var(--mrh-ink); outline-offset: 3px;
    border-radius: var(--mrh-r-mini);
    box-shadow: 0 0 0 9999px rgba(17,24,39,.6);
}

/* ── Cabecera: estado de la rota y modo de vista ──────────────────────────── */
#mrh .mrr-statebar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 0 0 14px; }
#mrh .mrr-state {
    display: inline-flex; align-items: center; gap: 7px;
    padding: 7px 14px; border-radius: var(--mrh-r-pill);
    font-weight: 800; font-size: 12px; line-height: 1.2; letter-spacing: .04em;
    border: 1px solid transparent;
}
#mrh .mrr-state--none { background: var(--mrh-chip-bg); color: var(--mrh-muted);      border-color: var(--mrh-border); }
#mrh .mrr-state--draft{ background: var(--mrh-warn-bg); color: var(--mrh-warn-deep);  border-color: var(--mrh-warn-border); }
#mrh .mrr-state--half { background: var(--mrh-warn-bg); color: var(--mrh-warn-deep);  border-color: var(--mrh-warn-border); }
#mrh .mrr-state--live { background: var(--mrh-ok-bg);   color: var(--mrh-ok-deep);    border-color: var(--mrh-ok-border); }

#mrh #mrr-view-switch { display: inline-flex; border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-btn); overflow: hidden; }
#mrh #mrr-view-switch a {
    padding: 7px 14px; font-weight: 700; font-size: 12.5px; line-height: 1.2;
    text-decoration: none; background: var(--mrh-surface); color: var(--mrh-text);
    border-right: 1px solid var(--mrh-border);
}
#mrh #mrr-view-switch a:last-child { border-right: 0; }
#mrh #mrr-view-switch a:hover { background: var(--mrh-surface-2); color: var(--mrh-ink); }
#mrh #mrr-view-switch a.is-on { background: var(--mrh-ink); color: var(--mrh-surface); }

/* Banda de contexto de la rota de seguridad. */
#mrh .mrr-secband {
    background: var(--mrh-ink); color: var(--mrh-surface);
    border-radius: var(--mrh-r-box); padding: 11px 16px; margin-bottom: 14px;
    display: flex; align-items: center; gap: 12px; font-size: 13px;
}
#mrh .mrr-secband a { color: var(--mrh-surface); text-decoration: underline; }
.theme-dark #mrh .mrr-secband { background: var(--mrh-surface-2); color: var(--mrh-ink); }

/* Aviso de resource sin mapping: alerta real, va en rojo. */
#mrh .mrr-warnbox {
    background: var(--mrh-bad-bg); border: 1px solid var(--mrh-bad-border);
    border-left: 4px solid var(--mrh-bad-bar);
    border-radius: var(--mrh-r-box); padding: 14px 18px; margin-bottom: 14px;
    color: var(--mrh-bad-deep); font-size: 13px;
    display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
}

/* Chip de local / tipo de evento en la cabecera. */
#mrh .mrr-evtchip {
    display: inline-block; padding: 3px 9px; border-radius: var(--mrh-r-pill);
    font-weight: 700; font-size: 11px; line-height: 1.5; color: #fff;
}
#mrh .mrr-evtchip--venue { background: var(--mrr-event-color, var(--mrh-ink)); }
#mrh .mrr-evtchip--type  { background: var(--mrh-muted); }

/* Caja «Rota inteligente»: morado = previsión/IA, el mismo tono que el resto
   del módulo usa para lo que no ha pasado todavía. */
#mrh .mrr-ai-help {
    font-size: 12px; line-height: 1.55;
    background: var(--mrh-fc-bg); border: 1px solid var(--mrh-fc-border);
    border-radius: var(--mrh-r-box); padding: 8px 12px; margin: 0 0 12px; color: var(--mrh-text);
}
#mrh .mrr-ai-help summary { cursor: pointer; color: var(--mrh-fc-ink); font-weight: 800; list-style: none; }

/* ── Barra de categorias y placa de horas de la semana ────────────────────────
   2-sep-2026 · Venia inyectada como <style> suelto desde magma_rrhh.php, sin acotar
   y con !important. Aqui, bajo #mrh: la barra de filtro deja de ser roja (filtrar no
   es una alerta) y el avatar grande se limita al pool, que es donde se pedia — los
   26 px del turno ya asignado los estaba pisando. */
#mrh .mrr-worker-pool-card .mrr-worker-card .mrr-worker-av { width: 40px; height: 40px; font-size: 13px; }
#mrh .mrr-rota-cat-bar {
    display: flex; gap: 6px; flex-wrap: wrap; margin: 0 0 14px; padding: 10px 14px;
    background: var(--mrh-surface); border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-box);
}
#mrh .mrr-rota-cat-chip {
    padding: 5px 12px; border-radius: var(--mrh-r-pill); cursor: pointer;
    font-weight: 600; font-size: 12px; line-height: 1.3;
    background: var(--mrh-chip-bg); color: var(--mrh-text);
    border: 1px solid transparent; transition: background-color .12s ease, color .12s ease;
    user-select: none;
}
#mrh .mrr-rota-cat-chip:hover { background: var(--mrh-surface-2); color: var(--mrh-ink); }
#mrh .mrr-rota-cat-chip.active { background: var(--mrh-ink); color: var(--mrh-surface); border-color: var(--mrh-ink); font-weight: 800; }
#mrh .mrr-hours-badge {
    display: inline-block; padding: 2px 8px; border-radius: var(--mrh-r-pill);
    font-weight: 700; font-size: 10px; line-height: 1.4; margin-left: 6px; cursor: help;
}
#mrh .mrr-hours-badge.ok   { background: var(--mrh-ok-bg);   color: var(--mrh-ok-deep); }
#mrh .mrr-hours-badge.warn { background: var(--mrh-warn-bg); color: var(--mrh-warn-deep); }
#mrh .mrr-hours-badge.over { background: var(--mrh-bad-bg);  color: var(--mrh-bad-deep); }
#mrh .mrr-worker-card.mrr-cat-hidden { display: none !important; }

/* ══════════════════════════════════════════════════════════════════════════════
 * 2-sep-2026 · ROTAS · CALENDARIO (views/admin/rotas_calendar.php)
 * Es la portada de /rotas: la vista por defecto del metodo rotas() del controlador
 * (?view=list da la lista clasica, ?mode=fixed el cuadrante semanal fijo).
 * Los nombres `rc-*` se conservan; lo que cambia es el pintado.
 * ═══════════════════════════════════════════════════════════════════════════ */
#mrh .rc-wrap { max-width: 1280px; margin: 0 auto; }
#mrh .rc-top  { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 14px; }
#mrh .rc-nav  { display: flex; align-items: center; gap: 6px; }
#mrh .rc-nav a,
#mrh .rc-btn {
    display: inline-flex; align-items: center; gap: 6px;
    border: 1px solid var(--mrh-border); background: var(--mrh-surface);
    border-radius: var(--mrh-r-btn); padding: 8px 12px;
    font-weight: 700; font-size: 13px; line-height: 1;
    color: var(--mrh-text); text-decoration: none; cursor: pointer; min-height: 34px;
}
#mrh .rc-nav a:hover,
#mrh .rc-btn:hover { background: var(--mrh-surface-2); color: var(--mrh-ink); }
#mrh .rc-range { font-weight: 800; color: var(--mrh-ink); font-size: 14px; padding: 0 6px; }

#mrh .rc-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; }
#mrh .rc-col  {
    background: var(--mrh-surface-2); border: 1px solid var(--mrh-rule);
    border-radius: var(--mrh-r-box); min-height: 120px; overflow: hidden;
}
#mrh .rc-colh {
    padding: 8px 10px; font-weight: 800; font-size: 12px; line-height: 1.3;
    color: var(--mrh-ink); background: var(--mrh-surface);
    border-bottom: 1px solid var(--mrh-rule); text-align: center;
}
/* El dia de hoy se marca con la tinta fuerte, no en rojo: hoy no es una alerta. */
#mrh .rc-colh.today { background: var(--mrh-ink); color: var(--mrh-surface); }
#mrh .rc-colh small { display: block; font-weight: 600; font-size: 11px; color: var(--mrh-muted-2); }
#mrh .rc-colh.today small { color: var(--mrh-surface); }
#mrh .rc-colh.today .rc-sendday { color: var(--mrh-surface); }
#mrh .rc-sendday { color: var(--mrh-publish); font-weight: 800; text-decoration: underline; }
#mrh .rc-body { padding: 8px; display: flex; flex-direction: column; gap: 8px; }

#mrh .rc-evt {
    display: block; border-radius: var(--mrh-r-mini);
    background: var(--mrh-surface); border: 1px solid var(--mrh-border);
    border-left: 5px solid var(--vc, var(--mrh-border-strong));
    padding: 9px 10px; text-decoration: none; color: inherit;
    transition: border-color .12s ease, background-color .12s ease;
}
#mrh .rc-evt:hover { border-color: var(--mrh-border-strong); background: var(--mrh-surface-2); }
#mrh .rc-evt .h { font-weight: 800; font-size: 16px; line-height: 1; color: var(--mrh-ink); }
#mrh .rc-evt .n {
    font-weight: 700; font-size: 12.5px; line-height: 1.3; color: var(--mrh-ink); margin: 4px 0;
    overflow: hidden; text-overflow: ellipsis;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
#mrh .rc-evt .chip {
    display: inline-block; font-weight: 700; font-size: 10.5px; line-height: 1.5;
    color: #fff; border-radius: 5px; padding: 1px 6px; margin-top: 2px;
}
/* En una columna de dia caben ~100 px: "Borrador · sin enviar" en una sola linea
   se sale de la tarjeta. Aqui la pildora si parte. */
#mrh .rc-pill { margin-top: 6px; white-space: normal; line-height: 1.35; text-align: left; }
#mrh .rc-empty { color: var(--mrh-muted-3); font-size: 12px; text-align: center; padding: 14px 0; }
#mrh .rc-filter { margin-left: auto; display: flex; align-items: center; gap: 6px; }
#mrh .rc-filter select {
    border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-mini);
    padding: 6px 10px; font-size: 13px; height: 34px;
    background: var(--mrh-surface); color: var(--mrh-ink);
}
@media (max-width: 900px) {
    #mrh .rc-grid { grid-template-columns: 1fr; }
    #mrh .rc-col { min-height: 0; }
    #mrh .rc-filter { margin-left: 0; width: 100%; }
    #mrh .rc-filter form, #mrh .rc-filter select { flex: 1; min-width: 0; }
}

/* ══════════════════════════════════════════════════════════════════════════════
 * 2-sep-2026 · ROTAS · LISTA (views/admin/rotas_overview.php)
 * La rama ?view=list del mismo metodo rotas(). Es el respaldo del calendario y la
 * unica que trae filtros por rango, local y urgencia.
 * ═══════════════════════════════════════════════════════════════════════════ */
#mrh .mrt-page { max-width: 1280px; margin: 0 auto; }

#mrh .mrt-filters {
    background: var(--mrh-surface); border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-box); padding: 14px 16px; margin-bottom: 14px;
}
#mrh .mrt-filters label {
    display: block; margin-bottom: 4px;
    font-weight: 800; font-size: 10px; line-height: 1;
    text-transform: uppercase; letter-spacing: .08em; color: var(--mrh-muted);
}
#mrh .mrt-filters .form-control {
    font-size: 13px; padding: 7px 10px;
    border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-mini);
    background: var(--mrh-surface); color: var(--mrh-ink); box-shadow: none;
}

/* Las dos entradas del flujo: por evento (aqui) y cuadrante semanal fijo. */
#mrh .mrt-modecard {
    flex: 1 1 320px;
    border: 1px solid var(--mrh-border); background: var(--mrh-surface);
    border-radius: var(--mrh-r-box); padding: 12px 14px;
}
#mrh .mrt-modecard--here { background: var(--mrh-surface-2); border-color: var(--mrh-border-strong); }

/* Avisos. El ambar es "ojo con esto"; el rojo, "esto ya es tarde". */
#mrh .mrt-note {
    display: flex; align-items: flex-start; gap: 14px;
    border-radius: var(--mrh-r-box); padding: 14px 18px; margin-bottom: 16px;
}
#mrh .mrt-note--warn {
    background: var(--mrh-warn-bg); border: 1px solid var(--mrh-warn-border);
    color: var(--mrh-warn-deep);
}
#mrh .mrt-urgent-note {
    display: flex; align-items: center; gap: 9px;
    background: var(--mrh-bad-bg); border: 1px solid var(--mrh-bad-border);
    border-left: 4px solid var(--mrh-bad-bar);
    border-radius: var(--mrh-r-mini); padding: 10px 14px; margin-bottom: 16px;
    font-size: 13px; color: var(--mrh-bad-deep);
}
#mrh .mrt-urgent-note b,
#mrh .mrt-urgent-note a { color: var(--mrh-bad-deep); }

#mrh .mrt-secband {
    background: var(--mrh-ink); color: var(--mrh-surface);
    border-radius: var(--mrh-r-box); padding: 12px 16px; margin-bottom: 16px;
    display: flex; align-items: flex-start; gap: 12px;
}
#mrh .mrt-secband a { color: var(--mrh-surface); text-decoration: underline; }
.theme-dark #mrh .mrt-secband { background: var(--mrh-surface-2); color: var(--mrh-ink); }
.theme-dark #mrh .mrt-secband a { color: var(--mrh-ink); }

/* Pestañas por estado: mismas reglas que .mrh-tabs, con los nombres de esta vista. */
#mrh .mrt-tabs {
    display: flex; gap: 0; overflow-x: auto;
    border-bottom: 1px solid var(--mrh-border); margin-bottom: 18px;
}
#mrh .mrt-tabs::-webkit-scrollbar { height: 0; }
#mrh .mrt-tab {
    /* flex:none o en movil las cinco pestañas se encogen hasta solaparse. */
    flex: none;
    padding: 11px 16px; cursor: pointer; white-space: nowrap;
    color: var(--mrh-muted); font-weight: 700; font-size: 13px; line-height: 1;
    text-decoration: none; border-bottom: 2px solid transparent; margin-bottom: -1px;
    display: inline-flex; gap: 8px; align-items: center;
}
#mrh .mrt-tab:hover { color: var(--mrh-ink); text-decoration: none; }
#mrh .mrt-tab.active { color: var(--mrh-ink); border-bottom-color: var(--mrh-ink); font-weight: 800; }
#mrh .mrt-tab .count {
    background: var(--mrh-chip-bg); color: var(--mrh-muted);
    padding: 2px 8px; border-radius: var(--mrh-r-pill);
    font-weight: 800; font-size: 11px; line-height: 1.3;
}
#mrh .mrt-tab.active .count { background: var(--mrh-ink); color: var(--mrh-surface); }

/* Tarjeta de evento. La franja de la izquierda es urgencia: ahi el color SI es dato. */
#mrh .mrt-list { display: flex; flex-direction: column; gap: 10px; }
#mrh .mrt-card {
    background: var(--mrh-surface); border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-box); padding: 14px 16px;
    display: grid; grid-template-columns: 8px 90px 1fr auto; gap: 14px; align-items: center;
}
#mrh .mrt-card.urgency-red    { border-left: 6px solid var(--mrh-bad-bar); }
#mrh .mrt-card.urgency-orange { border-left: 6px solid var(--mrh-warn-bar); }
#mrh .mrt-card.urgency-yellow { border-left: 6px solid var(--mrh-warn-bar); }
#mrh .mrt-card.urgency-green  { border-left: 6px solid var(--mrh-ok-bar); }
#mrh .mrt-card.urgency-gray   { border-left: 6px solid var(--mrh-border-strong); }
#mrh .mrt-card .stripe { width: 8px; align-self: stretch; border-radius: 3px; }
#mrh .mrt-card .date-box {
    text-align: center; padding: 8px 10px;
    background: var(--mrh-surface-2); border-radius: var(--mrh-r-mini);
    border: 1px solid var(--mrh-rule); min-width: 90px;
}
#mrh .mrt-card .date-box .d { font-weight: 800; font-size: 22px; line-height: 1; color: var(--mrh-ink); }
#mrh .mrt-card .date-box .m {
    font-weight: 700; font-size: 10px; line-height: 1.4;
    color: var(--mrh-muted); text-transform: uppercase; letter-spacing: .08em;
}
#mrh .mrt-card .date-box .t { font-weight: 600; font-size: 11px; color: var(--mrh-ink); margin-top: 3px; }
#mrh .mrt-card h4 { margin: 0; font-weight: 800; font-size: 15px; line-height: 1.2; color: var(--mrh-ink); }
#mrh .mrt-card .meta { font-weight: 500; font-size: 12px; color: var(--mrh-muted); margin-top: 4px; }
#mrh .mrt-chip {
    display: inline-block; padding: 2px 9px; border-radius: var(--mrh-r-pill);
    font-weight: 700; font-size: 11px; line-height: 1.5; color: #fff;
}
#mrh .mrt-chip--type { background: var(--mrh-muted); }
#mrh .mrt-status-pill {
    display: inline-block; padding: 4px 10px; border-radius: var(--mrh-r-pill);
    font-weight: 700; font-size: 12px; line-height: 1.3;
}
#mrh .mrt-status-pill.sin_hacer { background: var(--mrh-bad-bg);  color: var(--mrh-bad-deep); }
#mrh .mrt-status-pill.borrador  { background: var(--mrh-warn-bg); color: var(--mrh-warn-deep); }
#mrh .mrt-status-pill.publicado { background: var(--mrh-ok-bg);   color: var(--mrh-ok-deep); }
#mrh .mrt-actions { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
#mrh .mrt-empty {
    text-align: center; padding: 48px 24px;
    background: var(--mrh-surface); border: 1px dashed var(--mrh-dash);
    border-radius: var(--mrh-r-box); color: var(--mrh-muted);
}
@media (max-width: 900px) {
    /* La rejilla de 4 columnas no cabe en un telefono: los cuatro bloques se
       apilan en orden de lectura (fecha, que evento, que hacer) y la franja de
       urgencia pasa de columna a borde superior, que es donde se ve. */
    #mrh .mrt-card { display: flex; flex-direction: column; align-items: stretch; gap: 10px; }
    #mrh .mrt-card .stripe { display: none; }
    #mrh .mrt-card .date-box { align-self: flex-start; }
    #mrh .mrt-actions { justify-content: flex-start; }
    #mrh .mrt-actions .mrh-btn { flex: 1 1 auto; }
    #mrh .mrt-filters form > div { flex: 1 1 160px; min-width: 0; }
}

/* ============================================================================
 * FICHAJES / ASISTENCIA — 2-sep-2026
 * Componentes del flujo de fichaje (hub, desglose por jornada, repaso,
 * peticiones de retroactivo y edición de un fichaje). Antes cada una de esas
 * cinco pantallas llevaba su propio <style> con su propia paleta: cuatro
 * sistemas distintos para el mismo trabajo. Aquí van una sola vez, bajo #mrh.
 *
 * Rojo SOLO alerta (sin ubicación, aviso legal, rechazar). Los contadores de
 * "pendiente" van en ámbar: pendiente no es roto.
 * ========================================================================= */

/* ── Controles de formulario. No existían en el sistema y las cinco pantallas
      los necesitan; cada una se los pintaba a mano con otro gris. ─────────── */
#mrh .mrh-fld     { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
#mrh .mrh-flabel  { font-weight: 700; font-size: 10px; line-height: 1; text-transform: uppercase; letter-spacing: .08em; color: var(--mrh-muted); }
#mrh .mrh-select,
#mrh .mrh-input,
#mrh .mrh-textarea {
    border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-mini);
    background: var(--mrh-surface);
    color: var(--mrh-ink);
    font-family: inherit;
    font-weight: 600; font-size: 13px; line-height: 1.3;
    padding: 8px 10px;
    min-height: 38px;
    max-width: 100%;
    box-shadow: none;
}
#mrh .mrh-textarea { font-weight: 400; line-height: 1.5; min-height: 78px; resize: vertical; width: 100%; }
#mrh .mrh-select:focus,
#mrh .mrh-input:focus,
#mrh .mrh-textarea:focus { outline: 2px solid var(--mrh-ink); outline-offset: 1px; border-color: var(--mrh-ink); }
#mrh .mrh-input--sm { min-height: 34px; padding: 6px 9px; }
#mrh .mrh-help { font-weight: 500; font-size: 11.5px; line-height: 1.45; color: var(--mrh-muted); }
#mrh .mrh-req   { color: var(--mrh-bad-ink); font-weight: 800; }

/* Barra de filtros: una fila que se apila sola en móvil. */
#mrh .mrh-filters { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; }
#mrh .mrh-filters .mrh-fld { flex: 0 1 auto; }
@media (max-width: 767px) {
    #mrh .mrh-filters { gap: 8px; }
    #mrh .mrh-filters .mrh-fld { flex: 1 1 46%; }
    #mrh .mrh-filters .mrh-btn { flex: 1 1 100%; }
}

/* Blindaje del selectpicker de Perfex (bootstrap-select). No se le quita a las
   vistas porque su buscador sí hace falta en listas de 140 trabajadores; lo que
   se le quita es el aspecto Bootstrap. */
#mrh .bootstrap-select > .btn,
#mrh .bootstrap-select > .btn:hover,
#mrh .bootstrap-select > .btn:focus {
    background: var(--mrh-surface);
    color: var(--mrh-ink);
    border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-mini);
    font-weight: 600; font-size: 13px;
    min-height: 38px;
    box-shadow: none;
    text-transform: none;
}
#mrh .bootstrap-select .dropdown-menu { border-radius: var(--mrh-r-mini); border-color: var(--mrh-border); }

/* ── Aviso enmarcado. Tres tonos y ninguno decorativo: el rojo es alerta real
      (el registro de jornada es obligación legal), el ámbar es "revísalo" y el
      neutro es contexto. ─────────────────────────────────────────────────── */
#mrh .mfi-note {
    border: 1px solid var(--mrh-rule);
    border-left: 4px solid var(--mrh-border-strong);
    border-radius: var(--mrh-r-box);
    background: var(--mrh-surface-2);
    color: var(--mrh-text);
    padding: 13px 16px;
    font-weight: 500; font-size: 12.5px; line-height: 1.55;
}
#mrh .mfi-note strong  { color: var(--mrh-ink); }
#mrh .mfi-note--warn { background: var(--mrh-warn-bg); border-color: var(--mrh-warn-border); border-left-color: var(--mrh-warn-bar); color: var(--mrh-warn-deep); }
#mrh .mfi-note--warn strong { color: var(--mrh-warn-deep); }
#mrh .mfi-note--bad  { background: var(--mrh-bad-bg);  border-color: var(--mrh-bad-border);  border-left-color: var(--mrh-bad-bar);  color: var(--mrh-bad-deep); }
#mrh .mfi-note--bad strong  { color: var(--mrh-bad-deep); }
#mrh .mfi-note__t { font-weight: 800; font-size: 13px; line-height: 1.3; margin-bottom: 5px; }
#mrh .mfi-note p  { margin: 0; }

/* Fila de fichas de personas señaladas (sin alta, sin ubicación).
   ⚠️ 2-sep-2026 — NO llamar a esta clase «…-chips». El panel tiene una regla
   global `[class*="-chips"] { overflow-x:auto !important; flex-wrap:nowrap
   !important }` bajo 767 px que convierte en carrusel horizontal cualquier
   clase que acabe así: las 80 fichas salían en una sola fila que se salía de
   la pantalla y no se podía leer. Por eso se llama `mfi-people`. */
#mrh .mfi-people { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 9px; }
#mrh .mfi-person {
    display: flex; flex-direction: column; gap: 1px;
    background: var(--mrh-surface); border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-mini); padding: 7px 11px;
    text-decoration: none; min-width: 148px;
}
#mrh .mfi-person:hover { border-color: var(--mrh-ink); text-decoration: none; }
#mrh .mfi-person .nm { font-weight: 700; font-size: 12.5px; line-height: 1.3; color: var(--mrh-ink); }
#mrh .mfi-person .ct { font-weight: 700; font-size: 11px; line-height: 1.3; color: var(--mrh-bad-ink); }
#mrh .mfi-person .dt { font-weight: 500; font-size: 10.5px; line-height: 1.3; color: var(--mrh-muted); }

/* ── HUB DE FICHAJES ──────────────────────────────────────────────────────── */
#mrh .mfi-hub { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 12px; }
#mrh .mfi-hubcard {
    display: block; padding: 16px 18px; text-decoration: none;
    background: var(--mrh-surface); border: 1px solid var(--mrh-rule);
    border-left: 3px solid var(--mrh-rule);
    border-radius: var(--mrh-r-inner);
}
#mrh .mfi-hubcard:hover { border-color: var(--mrh-border-strong); border-left-color: var(--mrh-ink); text-decoration: none; }
#mrh .mfi-hubcard.is-wait { border-left-color: var(--mrh-warn-bar); }
#mrh .mfi-hubcard__t { font-weight: 800; font-size: 14.5px; line-height: 1.25; color: var(--mrh-ink); margin-bottom: 5px; }
#mrh .mfi-hubcard__d { font-weight: 400; font-size: 12.5px; line-height: 1.5; color: var(--mrh-muted); margin: 0; }
#mrh .mfi-hubcard__n { margin-top: 10px; font-weight: 600; font-size: 12px; line-height: 1.2; color: var(--mrh-muted); }
#mrh .mfi-hubcard__n b { font-weight: 800; font-size: 16px; color: var(--mrh-ink); }
#mrh .mfi-hubcard__n b.is-wait { color: var(--mrh-warn-ink); }
#mrh .mfi-hubcard__n b.is-clear { color: var(--mrh-ok-ink); }

/* ── DESGLOSE POR JORNADA (attendance_overview) ───────────────────────────── */
#mrh .mfi-group { border: 1px solid var(--mrh-border-strong); border-radius: var(--mrh-r-card); overflow: hidden; background: var(--mrh-surface); margin-bottom: 16px; }
#mrh .mfi-ghead {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 13px 18px; background: var(--mrh-surface-2); border-bottom: 1px solid var(--mrh-border-head);
}
#mrh .mfi-ghead .meta { font-weight: 600; font-size: 11.5px; line-height: 1.4; color: var(--mrh-muted); text-align: right; }
#mrh .mfi-ghead .meta b { font-weight: 800; color: var(--mrh-ink); }

/* Cabecera y fila comparten plantilla, como el resto de tablas del sistema. */
#mrh .mfi-cols { grid-template-columns: minmax(170px, 2.1fr) 62px minmax(180px, 2.4fr) 88px minmax(118px, 1fr) minmax(92px, 1fr) 30px; column-gap: 12px; }
#mrh .mfi-colh { padding: 0 18px; }
#mrh .mfi-colh .c { font-weight: 700; font-size: 10px; line-height: 1; text-transform: uppercase; letter-spacing: .08em; color: var(--mrh-muted); cursor: pointer; user-select: none; display: inline-flex; align-items: center; gap: 4px; background: none; border: 0; padding: 0; }
#mrh .mfi-colh .c.nosort { cursor: default; }
#mrh .mfi-colh .c .ar { opacity: 0; font-size: 9px; }
#mrh .mfi-colh .c:hover { color: var(--mrh-ink); }
#mrh .mfi-colh .c:hover .ar { opacity: .5; }
#mrh .mfi-colh .c.asc .ar, #mrh .mfi-colh .c.desc .ar { opacity: 1; color: var(--mrh-ink); }

#mrh .mfi-jrow { border-bottom: 1px solid var(--mrh-rule-row); }
#mrh .mfi-jrow:last-child { border-bottom: 0; }
#mrh .mfi-jsum { padding: 0 18px; cursor: pointer; }
#mrh .mfi-jsum > * { padding: 10px 0; }
#mrh .mfi-jsum:hover { background: var(--mrh-surface-2); }
#mrh .mfi-jrow.is-open > .mfi-jsum { background: var(--mrh-surface-2); }
#mrh .mfi-who { display: flex; align-items: center; gap: 10px; min-width: 0; }
#mrh .mfi-who .n { font-weight: 700; font-size: 13px; line-height: 1.3; color: var(--mrh-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#mrh .mfi-day  { font-weight: 600; font-size: 12px; line-height: 1.2; color: var(--mrh-muted); }
#mrh .mfi-total{ font-weight: 800; font-size: 14px; line-height: 1; color: var(--mrh-ink); }
#mrh .mfi-segs { display: flex; flex-wrap: wrap; gap: 5px; }
#mrh .mfi-seg  {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 3px 9px; border-radius: var(--mrh-r-pill);
    background: var(--mrh-chip-bg); color: var(--mrh-ink);
    font-weight: 700; font-size: 11.5px; line-height: 1.4; white-space: nowrap;
}
#mrh .mfi-seg .dur { font-weight: 500; font-size: 11px; color: var(--mrh-muted); }
#mrh .mfi-seg.is-live { background: var(--mrh-ok-bg); color: var(--mrh-ok-deep); }
#mrh .mfi-seg.is-live .dur { color: var(--mrh-ok-ink); }
#mrh .mfi-pdot { width: 6px; height: 6px; border-radius: 50%; background: var(--mrh-ok-bar); flex: none; animation: mfi-pulse 1.6s ease infinite; }
@keyframes mfi-pulse { 0%,100% { opacity: 1 } 50% { opacity: .35 } }
#mrh .mfi-state { display: flex; flex-wrap: wrap; gap: 4px; }
#mrh .mfi-caret { color: var(--mrh-muted-3); justify-self: center; transition: transform 140ms cubic-bezier(.22,.61,.36,1); }
#mrh .mfi-jrow.is-open .mfi-caret { transform: rotate(90deg); color: var(--mrh-ink); }

/* Detalle: los tramos del día. */
#mrh .mfi-jdet { display: none; padding: 2px 18px 14px; background: var(--mrh-surface-2); border-top: 1px dashed var(--mrh-border); }
#mrh .mfi-jrow.is-open .mfi-jdet { display: block; }
#mrh .mfi-tramo { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--mrh-rule-soft); }
#mrh .mfi-tramo:last-child { border-bottom: 0; }
#mrh .mfi-tramo .tnum { font-weight: 700; font-size: 10px; line-height: 1; text-transform: uppercase; letter-spacing: .08em; color: var(--mrh-muted-3); min-width: 62px; }
#mrh .mfi-tramo .trange { font-weight: 800; font-size: 13px; line-height: 1.2; color: var(--mrh-ink); min-width: 126px; }
#mrh .mfi-tramo .trange .d { font-weight: 500; font-size: 11.5px; color: var(--mrh-muted); margin-left: 4px; }
#mrh .mfi-method { font-weight: 600; font-size: 11px; line-height: 1.4; padding: 2px 8px; border-radius: var(--mrh-r-mini); background: var(--mrh-chip-bg); color: var(--mrh-muted); }
#mrh .mfi-tphoto { width: 42px; height: 32px; object-fit: cover; border-radius: var(--mrh-r-mini); border: 1px solid var(--mrh-border); }
#mrh .mfi-tphoto--miss { display: inline-flex; align-items: center; justify-content: center; font-weight: 800; font-size: 9px; background: var(--mrh-bad-bg); color: var(--mrh-bad-ink); border-color: var(--mrh-bad-border); }
#mrh .mfi-map { text-decoration: none; font-size: 15px; line-height: 1; display: inline-flex; }
#mrh .mfi-tedit { margin-left: auto; }
#mrh .mfi-avmiss { background: var(--mrh-bad-bg); color: var(--mrh-bad-ink); font-size: 9px; letter-spacing: .04em; }

/* Insignias de estado de la jornada. */
#mrh .mfi-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: var(--mrh-r-pill); font-weight: 800; font-size: 9.5px; line-height: 1.6; letter-spacing: .04em; white-space: nowrap; }
#mrh .mfi-badge--live { background: var(--mrh-ok-bg);   color: var(--mrh-ok-deep); }
#mrh .mfi-badge--auto { background: var(--mrh-warn-bg); color: var(--mrh-warn-deep); }
#mrh .mfi-badge--bad  { background: var(--mrh-bad-bg);  color: var(--mrh-bad-deep); }

/* Píldora de ubicación: usa .mrh-pill del sistema y solo añade el matiz azul
   del kiosk, que no es ni bueno ni malo — es "el sitio lo pone el aparato". */
#mrh .mfi-loc--dev { background: var(--mrh-chip-bg); color: var(--mrh-text); }

/* Leyenda plegable. */
#mrh .mfi-legend summary { cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 6px; padding: 4px 0; font-weight: 700; font-size: 12px; color: var(--mrh-muted); }
#mrh .mfi-legend summary::-webkit-details-marker { display: none; }
/* El triangulito se dibuja aquí: sin él, «Ver las 80 personas» parecía texto
   muerto y nadie lo pulsaba. */
#mrh .mfi-legend summary::before { content: "\25B8"; display: inline-block; transition: transform 140ms cubic-bezier(.22,.61,.36,1); }
#mrh .mfi-legend[open] summary::before { transform: rotate(90deg); }
#mrh .mfi-legend summary:hover { color: var(--mrh-ink); }
#mrh .mfi-legend .body { font-weight: 500; font-size: 11.5px; line-height: 1.9; color: var(--mrh-muted); padding: 8px 0 2px; }

/* Móvil: la jornada deja de ser fila y pasa a tarjeta. */
@media (max-width: 860px) {
    #mrh .mfi-colh { display: none; }
    #mrh .mfi-jsum { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; padding: 12px 14px; }
    #mrh .mfi-jsum > * { padding: 2px 0; }
    #mrh .mfi-who   { grid-column: 1; }
    #mrh .mfi-caret { grid-column: 2; grid-row: 1; align-self: center; }
    #mrh .mfi-day   { grid-column: 1 / -1; }
    #mrh .mfi-segs  { grid-column: 1 / -1; }
    #mrh .mfi-total { grid-column: 1 / -1; }
    #mrh .mfi-total::before { content: "Total "; font-weight: 600; font-size: 11px; color: var(--mrh-muted); }
    #mrh .mfi-jsum .mfi-locwrap { grid-column: 1 / -1; }
    #mrh .mfi-state { grid-column: 1 / -1; }
    #mrh .mfi-jdet  { padding: 2px 14px 14px; }
    #mrh .mfi-tedit { margin-left: 0; }
    #mrh .mfi-ghead { padding: 12px 14px; }
}

/* ── REPASO DE FICHAJES ───────────────────────────────────────────────────── */
#mrh .mfi-rev { padding: 16px 18px; margin-bottom: 12px; }
#mrh .mfi-rev.is-done { opacity: .5; }
#mrh .mfi-rev__top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
#mrh .mfi-rev__now { background: var(--mrh-surface-2); border: 1px solid var(--mrh-rule); border-radius: var(--mrh-r-mini); padding: 10px 12px; margin: 12px 0 0; font-weight: 500; font-size: 13px; line-height: 1.5; color: var(--mrh-text); }
#mrh .mfi-rev__now b { font-weight: 800; color: var(--mrh-ink); }
#mrh .mfi-rev__ev { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 10px; font-weight: 600; font-size: 11.5px; color: var(--mrh-muted); }
#mrh .mfi-rev__form { display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--mrh-rule); }
#mrh .mfi-msg { font-weight: 700; font-size: 12px; line-height: 1.4; }
@media (max-width: 640px) {
    #mrh .mfi-rev__form > .mrh-fld { flex: 1 1 44%; }
    #mrh .mfi-rev__form .mrh-btn { flex: 1 1 100%; }
}

/* ── PETICIONES DE RETROACTIVO ────────────────────────────────────────────── */
#mrh .mfi-req-cols { grid-template-columns: 24px minmax(115px, 1.4fr) minmax(85px, .95fr) minmax(95px, 1fr) minmax(95px, 1fr) minmax(110px, 1.35fr) minmax(78px, .85fr) minmax(85px, .95fr) minmax(160px, 1.7fr); column-gap: 10px; }
/* Cada celda es una columna de dos líneas (dato + matiz). Sin `min-width: 0`
   un nombre largo no se recorta: se sale encima de la columna de al lado. */
#mrh .mfi-req-cols > span { display: flex; flex-direction: column; justify-content: center; gap: 3px; min-width: 0; }
/* La píldora de estado es una etiqueta, no una barra: no se estira al ancho de
   la celda (en móvil, con la fila apilada, salía cruzando toda la pantalla). */
#mrh .mfi-req-cols .mrh-pill { align-self: flex-start; }
#mrh .mfi-reason { font-weight: 400; font-size: 12px; line-height: 1.45; color: var(--mrh-muted);
                   display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
#mrh .mfi-req-cols > span.mfi-rowacts,
#mrh .mfi-rowacts { display: flex; flex-flow: row wrap; gap: 6px; align-items: center; justify-content: flex-start; }
#mrh .mfi-grid--row.is-hot { background: var(--mrh-warn-bg); }

/* Ventana modal propia. No usa .modal de Bootstrap a propósito: `.show` fuerza
   display:block!important y destroza el centrado flex (41 componentes del panel
   se cayeron por eso). Aquí el estado es .is-open. */
#mrh .mfi-modal { display: none; position: fixed; inset: 0; z-index: 100001; background: rgba(17,20,26,.6); align-items: center; justify-content: center; padding: 16px; }
#mrh .mfi-modal.is-open { display: flex; }
#mrh .mfi-modal__box { background: var(--mrh-surface); border-radius: var(--mrh-r-inner); width: min(560px, 100%); max-height: 92vh; overflow-y: auto; box-shadow: 0 12px 44px rgba(0,0,0,.24); }
#mrh .mfi-modal__box--wide { width: min(680px, 100%); }
#mrh .mfi-modal__h { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 15px 20px; border-bottom: 1px solid var(--mrh-rule); }
#mrh .mfi-modal__b { padding: 16px 20px; font-size: 13px; line-height: 1.55; color: var(--mrh-text); }
#mrh .mfi-modal__b table { width: 100%; }
#mrh .mfi-modal__b td { padding: 5px 8px 5px 0; vertical-align: top; border-bottom: 1px solid var(--mrh-rule-soft); }
#mrh .mfi-modal__f { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 20px; border-top: 1px solid var(--mrh-rule); flex-wrap: wrap; }
#mrh .mfi-x { background: none; border: 0; font-size: 22px; line-height: 1; color: var(--mrh-muted-3); cursor: pointer; padding: 0 4px; }
#mrh .mfi-x:hover { color: var(--mrh-ink); }

/* ── EDICIÓN DE UN FICHAJE ────────────────────────────────────────────────── */
#mrh .mfi-edit { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 16px; align-items: start; }
#mrh .mfi-kv { display: flex; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--mrh-rule-soft); font-size: 12.5px; line-height: 1.4; }
#mrh .mfi-kv:last-child { border-bottom: 0; }
#mrh .mfi-kv__k { flex: none; width: 132px; font-weight: 600; color: var(--mrh-muted); }
#mrh .mfi-kv__v { font-weight: 700; color: var(--mrh-ink); word-break: break-word; }
#mrh .mfi-photo { max-width: 240px; border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-box); display: block; }
@media (max-width: 900px) { #mrh .mfi-edit { grid-template-columns: 1fr; } }
@media (max-width: 480px) { #mrh .mfi-kv { flex-direction: column; gap: 2px; } #mrh .mfi-kv__k { width: auto; } }

/* Impresión del desglose: se va todo lo que no es el registro. */
@media print {
    #mrh .mfi-toolbar, #mrh .mfi-legend, #mrh .mfi-caret, #mrh .mfi-modal { display: none !important; }
    #mrh .mfi-jdet { display: block !important; background: #fff !important; }
    #mrh .mfi-group, #mrh .mfi-jsum { break-inside: avoid; }
}
@media (prefers-reduced-motion: reduce) {
    #mrh .mfi-pdot { animation: none; }
    #mrh .mfi-caret { transition: none; }
}

/* ── Boton "Vista semanal" inyectado por helpers/magma_rrhh_rota_ai_helper.php ──
   2-sep-2026 · Ese helper crea el enlace desde JS con style.cssText, en rojo solido:
   era el ultimo boton rojo del flujo de rotas. El fichero lo lleva otra sesion, asi
   que se corrige desde aqui. Es el UNICO !important del sistema y esta justificado:
   contra un estilo EN LINEA no gana la especificidad, solo la cascada de importancia.
   Cuando ese helper deje de escribir colores, esta regla se puede borrar entera. */
#mrh #rw-link {
    background: var(--mrh-ink) !important;
    color: var(--mrh-surface) !important;
    border-radius: var(--mrh-r-btn) !important;
    box-shadow: none !important;
    padding: 10px 15px !important;
}

/* 2-sep-2026 · La banda de KPIs llevaba `line-height: 1` en el rótulo: en móvil,
   un rótulo de dos líneas se solapaba consigo mismo y no se leía. Se corrige
   aquí (al final, para no tocar la sección original que edita otra sesión). */
#mrh .mrh-kpibar__l { line-height: 1.25; }

/* ══════════════════════════════════════════════════════════════════════════════
 * 2-sep-2026 · TABLA ANCHA — `.mrh-grid--wide`
 *
 * `.mrh-grid` es una rejilla densa pensada para 4-8 columnas: por debajo de eso
 * apila bien en el móvil y por encima aplasta el texto hasta que no se lee.
 * Compras y almacén tienen tablas de 8 a 20 columnas (productos ↔ Ágora, la lista
 * de albaranes, la de pedidos) donde forzar `.mrh-grid` significaba o cortar
 * columnas o dejarlas ilegibles.
 *
 * `.mrh-grid--wide` es el CONTENEDOR: la tabla que no cabe SE DESLIZA dentro de
 * su caja (nunca mueve la página entera) y la primera columna se queda quieta,
 * que es la que dice de qué fila estás leyendo. Se usa con una <table> normal —
 * así el lector de pantalla sigue leyendo filas y columnas de verdad, y el acta
 * de `inventario_pantalla.js` sigue contando <th> y <tr>.
 *
 *   <div class="mrh-grid--wide">
 *     <table class="mrh-tabla"> … </table>
 *   </div>
 *
 * Para no congelar la primera columna (tablas de pocas columnas o con checkbox
 * de selección al principio): `.mrh-grid--wide.is-nofreeze`.
 * Ancho mínimo por defecto 860px; se cambia con `style="--mrh-wmin: 1100px"`.
 * ═══════════════════════════════════════════════════════════════════════════ */
#mrh .mrh-grid--wide {
    overflow-x: auto;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
    overscroll-behavior-x: contain;
}
#mrh .mrh-tabla {
    width: 100%;
    min-width: var(--mrh-wmin, 860px);
    border-collapse: collapse;
    font-size: 12.5px;
    background: var(--mrh-surface);
}
#mrh .mrh-tabla > thead > tr > th {
    position: sticky; top: 0; z-index: 3;
    background: var(--mrh-surface-2);
    border-bottom: 1px solid var(--mrh-border-head);
    padding: 10px 12px;
    text-align: left;
    white-space: nowrap;
    font-weight: 700; font-size: 10px; line-height: 1.2;
    text-transform: uppercase; letter-spacing: .09em;
    color: var(--mrh-muted);
}
#mrh .mrh-tabla > thead > tr > th a { color: inherit; text-decoration: none; }
#mrh .mrh-tabla > thead > tr > th a:hover { color: var(--mrh-ink); }
#mrh .mrh-tabla > tbody > tr > td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--mrh-rule-row);
    vertical-align: middle;
    background: var(--mrh-surface);
}
#mrh .mrh-tabla > tbody > tr:hover > td { background: var(--mrh-surface-2); }
#mrh .mrh-tabla .mrh-num-col { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }

/* Primera columna congelada. Necesita fondo propio: sin él, lo que pasa por
   debajo al deslizar se ve a través de la celda. */
#mrh .mrh-grid--wide:not(.is-nofreeze) .mrh-tabla > thead > tr > th:first-child { position: sticky; left: 0; z-index: 4; }
#mrh .mrh-grid--wide:not(.is-nofreeze) .mrh-tabla > tbody > tr > td:first-child { position: sticky; left: 0; z-index: 2; }
#mrh .mrh-grid--wide:not(.is-nofreeze) .mrh-tabla > thead > tr > th:first-child,
#mrh .mrh-grid--wide:not(.is-nofreeze) .mrh-tabla > tbody > tr > td:first-child {
    box-shadow: 1px 0 0 var(--mrh-rule);
}

/* En móvil el mínimo baja: la tabla sigue deslizándose, pero ocupa menos de
   entrada y la primera columna deja de robar la mitad del ancho. */
@media (max-width: 767px) {
    #mrh .mrh-tabla { min-width: var(--mrh-wmin-movil, 680px); font-size: 12px; }
    #mrh .mrh-tabla > thead > tr > th,
    #mrh .mrh-tabla > tbody > tr > td { padding: 9px 10px; }
}

/* ══════════════════════════════════════════════════════════════════════════════
 * 2-sep-2026 · ROTAS · CUADRANTE SEMANAL FIJO (views/admin/rotas.php)
 * Tercera rama del metodo rotas(): ?mode=fixed / ?worksite_id=N. Es la unica de las
 * tres que usa Bootstrap de verdad (panel_s, row/col, table), asi que va con su
 * propia clase `.mrh-rw`: mrh.css APLANA `.panel_s` a proposito para las vistas
 * nuevas, y aqui la tarjeta si hace de contenedor. Sin `.mrh-rw` no se toca nada.
 * ═══════════════════════════════════════════════════════════════════════════ */
#mrh.mrh-rw .panel_s {
    background: var(--mrh-surface);
    border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-box);
    box-shadow: none;
    margin-bottom: 14px;
}
#mrh.mrh-rw .panel_s .panel-body { padding: 14px 16px; }
#mrh.mrh-rw .row { margin-left: -8px; margin-right: -8px; }
#mrh.mrh-rw [class^="col-"], #mrh.mrh-rw [class*=" col-"] { padding-left: 8px; padding-right: 8px; }
#mrh.mrh-rw .mrw-accent { border-left: 4px solid var(--mrh-fc-bar); }

#mrh .mrw-context {
    background: var(--mrh-surface-2); border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-box); padding: 9px 14px; margin-bottom: 12px;
    display: flex; align-items: center; justify-content: space-between;
    gap: 10px; flex-wrap: wrap; color: var(--mrh-text);
}
#mrh .mrw-typeswitch {
    display: inline-flex; align-items: center; gap: 4px; margin: 0 6px; padding: 2px 6px;
    border-left: 1px solid var(--mrh-rule);
    font-weight: 700; font-size: 10px; text-transform: uppercase; letter-spacing: .08em;
    color: var(--mrh-muted);
}
/* El uppercase es para el rotulo "Tipo:", no para los dos botones de dentro: en
   mayusculas se leian como otro boton distinto ("FIJO" en vez de "Fijo"). */
#mrh .mrw-typeswitch .mrh-btn { text-transform: none; letter-spacing: 0; font-size: 11px; }
#mrh .mrw-weeklabel {
    display: inline-flex; align-items: center; padding: 9px 14px;
    background: var(--mrh-chip-bg); border-radius: var(--mrh-r-btn);
    font-weight: 800; font-size: 13px; line-height: 1; color: var(--mrh-ink); white-space: nowrap;
}
#mrh .mrw-collapse { font-weight: 800; font-size: 15px; color: var(--mrh-ink); text-decoration: none; }
#mrh .mrw-collapse:hover { text-decoration: none; opacity: .85; }
#mrh .mrw-hint {
    background: var(--mrh-warn-bg); border: 1px solid var(--mrh-warn-border);
    border-radius: var(--mrh-r-mini); padding: 10px 14px; margin-bottom: 10px;
    color: var(--mrh-warn-deep); font-size: 13px;
}
#mrh .mrw-mini {
    padding: 3px 7px; border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-mini);
    background: var(--mrh-surface); color: var(--mrh-ink);
}
#mrh .mrr-gen-days {
    margin-bottom: 14px; padding: 12px 14px;
    background: var(--mrh-surface-2); border: 1px solid var(--mrh-rule);
    border-radius: var(--mrh-r-mini);
}

/* Tira de semanas del mes. El borde dice el estado; el relleno, cual estas viendo. */
#mrh .mrw-week {
    display: block; text-decoration: none; text-align: center; min-width: 92px;
    border: 1px solid var(--mrh-border); background: var(--mrh-surface);
    border-radius: var(--mrh-r-mini); padding: 6px 10px;
}
#mrh .mrw-week:hover { border-color: var(--mrh-border-strong); text-decoration: none; }
#mrh .mrw-week.is-ok   { border-color: var(--mrh-ok-border);   background: var(--mrh-ok-bg); }
#mrh .mrw-week.is-warn { border-color: var(--mrh-warn-border); background: var(--mrh-warn-bg); }
#mrh .mrw-week.is-cur  { box-shadow: inset 0 0 0 2px var(--mrh-ink); border-color: var(--mrh-ink); }
#mrh .mrw-week__n { font-weight: 700; font-size: 10px; color: var(--mrh-muted); }
#mrh .mrw-week__d { font-weight: 800; font-size: 13px; color: var(--mrh-ink); }
#mrh .mrw-week__s { font-weight: 800; font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: var(--mrh-muted-2); }
#mrh .mrw-week.is-ok   .mrw-week__s { color: var(--mrh-ok-deep); }
#mrh .mrw-week.is-warn .mrw-week__s { color: var(--mrh-warn-deep); }

/* Barra de filtro del pool. */
#mrh #mrr-filterbar.mrr-filterbar {
    display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 12px;
    padding: 10px 12px; margin-bottom: 10px;
    background: var(--mrh-surface-2); border: 1px solid var(--mrh-border);
    border-radius: var(--mrh-r-box);
}
#mrh #mrr-filterbar.is-active { border-color: var(--mrh-ink); }
#mrh #mrr-filterbar .mrr-fb-ico { color: var(--mrh-muted); font-size: 14px; padding-bottom: 8px; }
#mrh #mrr-filterbar .mrr-fb-field { display: flex; flex-direction: column; gap: 3px; }
#mrh #mrr-filterbar .mrr-fb-field > label {
    margin: 0; font-weight: 800; font-size: 10px; line-height: 1;
    letter-spacing: .08em; text-transform: uppercase; color: var(--mrh-muted);
}
#mrh #mrr-filterbar .mrr-fb-field select { min-width: 160px; }
#mrh #mrr-filterbar .mrr-fb-search { flex: 1 1 200px; min-width: 180px; }
#mrh #mrr-filterbar .mrr-fb-searchwrap { position: relative; }
#mrh #mrr-filterbar .mrr-fb-searchwrap .fa-search {
    position: absolute; left: 9px; top: 50%; transform: translateY(-50%);
    color: var(--mrh-muted-3); font-size: 12px; pointer-events: none;
}
#mrh #mrr-filterbar .mrr-fb-search input { width: 100%; padding-left: 26px; }
#mrh #mrr-filterbar select:focus-visible,
#mrh #mrr-filterbar input:focus-visible {
    border-color: var(--mrh-ink); box-shadow: 0 0 0 2px var(--mrh-chip-bg); outline: none;
}
#mrh #mrr-filterbar .mrr-fb-count {
    margin-left: auto; align-self: center;
    font-weight: 700; font-size: 11px; color: var(--mrh-muted); white-space: nowrap;
}

/* Paleta de plantillas arrastrables. El color de cada plantilla lo elige el usuario
   en el gestor de abajo: ahi el color SI es dato suyo y se respeta. */
#mrh #mrr-palette {
    display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
    padding: 8px 10px; margin-bottom: 10px;
    background: var(--mrh-surface-2); border: 1px dashed var(--mrh-dash);
    border-radius: var(--mrh-r-mini);
}
#mrh .mrr-pal-chip {
    cursor: grab; user-select: none;
    border: 1px solid var(--pc, var(--mrh-border)); border-left: 5px solid var(--pc, var(--mrh-border));
    color: var(--pc, var(--mrh-ink)); background: var(--mrh-surface);
    font-weight: 700; font-size: 12px; padding: 4px 9px; border-radius: 5px;
}

/* Rejilla del cuadrante. Sigue siendo <table> (el JS trabaja sobre celdas), pero
   pintada con los tokens: cabecera solida, filas con regla fina, sin bordes dobles. */
#mrh.mrh-rw #rota-table,
#mrh.mrh-rw #mrr-presets-table,
#mrh.mrh-rw #gen-roles-table { border-collapse: separate; border-spacing: 0; width: 100%; }
#mrh.mrh-rw #rota-table > thead > tr > th,
#mrh.mrh-rw #mrr-presets-table > thead > tr > th,
#mrh.mrh-rw #gen-roles-table > thead > tr > th {
    background: var(--mrh-surface-2);
    border: 0; border-bottom: 1px solid var(--mrh-border-head);
    padding: 9px 10px;
    font-weight: 800; font-size: 10px; line-height: 1.3;
    text-transform: uppercase; letter-spacing: .07em; color: var(--mrh-muted);
    position: sticky; top: 0; z-index: 3;
}
#mrh.mrh-rw #rota-table > thead > tr > th small { font-weight: 700; letter-spacing: 0; text-transform: none; }
#mrh.mrh-rw #rota-table > tbody > tr > td,
#mrh.mrh-rw #mrr-presets-table > tbody > tr > td,
#mrh.mrh-rw #gen-roles-table > tbody > tr > td {
    border: 0; border-bottom: 1px solid var(--mrh-rule-row);
    border-right: 1px solid var(--mrh-rule-soft);
    padding: 8px 9px; vertical-align: middle; background: var(--mrh-surface);
}
/* Las celdas de dia si van arriba: dentro crecen los turnos y el boton +. */
#mrh.mrh-rw #rota-table > tbody > tr > td.rota-cell,
#mrh.mrh-rw #rota-table > tbody > tr > td:first-child { vertical-align: top; }
#mrh.mrh-rw #rota-table > tbody > tr > td:last-child,
#mrh.mrh-rw #mrr-presets-table > tbody > tr > td:last-child,
#mrh.mrh-rw #gen-roles-table > tbody > tr > td:last-child { border-right: 0; }
#mrh.mrh-rw #rota-table > tbody > tr:hover > td { background: var(--mrh-surface-2); }
#mrh.mrh-rw #rota-table > tfoot > tr > td {
    border: 0; border-top: 1px solid var(--mrh-border-head);
    background: var(--mrh-surface-2); padding: 10px 9px;
    font-weight: 800; color: var(--mrh-ink);
}
/* Dia de vacaciones: no se puede planificar. Rojo porque es un impedimento real. */
#mrh #rota-table td.rota-cell.is-leave { background: var(--mrh-bad-bg); }
#mrh #rota-table td.rota-cell.is-leave:hover { background: var(--mrh-bad-bg); }
#mrh .shift-block {
    background: var(--mrh-surface-2); border: 1px solid var(--mrh-rule);
    border-radius: var(--mrh-r-mini); padding: 5px 6px; margin-bottom: 4px;
}
#mrh.mrh-rw .form-control {
    border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-mini);
    background: var(--mrh-surface); color: var(--mrh-ink); box-shadow: none;
}
#mrh.mrh-rw .form-control:focus { border-color: var(--mrh-ink); box-shadow: 0 0 0 2px var(--mrh-chip-bg); }

/* (a) celda con conflicto de disponibilidad · (b) con turno puesto encima */
#mrh #rota-table td.rota-cell.mrr-conflict {
    background: var(--mrh-bad-bg);
    box-shadow: inset 0 0 0 1px var(--mrh-bad-border);
    transition: background-color .15s ease, box-shadow .15s ease;
}
#mrh #rota-table td.rota-cell .mrr-conflict-badge {
    float: right; font-size: 12px; line-height: 1; margin: 1px 0 2px 4px; cursor: help;
}
#mrh #rota-table td.rota-cell.mrr-conflict.mrr-conflict-armed {
    background: var(--mrh-warn-bg);
    box-shadow: inset 0 0 0 2px var(--mrh-warn-bar);
}
@media (prefers-reduced-motion: reduce) {
    #mrh #rota-table td.rota-cell.mrr-conflict { transition: none; }
}

/* En movil la cabecera del cuadrante (titulo + selector + navegador de semana)
   comparte una fila flex de Perfex y se estrangulaba. Se deja apilar. */
@media (max-width: 640px) {
    #mrh.mrh-rw .tw-flex { flex-wrap: wrap; gap: 8px; }
    #mrh.mrh-rw .mrw-typeswitch { border-left: 0; padding-left: 0; margin-left: 0; }
}

/* Estados en vivo de la rejilla: fila por encima de contrato, dias del generador y
   celda bajo el cursor al arrastrar. Los escribia el JS de rotas.php con
   $('<style>').appendTo('head'), sin acotar: cualquier vista del panel con una clase
   homonima se los comia. Aqui viven acotados y con los tokens. (2-sep-2026) */
#mrh .mr-row-over { background: var(--mrh-bad-bg) !important; }
#mrh .mr-row-over td { border-color: var(--mrh-bad-border); }
#mrh .mrr-genday {
    cursor: pointer; user-select: none; margin: 0;
    border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-mini);
    padding: 7px 11px; font-weight: 700; font-size: 12px; line-height: 1;
    display: inline-flex; align-items: center; gap: 6px;
    background: var(--mrh-surface); color: var(--mrh-text);
}
#mrh .mrr-genday input { margin: 0; accent-color: var(--mrh-ink); }
#mrh .mrr-genday .d { color: var(--mrh-muted-2); font-weight: 600; }
#mrh .mrr-genday.sel { border-color: var(--mrh-ink); background: var(--mrh-chip-bg); color: var(--mrh-ink); }
#mrh .mrr-genday.sel .d { color: var(--mrh-ink); }
#mrh .mrr-drop-hover {
    background: var(--mrh-chip-bg) !important;
    outline: 2px dashed var(--mrh-ink); outline-offset: -2px;
}


/* ==========================================================================
 * ALBARAN · ficha (magma_compras/views/admin/dn_view.php)
 * 4-sep-2026 — migrada al sistema visual. El CSS vivia en un <style> dentro
 * de la vista; aqui esta scoped bajo #mrh, como manda la regla 1. Los nombres
 * de clase (.dv-*) NO se han tocado a proposito: asi la migracion no mueve ni
 * un elemento de sitio y comparar.py puede probar que no se ha perdido nada.
 * Unico cambio de criterio: la accion primaria pasa de ROJA a NEGRA; el rojo
 * se queda para alerta y para el sello de simulacro.
 * ========================================================================== */
#mrh .dv { --b:var(--magma-border,#e4e7ec); --bs:var(--magma-border-soft,#eef1f5);
  --s:var(--magma-surface,#fff); --s2:var(--magma-surface-2,#f8f9fb); --s3:var(--magma-surface-3,#eef1f5);
  --t:var(--magma-text,#20242c); --ts:var(--magma-text-strong,#0c0f15);
  --tm:var(--magma-text-muted,#5b6472); --tf:var(--magma-text-faint,#98a1af);
  --ac:var(--mrh-ink,#101828); --acs:var(--mrh-ink,#101828);
  --al:var(--mrh-bad-ink,#b3151f); --als:var(--mrh-bad-deep,#7f1d1d);
  --ok:var(--magma-success,#15a05c); --warn:var(--magma-warning,#c97a0e); --info:var(--magma-info,#3b6fb0);
  --sim:#7f1d1d; --r:var(--magma-radius,12px); --rs:var(--magma-radius-sm,9px);
  --sh:var(--magma-shadow-card,0 1px 2px rgba(16,24,40,.05));
  max-width:1400px;margin:0 auto;padding:18px;color:var(--t);
  font-family:var(--magma-font,'Geist',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif)}
#mrh .dv * {box-sizing:border-box}
#mrh .dv-top {display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:16px}
#mrh .dv-top h2 {margin:0;font-size:22px;font-weight:800;letter-spacing:-.02em;color:var(--ts);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#mrh .dv-top h2 i {color:var(--al)}
#mrh .dv-sub {font-size:13px;color:var(--tm);margin-top:4px}
#mrh .dv-acts {display:flex;gap:7px;flex-wrap:wrap}
#mrh .dv-btn {display:inline-flex;align-items:center;gap:6px;padding:8px 13px;font-size:13px;font-weight:700;
  border-radius:var(--rs);text-decoration:none;border:1px solid var(--b);background:var(--s);color:var(--t);line-height:1.3}
#mrh .dv-btn:hover {background:var(--s2);border-color:var(--ac);color:var(--ac);text-decoration:none}
#mrh .dv-btn.p {background:var(--ac);border-color:var(--ac);color:#fff!important}
#mrh .dv-btn.p:hover {filter:brightness(.93);color:#fff!important}
#mrh .dv-btn.off {opacity:.5;pointer-events:none}
#mrh .bdg {display:inline-block;padding:3px 11px;border-radius:999px;font-size:11px;font-weight:750;white-space:nowrap}
#mrh .bdg-gris {background:var(--s3);color:var(--tm)}
#mrh .bdg-azul {background:rgba(59,111,176,.16);color:#1e4b86}
#mrh .bdg-verde {background:rgba(21,160,92,.16);color:#0c7a45}
#mrh .bdg-rojo {background:var(--mrh-bad-bg,rgba(214,32,46,.12));color:var(--mrh-bad-ink,#b3151f)}
#mrh .bdg-ambar {background:rgba(201,122,14,.16);color:#945708}
#mrh .bdg-sim {background:var(--sim);color:#fff}
#mrh .dv-sim {background:var(--sim);color:#fff;border-radius:var(--rs);padding:11px 14px;margin-bottom:14px;font-size:13px;line-height:1.5}
#mrh .dv-sim b {letter-spacing:.04em}
#mrh .dv-alerta {background:var(--magma-accent-soft,rgba(214,32,46,.10));border:1px solid var(--al);
  border-left:4px solid var(--al);border-radius:var(--rs);padding:12px 14px;margin-bottom:14px}
#mrh .dv-alerta h4 {margin:0 0 7px;font-size:14px;font-weight:800;color:var(--als)}
#mrh .dv-alerta ul {margin:0;padding-left:18px;font-size:13px;line-height:1.6;color:var(--t)}
#mrh .dv-alerta .cerrada {color:var(--tf);text-decoration:line-through}
#mrh .dv-kpis {display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
#mrh .dv-kpi {background:var(--s);border:1px solid var(--b);border-top:3px solid var(--b);border-radius:var(--rs);
  padding:12px 15px;box-shadow:var(--sh);min-width:0}
#mrh .dv-kpi .l {font-size:10px;text-transform:uppercase;letter-spacing:.5px;font-weight:700;color:var(--tm)}
#mrh .dv-kpi .v {font-size:21px;font-weight:800;color:var(--ts);line-height:1.25;margin-top:4px;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;word-break:break-word}
#mrh .dv-kpi .sub {font-size:11px;color:var(--tf);margin-top:3px;line-height:1.4}
#mrh .dv-kpi.k-eur {border-top-color:var(--ok)}
#mrh .dv-kpi.k-eur .v {color:#0c7a45}
#mrh .dv-kpi.k-inc {border-top-color:var(--ac)}
#mrh .dv-kpi.k-inc .v {color:var(--acs)}
#mrh .dv-cols {display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start}
#mrh .dv-caja {background:var(--s);border:1px solid var(--b);border-radius:var(--r);padding:16px;box-shadow:var(--sh);margin-bottom:16px}
#mrh .dv-caja h4 {margin:0 0 12px;font-size:14px;font-weight:800;color:var(--ts);display:flex;align-items:center;gap:8px}
#mrh .dv-caja h4 i {color:var(--ac)}
#mrh .dv-caja h4 .cnt {margin-left:auto;font-size:11px;font-weight:750;color:var(--tm);background:var(--s3);padding:3px 9px;border-radius:999px}
#mrh .dv-def {width:100%;font-size:13px;border-collapse:collapse}
#mrh .dv-def th {text-align:left;padding:7px 10px 7px 0;color:var(--tm);font-weight:650;vertical-align:top;width:44%;border-bottom:1px solid var(--bs)}
#mrh .dv-def td {padding:7px 0;color:var(--ts);font-weight:650;border-bottom:1px solid var(--bs);word-break:break-word}
#mrh .dv-iva {width:100%;font-size:12.5px;border-collapse:collapse}
#mrh .dv-iva th {font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--tm);font-weight:750;
  padding:6px 8px;text-align:right;border-bottom:1px solid var(--b)}
#mrh .dv-iva th:first-child {text-align:left}
#mrh .dv-iva td {padding:7px 8px;text-align:right;font-variant-numeric:tabular-nums;border-bottom:1px solid var(--bs)}
#mrh .dv-iva td:first-child {text-align:left;font-weight:750;color:var(--ts)}
#mrh .dv-iva tfoot td {border-bottom:0;border-top:2px solid var(--b);font-weight:800;color:var(--ts);padding-top:9px}
#mrh .dv-iva-no {font-size:12.5px;color:var(--tm);line-height:1.55}
#mrh .dv-iva-no b {color:var(--ts)}
#mrh .dv-iva-no p {margin:6px 0 0}
#mrh .dv-nota {font-size:11.5px;color:var(--tf);margin-top:9px;line-height:1.5}
#mrh .dv-tabla {width:100%;font-size:13px;border-collapse:collapse}
#mrh .dv-tabla thead th {background:var(--s2);padding:9px 10px;font-size:10px;text-transform:uppercase;letter-spacing:.4px;
  font-weight:750;color:var(--tm);border-bottom:1px solid var(--b);text-align:left;white-space:nowrap}
#mrh .dv-tabla tbody td {padding:9px 10px;border-bottom:1px solid var(--bs);vertical-align:middle}
#mrh .dv-tabla tbody tr:hover {background:var(--s2)}
#mrh .dv-tabla tbody tr.escargo {background:rgba(201,122,14,.06)}
#mrh .dv-tabla tbody tr.escargo:hover {background:rgba(201,122,14,.11)}
#mrh .dv-tabla .amt {text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
#mrh .dv-prod {display:flex;align-items:center;gap:10px;min-width:0}
#mrh .dv-foto {width:44px;height:44px;flex:0 0 44px;border-radius:8px;overflow:hidden;background:var(--s3);
  border:1px solid var(--bs);display:flex;align-items:center;justify-content:center}
#mrh .dv-foto img {width:100%;height:100%;object-fit:contain;background:#fff}
#mrh .dv-foto .ini {font-size:17px;font-weight:800;color:var(--tf)}
#mrh .dv-nom {font-weight:700;color:var(--ts);line-height:1.35}
#mrh .dv-meta {font-size:11px;color:var(--tf);margin-top:2px}
#mrh .dv-avisa {color:var(--warn);font-weight:650}
#mrh .dv-nada {color:var(--tf)}
#mrh .dv-difok {color:#0c7a45;font-weight:700}
#mrh .dv-difmal {color:var(--acs);font-weight:800}
#mrh .dv-vacio {padding:26px;text-align:center;color:var(--tf);font-size:13px}
#mrh .dv-papel {display:flex;gap:12px;align-items:center;flex-wrap:wrap}
#mrh .dv-papel .ico {width:46px;height:46px;flex:0 0 46px;border-radius:9px;background:var(--magma-accent-soft,rgba(214,32,46,.10));
  color:var(--ac);display:flex;align-items:center;justify-content:center;font-size:21px}
#mrh .dv-papel .txt {flex:1 1 180px;min-width:0}
#mrh .dv-papel .txt b {display:block;color:var(--ts);font-size:13px;word-break:break-all}
#mrh .dv-papel .txt span {font-size:11.5px;color:var(--tf);line-height:1.5}

@media(max-width:1080px){
#mrh .dv-cols {grid-template-columns:1fr}
#mrh .dv-kpis {grid-template-columns:repeat(2,1fr)} }
@media(max-width:820px){
#mrh .dv {padding:12px 12px 40px}
#mrh .dv-tabla, #mrh .dv-tabla tbody, #mrh .dv-tabla tr, #mrh .dv-tabla td {display:block;width:100%}
#mrh .dv-tabla thead {display:none}
#mrh .dv-tabla tbody tr {border:1px solid var(--b);border-radius:var(--rs);padding:11px;margin-bottom:9px}
#mrh .dv-tabla tbody tr.escargo {border-left:3px solid var(--warn)}
#mrh .dv-tabla tbody td {border:0;padding:0;margin-bottom:6px}
#mrh .dv-tabla tbody td:last-child {margin-bottom:0}
#mrh .dv-tabla tbody td.amt {text-align:left}
#mrh .dv-tabla tbody td[data-l]::before {content:attr(data-l);display:block;font-size:9.5px;text-transform:uppercase;
    letter-spacing:.5px;font-weight:750;color:var(--tf);margin-bottom:2px}
#mrh .dv-btn {flex:1 1 auto;justify-content:center;min-height:42px}
}


/* ============================================================================
 * IGC — Bandeja de Instagram como chat (magma_comunicaciones/instagram)
 * 7-sep-2026 · Zeki: "ni tiene el chat como en social.emprendimiento.vip".
 * Dos paneles en escritorio (lista | hilo); en móvil uno solo y se alterna.
 * Todo dentro de #mrh, sin color propio: acción primaria negra, rojo solo alerta.
 * ========================================================================= */
#mrh .igc { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 0;
  border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-card); background: var(--mrh-surface);
  box-shadow: var(--mrh-shadow-card); overflow: hidden; min-height: 560px; }
#mrh .igc__lista { border-right: 1px solid var(--mrh-border); display: flex; flex-direction: column; min-width: 0; }
#mrh .igc__hilo  { display: flex; flex-direction: column; min-width: 0; background: var(--mrh-surface-2); }
#mrh .igc__tools { padding: 12px 12px 10px; border-bottom: 1px solid var(--mrh-rule); display: flex; flex-direction: column; gap: 8px; }
#mrh .igc__chips { display: flex; flex-wrap: wrap; gap: 6px; }
#mrh .igc__sel   { width: 100%; min-height: 36px; border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-mini);
  background: var(--mrh-surface); color: var(--mrh-ink); font: inherit; font-size: 13px; padding: 0 10px; }
#mrh .igc__scroll { overflow-y: auto; flex: 1 1 auto; }
#mrh .igc-conv { display: flex; gap: 10px; padding: 11px 12px; border-bottom: 1px solid var(--mrh-rule-row);
  cursor: pointer; text-decoration: none; color: inherit; align-items: flex-start; }
#mrh .igc-conv:hover { background: var(--mrh-surface-2); }
#mrh .igc-conv--on { background: var(--mrh-chip-bg); box-shadow: inset 3px 0 0 var(--mrh-ink); }
#mrh .igc-conv__av { flex: 0 0 auto; width: 38px; height: 38px; border-radius: 50%; overflow: hidden;
  background: var(--mrh-track); display: flex; align-items: center; justify-content: center; font-weight: 700; color: var(--mrh-muted); position: relative; }
#mrh .igc-conv__av img { width: 100%; height: 100%; object-fit: cover; display: block; }
#mrh .igc-conv__av .mh-avatar, #mrh .igc-conv__av .mh-avatar-mono { position: absolute; right: -3px; bottom: -3px; width: 18px !important; height: 18px !important; border: 2px solid var(--mrh-surface); border-radius: 50%; font-size: 9px; }
#mrh .igc-conv__body { flex: 1 1 auto; min-width: 0; }
#mrh .igc-conv__l1 { display: flex; align-items: baseline; gap: 8px; }
#mrh .igc-conv__quien { font-weight: 700; font-size: 14px; color: var(--mrh-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#mrh .igc-conv__ts { margin-left: auto; font-size: 11.5px; color: var(--mrh-muted-3); white-space: nowrap; }
#mrh .igc-conv__donde { font-size: 12px; color: var(--mrh-muted-2); }
#mrh .igc-conv__msg { font-size: 13px; color: var(--mrh-text); line-height: 1.4; margin-top: 2px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
#mrh .igc-conv__tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 5px; }
#mrh .igc-tag { display: inline-block; padding: 2px 8px; border-radius: var(--mrh-r-pill); font-size: 11px; font-weight: 600;
  background: var(--mrh-chip-bg); color: var(--mrh-muted); }
#mrh .igc-tag--n { background: var(--mrh-ink); color: var(--mrh-surface); }
#mrh .igc-tag--warn { background: var(--mrh-warn-bg); color: var(--mrh-warn-ink); }
#mrh .igc-tag--bad  { background: var(--mrh-bad-bg);  color: var(--mrh-bad-ink); }
#mrh .igc-tag--ok   { background: var(--mrh-ok-bg);   color: var(--mrh-ok-ink); }

#mrh .igc__head { display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: var(--mrh-surface);
  border-bottom: 1px solid var(--mrh-rule); min-height: 58px; }
#mrh .igc__back { display: none; border: 1px solid var(--mrh-border); background: var(--mrh-surface); border-radius: var(--mrh-r-mini);
  width: 34px; height: 34px; align-items: center; justify-content: center; font-size: 18px; color: var(--mrh-ink); cursor: pointer; }
#mrh .igc__who  { min-width: 0; }
#mrh .igc__who b { display: block; font-size: 15px; color: var(--mrh-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#mrh .igc__who span { font-size: 12px; color: var(--mrh-muted-2); }
#mrh .igc__ventana { margin-left: auto; font-size: 11.5px; color: var(--mrh-muted-2); text-align: right; white-space: nowrap; }
#mrh .igc__msgs { flex: 1 1 auto; overflow-y: auto; padding: 16px 14px; display: flex; flex-direction: column; gap: 6px; }
#mrh .igc__msgs .igc-dia { align-self: center; font-size: 11px; font-weight: 600; color: var(--mrh-muted-3); margin: 8px 0 4px; text-transform: uppercase; letter-spacing: .06em; }
#mrh .igc-b { max-width: 78%; padding: 9px 12px; border-radius: 14px; font-size: 14px; line-height: 1.45; overflow-wrap: anywhere; position: relative; }
#mrh .igc-b--cliente { align-self: flex-start; background: var(--mrh-surface); border: 1px solid var(--mrh-border); color: var(--mrh-ink); border-bottom-left-radius: 4px; }
#mrh .igc-b--local   { align-self: flex-end; background: var(--mrh-ink); color: var(--mrh-surface); border-bottom-right-radius: 4px; }
#mrh .igc-b--bot     { background: var(--mrh-ink-2); }
#mrh .igc-b__meta { display: block; font-size: 10.5px; margin-top: 4px; opacity: .65; }
#mrh .igc-b--local .igc-b__meta { text-align: right; }
#mrh .igc__vacio { margin: auto; text-align: center; color: var(--mrh-muted); padding: 40px 20px; max-width: 380px; font-size: 14px; line-height: 1.55; }
#mrh .igc__vacio b { display: block; color: var(--mrh-ink); font-size: 17px; margin-bottom: 6px; }
#mrh .igc__reply { border-top: 1px solid var(--mrh-rule); background: var(--mrh-surface); padding: 10px 12px 12px; }
#mrh .igc__reply textarea { width: 100%; min-height: 76px; resize: vertical; border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-box);
  padding: 10px 12px; font: inherit; font-size: 16px; line-height: 1.45; color: var(--mrh-ink); background: var(--mrh-surface); }
#mrh .igc__reply textarea:focus { outline: none; border-color: var(--mrh-ink); }
#mrh .igc__acc { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 8px; }
#mrh .igc__cuenta { margin-left: auto; font-size: 12px; color: var(--mrh-muted-3); }
#mrh .igc__aviso { display: none; margin-top: 8px; padding: 9px 11px; border-radius: var(--mrh-r-mini); font-size: 13px; line-height: 1.45; }
#mrh .igc__aviso--bien { display: block; background: var(--mrh-ok-bg); color: var(--mrh-ok-deep); border: 1px solid var(--mrh-ok-border); }
#mrh .igc__aviso--mal  { display: block; background: var(--mrh-bad-bg); color: var(--mrh-bad-deep); border: 1px solid var(--mrh-bad-border); }
#mrh .igc__aviso--warn { display: block; background: var(--mrh-warn-bg); color: var(--mrh-warn-deep); border: 1px solid var(--mrh-warn-border); }
#mrh .igc-listavacia { padding: 40px 18px; text-align: center; color: var(--mrh-muted); font-size: 13.5px; line-height: 1.5; }
#mrh .igc-listavacia b { display: block; color: var(--mrh-ink); font-size: 15px; margin-bottom: 4px; }
#mrh .igc-huecos { margin-top: 14px; padding: 12px 14px; border: 1px solid var(--mrh-warn-border); background: var(--mrh-warn-bg);
  border-radius: var(--mrh-r-box); color: var(--mrh-warn-deep); font-size: 13px; line-height: 1.5; }
#mrh .igc-huecos b { display: block; font-size: 13.5px; margin-bottom: 3px; }
#mrh .igc-huecos ul { margin: 6px 0 0; padding-left: 18px; }
#mrh .igc-dedonde { margin-top: 12px; border: 1px solid var(--mrh-border); border-radius: var(--mrh-r-box); background: var(--mrh-surface); }
#mrh .igc-dedonde summary { cursor: pointer; padding: 11px 14px; font-size: 13.5px; font-weight: 600; color: var(--mrh-ink); list-style: none; }
#mrh .igc-dedonde summary::-webkit-details-marker { display: none; }
#mrh .igc-dedonde .cuerpo { padding: 0 14px 12px; font-size: 13px; line-height: 1.6; color: var(--mrh-muted); }
#mrh .igc-dedonde .cuerpo p { margin: 0 0 8px; }
#mrh .igc-dedonde .cuerpo b { color: var(--mrh-ink); }
#mrh .igc-titulo { margin: 4px 0 12px; }
#mrh .igc-titulo h1 { font-size: 21px; font-weight: 800; letter-spacing: -.02em; margin: 0 0 3px; color: var(--mrh-ink); }
#mrh .igc-titulo p { margin: 0; font-size: 13.5px; color: var(--mrh-muted); line-height: 1.5; }
@media (max-width: 899px) {
  #mrh .igc { grid-template-columns: 1fr; min-height: 0; }
  #mrh .igc__lista { border-right: 0; }
  #mrh .igc__hilo  { display: none; min-height: 70vh; }
  #mrh .igc--hilo .igc__lista { display: none; }
  #mrh .igc--hilo .igc__hilo  { display: flex; }
  #mrh .igc__back { display: inline-flex; }
  #mrh .igc-b { max-width: 88%; }
  #mrh .igc__acc .mrh-btn { flex: 1 1 auto; justify-content: center; }
  #mrh .igc__cuenta { width: 100%; margin-left: 0; text-align: right; }
}
/* IGC · selector de locales como chips con el icono de magma_horarios (7-sep-2026) */
#mrh .igc__locales { display: flex; flex-wrap: wrap; gap: 6px; }
#mrh .igc-loc { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px 4px 4px; border: 1px solid var(--mrh-border);
  border-radius: var(--mrh-r-pill); background: var(--mrh-surface); color: var(--mrh-ink); text-decoration: none; font-size: 12.5px; font-weight: 600; line-height: 1; }
#mrh .igc-loc:hover { background: var(--mrh-surface-2); text-decoration: none; color: var(--mrh-ink); }
#mrh .igc-loc--on { background: var(--mrh-ink); border-color: var(--mrh-ink); color: var(--mrh-surface); }
#mrh .igc-loc__av { display: inline-flex; width: 22px; height: 22px; border-radius: 50%; overflow: hidden; align-items: center; justify-content: center; background: var(--mrh-chip-bg); font-size: 11px; }
#mrh .igc-loc__av .mh-avatar, #mrh .igc-loc__av .mh-avatar-mono { width: 22px !important; height: 22px !important; border-radius: 50%; }
#mrh .igc-loc__av--todos { font-size: 13px; font-weight: 700; color: var(--mrh-muted); }
#mrh .igc-loc--on .igc-loc__av--todos { color: var(--mrh-surface); background: var(--mrh-ink-2); }
#mrh .igc-loc__c { font-weight: 800; opacity: .8; }
#mrh .igc-conv__donde { display: inline-flex; align-items: center; gap: 5px; }
#mrh .igc-conv__donde .mh-avatar, #mrh .igc-conv__donde .mh-avatar-mono, #mrh .igc__who .mh-avatar, #mrh .igc__who .mh-avatar-mono { width: 16px !important; height: 16px !important; border-radius: 50%; vertical-align: -3px; margin-right: 4px; font-size: 8px; }

/* Solicitudes de ausencias: estilos aislados y jerarquía de trabajo. */
#mrh.mrh-leaves .mrl-kpi-row { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-bottom:18px; }
@media  (min-width:768px) {
#mrh.mrh-leaves .mrl-kpi-row { grid-template-columns:repeat(5,1fr); }
}
#mrh.mrh-leaves .mrl-kpi { background:var(--magma-surface); border-radius:var(--magma-radius-sm); padding:15px 18px;
           box-shadow:var(--magma-shadow-card); border:1px solid var(--magma-border-soft);
           transition:border-color var(--magma-dur) var(--magma-ease), transform var(--magma-dur) var(--magma-ease); }
#mrh.mrh-leaves .mrl-kpi:hover { border-color:var(--magma-border); transform:translateY(-1px); }
#mrh.mrh-leaves .mrl-kpi .lbl { font-size:11px; color:var(--magma-text-muted); text-transform:uppercase; letter-spacing:0.5px; font-weight:600; margin-bottom:4px; }
#mrh.mrh-leaves .mrl-kpi .val { font-size:28px; font-weight:650; color:var(--magma-text-strong); line-height:1.1; font-variant-numeric:tabular-nums; }
#mrh.mrh-leaves .mrl-kpi .val.warn { color:var(--magma-warning); }
#mrh.mrh-leaves .mrl-kpi .val.danger { color:var(--magma-danger); }
#mrh.mrh-leaves .mrl-kpi .sub { font-size:11px; color:var(--magma-text-faint); margin-top:4px; }
#mrh.mrh-leaves .mrl-card { background:var(--magma-surface); border-radius:var(--magma-radius-sm); padding:14px 16px;
            box-shadow:var(--magma-shadow-card); border:1px solid var(--magma-border-soft);
            display:flex; gap:14px; transition:background-color var(--magma-dur) var(--magma-ease), border-color var(--magma-dur) var(--magma-ease); }
#mrh.mrh-leaves .mrl-card:hover { background-color:var(--magma-surface-2); border-color:var(--magma-border); }
#mrh.mrh-leaves .mrl-avatar { width:40px; height:40px; border-radius:50%; flex-shrink:0;
              background:linear-gradient(135deg, var(--magma-accent), var(--magma-warning));
              display:flex; align-items:center; justify-content:center; color:var(--magma-on-accent); font-size:14px; font-weight:600; }
#mrh.mrh-leaves .mrl-avatar.mrl-avatar-img { object-fit:cover; background:transparent; padding:0; border:2px solid var(--magma-surface); box-shadow:0 0 0 1px var(--magma-border); }
#mrh.mrh-leaves .mrl-body { flex:1; min-width:0; }
#mrh.mrh-leaves .mrl-name { font-weight:600; color:var(--magma-text-strong); font-size:14px; }
#mrh.mrh-leaves .mrl-dni { color:var(--magma-text-faint); font-family:var(--magma-font-mono); font-size:11px; }
#mrh.mrh-leaves .mrl-meta { font-size:12px; color:var(--magma-text-muted); margin-top:4px; }
#mrh.mrh-leaves .mrl-chip { display:inline-flex; align-items:center; padding:2px 9px; border-radius:999px; font-size:11px; font-weight:600; margin-right:4px; border:1px solid transparent; }
#mrh.mrh-leaves .chip-vacaciones { background:var(--magma-info-soft);    color:var(--magma-info-strong);    border-color:var(--magma-info-border); }
#mrh.mrh-leaves .chip-baja_medica { background:var(--magma-accent-soft);  color:var(--magma-accent-strong);  border-color:var(--magma-accent-border); }
#mrh.mrh-leaves .chip-permiso { background:var(--magma-warning-soft); color:var(--magma-warning-strong); border-color:var(--magma-warning-border); }
#mrh.mrh-leaves .chip-otro { background:var(--magma-surface-3);    color:var(--magma-text-muted); }
#mrh.mrh-leaves .chip-pending { background:var(--magma-warning-soft); color:var(--magma-warning-strong); border-color:var(--magma-warning-border); }
#mrh.mrh-leaves .chip-approved { background:var(--magma-success-soft); color:var(--magma-success-strong); border-color:var(--magma-success-border); }
#mrh.mrh-leaves .chip-rejected { background:var(--magma-accent-soft);  color:var(--magma-accent-strong);  border-color:var(--magma-accent-border); }
#mrh.mrh-leaves .chip-consumed { background:var(--magma-info-soft);    color:var(--magma-info-strong);    border-color:var(--magma-info-border); }
#mrh.mrh-leaves .chip-cancelled { background:var(--magma-surface-3);    color:var(--magma-text-faint); }
#mrh.mrh-leaves .chip-source { background:var(--magma-surface-3);    color:var(--magma-text-muted); }
#mrh.mrh-leaves .mrl-row { display:flex; gap:12px; align-items:center; margin-top:6px; flex-wrap:wrap; }
#mrh.mrh-leaves .mrl-num-block { display:flex; gap:14px; margin-top:6px; }
#mrh.mrh-leaves .mrl-num { display:flex; flex-direction:column; }
#mrh.mrh-leaves .mrl-num .nlbl { font-size:10px; color:var(--magma-text-faint); text-transform:uppercase; letter-spacing:0.5px; }
#mrh.mrh-leaves .mrl-num .nval { font-size:18px; font-weight:600; color:var(--magma-text-strong); font-variant-numeric:tabular-nums; }
#mrh.mrh-leaves .mrl-num .nval.danger { color:var(--magma-danger); }
#mrh.mrh-leaves .mrl-bar { width:100%; height:6px; background:var(--magma-surface-3); border-radius:3px; overflow:hidden; margin-top:6px; }
#mrh.mrh-leaves .mrl-bar > div { height:100%; background:linear-gradient(90deg, var(--magma-success), var(--magma-warning)); transition:width .3s; }
#mrh.mrh-leaves .mrl-bar > div.over { background:var(--magma-accent); }
#mrh.mrh-leaves .mrl-actions { display:flex; gap:6px; align-items:center; }
#mrh.mrh-leaves .mrl-actions a, #mrh.mrh-leaves .mrl-actions button { padding:6px 11px; border-radius:var(--magma-radius-xs); font-size:12px; font-weight:600;
            text-decoration:none; border:1px solid var(--magma-border); background:var(--magma-surface); color:var(--magma-text);
            cursor:pointer; transition:background-color var(--magma-dur) var(--magma-ease), border-color var(--magma-dur) var(--magma-ease), transform var(--magma-dur) var(--magma-ease); }
#mrh.mrh-leaves .mrl-actions a:hover, #mrh.mrh-leaves .mrl-actions button:hover { background:var(--magma-surface-2); border-color:var(--magma-text-faint); }
#mrh.mrh-leaves .mrl-actions a:active, #mrh.mrh-leaves .mrl-actions button:active { transform:translateY(1px); }
#mrh.mrh-leaves .mrl-actions a:focus-visible, #mrh.mrh-leaves .mrl-actions button:focus-visible { outline:none; box-shadow:0 0 0 3px var(--magma-accent-ring); }
#mrh.mrh-leaves .mrl-actions .primary { background:var(--magma-accent); color:var(--magma-on-accent); border-color:var(--magma-accent); }
#mrh.mrh-leaves .mrl-actions .primary:hover { background:var(--magma-accent-strong); border-color:var(--magma-accent-strong); }
#mrh.mrh-leaves .mrl-actions .success { background:var(--magma-success); color:#fff; border-color:var(--magma-success); }
#mrh.mrh-leaves .mrl-actions .danger { background:var(--magma-danger);  color:#fff; border-color:var(--magma-danger); }
#mrh.mrh-leaves .mrl-list { display:flex; flex-direction:column; gap:10px; }
#mrh.mrh-leaves .mrl-empty { text-align:center; padding:50px; color:var(--magma-text-faint); }
#mrh.mrh-leaves .mrl-empty .ico { font-size:48px; color:var(--magma-border); margin-bottom:10px; }
#mrh.mrh-leaves .mrl-table-wrap { overflow-x:auto; background:var(--magma-surface); border-radius:var(--magma-radius-sm); border:1px solid var(--magma-border-soft); box-shadow:var(--magma-shadow-card); }
#mrh.mrh-leaves .mrl-table { width:100%; border-collapse:collapse; font-size:13px; }
#mrh.mrh-leaves .mrl-table thead th { background:var(--magma-surface-2); padding:10px 14px; text-align:left; font-weight:600; font-size:11px; text-transform:uppercase; letter-spacing:0.5px; color:var(--magma-text-muted); border-bottom:1px solid var(--magma-border); }
#mrh.mrh-leaves .mrl-table tbody td { padding:10px 14px; border-bottom:1px solid var(--magma-border-soft); color:var(--magma-text); }
#mrh.mrh-leaves .mrl-table tbody tr:hover { background:var(--magma-surface-2); }
#mrh.mrh-leaves .mrl-table tbody tr:last-child td { border-bottom:none; }
@media  (max-width:640px) {
#mrh.mrh-leaves .mrl-table thead { display:none; }
#mrh.mrh-leaves .mrl-table tbody td { display:block; border-bottom:none; padding:4px 14px; }
#mrh.mrh-leaves .mrl-table tbody td::before { content:attr(data-label); display:block; font-size:10px; text-transform:uppercase; color:var(--magma-text-faint); letter-spacing:0.5px; }
#mrh.mrh-leaves .mrl-table tbody tr { display:block; border-bottom:1px solid var(--magma-border-soft); padding:10px 0; }
}
#mrh.mrh-leaves .mrl-offtoday { display:flex; align-items:center; gap:8px; flex-wrap:wrap; background:var(--magma-surface); border:1px solid var(--magma-border-soft); border-radius:var(--magma-radius-sm); padding:10px 14px; margin-bottom:14px; box-shadow:var(--magma-shadow-card); }
#mrh.mrh-leaves .mrl-offtoday .ot-lbl { font-size:12px; font-weight:600; color:var(--magma-text); display:inline-flex; align-items:center; gap:6px; }
#mrh.mrh-leaves .mrl-offtoday .ot-lbl i { color:var(--magma-accent); }
#mrh.mrh-leaves .mrl-offtoday .ot-n { background:var(--magma-accent); color:var(--magma-on-accent); border-radius:999px; padding:0 8px; font-size:11px; font-weight:700; font-variant-numeric:tabular-nums; }
#mrh.mrh-leaves .mrl-offtoday .ot-none { font-size:12px; color:var(--magma-text-faint); }
#mrh.mrh-leaves .ot-chip { display:inline-flex; align-items:center; gap:5px; font-size:12px; font-weight:500; color:var(--magma-text); background:var(--magma-surface-2); border:1px solid var(--magma-border); border-radius:999px; padding:3px 10px; }
#mrh.mrh-leaves .ot-chip .dot { width:8px; height:8px; border-radius:50%; background:var(--c, var(--magma-text-faint)); flex-shrink:0; }
#mrh.mrh-leaves .ot-chip.tent { border-style:dashed; opacity:.72; }
#mrh.mrh-leaves .ot-chip em { font-style:normal; font-size:10px; color:var(--magma-warning-strong); }
#mrh.mrh-leaves .mrl-ds { margin-top:10px; border:1px solid var(--magma-border); border-left-width:4px; border-radius:var(--magma-radius-sm); padding:10px 12px; background:var(--magma-surface-2); }
#mrh.mrh-leaves .mrl-ds .ds-head { display:flex; align-items:center; gap:7px; font-weight:600; font-size:13px; margin-bottom:8px; flex-wrap:wrap; }
#mrh.mrh-leaves .mrl-ds .ds-head .sug { margin-left:auto; font-size:10px; font-weight:600; text-transform:uppercase; letter-spacing:.4px; opacity:.7; }
#mrh.mrh-leaves .mrl-ds .ds-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:8px 14px; }
@media  (min-width:560px) {
#mrh.mrh-leaves .mrl-ds .ds-grid { grid-template-columns:repeat(4,1fr); }
}
#mrh.mrh-leaves .mrl-ds .ds-cell { display:flex; flex-direction:column; }
#mrh.mrh-leaves .mrl-ds .ds-cell .k { font-size:10px; text-transform:uppercase; letter-spacing:.4px; color:var(--magma-text-faint); }
#mrh.mrh-leaves .mrl-ds .ds-cell .v { font-size:15px; font-weight:600; color:var(--magma-text-strong); line-height:1.2; font-variant-numeric:tabular-nums; }
#mrh.mrh-leaves .mrl-ds .ds-cell .v small { font-size:11px; font-weight:500; color:var(--magma-text-muted); }
#mrh.mrh-leaves .mrl-ds .ds-cell .v.danger { color:var(--magma-danger); }
#mrh.mrh-leaves .mrl-ds .ds-conf { margin-top:8px; font-size:12px; color:var(--magma-warning-strong); background:var(--magma-warning-soft); border:1px solid var(--magma-warning-border); border-radius:var(--magma-radius-xs); padding:6px 9px; }
#mrh.mrh-leaves .mrl-ds .ds-conf.bad { color:var(--magma-accent-strong); background:var(--magma-accent-soft); border-color:var(--magma-accent-border); }
#mrh.mrh-leaves .mrl-ds .ds-conf i { margin-right:3px; }
#mrh.mrh-leaves .mrl-ds .ds-reasons { margin-top:8px; display:flex; flex-direction:column; gap:5px; }
#mrh.mrh-leaves .mrl-ds .ds-reason { font-size:11px; display:flex; gap:6px; align-items:flex-start; line-height:1.35; }
#mrh.mrh-leaves .mrl-ds .ds-reason .rico { flex-shrink:0; margin-top:1px; }
#mrh.mrh-leaves .mrl-ds .ds-reason.block .rico { color:var(--magma-danger); }
#mrh.mrh-leaves .mrl-ds .ds-reason.warn .rico { color:var(--magma-warning); }
#mrh.mrh-leaves .mrl-ds .ds-reason .rtxt { color:var(--magma-text-muted); }
#mrh.mrh-leaves .mrl-ds .ds-reason .rtxt .leg { color:var(--magma-text-faint); font-style:italic; }
#mrh.mrh-leaves .mrl-compute { margin-top:6px; font-size:12px; line-height:1.4; display:flex; gap:7px; align-items:flex-start;
               color:var(--magma-success-strong); background:var(--magma-success-soft);
               border:1px solid var(--magma-success-border); border-radius:var(--magma-radius-xs); padding:5px 10px; }
#mrh.mrh-leaves .mrl-compute i { margin-top:2px; flex-shrink:0; }
#mrh.mrh-leaves .mrl-bridge { margin-top:6px; font-size:12px; line-height:1.4; display:flex; gap:7px; align-items:flex-start; max-width:640px;
               color:var(--magma-warning-strong); background:var(--magma-warning-soft);
               border:1px solid var(--magma-warning-border); border-radius:var(--magma-radius-xs); padding:5px 10px; }
#mrh.mrh-leaves .mrl-bridge i { margin-top:2px; flex-shrink:0; }
#mrh.mrh-leaves .mrr-scope-banner {
    display:flex; align-items:center; gap:12px; flex-wrap:wrap;
    background:var(--magma-warning-soft,#fffbeb);
    border:1px solid var(--magma-warning-border,#fcd34d);
    border-radius:var(--magma-radius-sm,8px);
    padding:12px 16px; margin-bottom:16px;
    box-shadow:0 1px 4px rgba(0,0,0,.06);
}
#mrh.mrh-leaves .mrr-scope-banner__avatar {
    width:40px; height:40px; border-radius:50%; flex-shrink:0;
    overflow:hidden; display:flex; align-items:center; justify-content:center;
    background:var(--magma-warning,#f59e0b); color:#fff;
    font-size:14px; font-weight:700; line-height:1;
    border:2px solid var(--magma-warning-border,#fcd34d);
}
#mrh.mrh-leaves .mrr-scope-banner__avatar img { width:100%; height:100%; object-fit:cover; border-radius:50%; }
#mrh.mrh-leaves .mrr-scope-banner__body { flex:1; min-width:0; }
#mrh.mrh-leaves .mrr-scope-banner__title { font-size:13px; font-weight:600; color:var(--magma-warning-strong,#92400e); }
#mrh.mrh-leaves .mrr-scope-banner__title strong { color:var(--magma-text-strong,#111); }
#mrh.mrh-leaves .mrr-scope-banner__dni { font-family:monospace; font-size:11px; color:var(--magma-text-faint,#9ca3af); margin-left:6px; }
#mrh.mrh-leaves .mrr-scope-banner__hint { font-size:11px; color:var(--magma-text-muted,#6b7280); margin-top:3px; }
#mrh.mrh-leaves .mrr-scope-banner__actions { display:flex; gap:8px; flex-wrap:wrap; flex-shrink:0; }
#mrh.mrh-leaves .mrr-scope-banner__btn-ghost, #mrh.mrh-leaves .mrr-scope-banner__btn-red {
    display:inline-flex; align-items:center; gap:6px;
    padding:6px 12px; border-radius:var(--magma-radius-xs,6px);
    font-size:12px; font-weight:600; text-decoration:none; cursor:pointer;
    border:1px solid var(--magma-border,#e5e7eb);
    background:var(--magma-surface,#fff); color:var(--magma-text,#374151);
    transition:background-color .15s ease, border-color .15s ease;
}
#mrh.mrh-leaves .mrr-scope-banner__btn-ghost:hover { background:var(--magma-surface-2,#f3f4f6); text-decoration:none; }
#mrh.mrh-leaves .mrr-scope-banner__btn-red { background:var(--magma-accent,#c0392b); color:#fff !important; border-color:var(--magma-accent,#c0392b); }
#mrh.mrh-leaves .mrr-scope-banner__btn-red:hover { background:var(--magma-accent-strong,#a93226); border-color:var(--magma-accent-strong,#a93226); text-decoration:none; }
@media  (max-width:480px) {
#mrh.mrh-leaves .mrr-scope-banner {
        flex-direction:column; align-items:flex-start; gap:10px;
    }
#mrh.mrh-leaves .mrr-scope-banner__avatar { width:36px; height:36px; font-size:13px; }
#mrh.mrh-leaves .mrr-scope-banner__actions { width:100%; }
#mrh.mrh-leaves .mrr-scope-banner__btn-ghost, #mrh.mrh-leaves .mrr-scope-banner__btn-red {
        flex:1; justify-content:center; text-align:center;
    }
#mrh.mrh-leaves .mrl-actions { flex-direction:column; align-items:stretch; width:100%; }
#mrh.mrh-leaves .mrl-actions a, #mrh.mrh-leaves .mrl-actions button { width:100%; justify-content:center; text-align:center; }
#mrh.mrh-leaves .mrl-card { flex-wrap:wrap; }
}
#mrh.mrh-leaves .mrl-sltabs > li > a:hover { color:var(--magma-text-strong) !important; background:var(--magma-surface-2) !important; border-radius:var(--magma-radius-xs) var(--magma-radius-xs) 0 0; }
#mrh.mrh-leaves .mrl-sltabs > li.active > a:hover { color:var(--magma-accent) !important; }
#mrh.mrh-leaves .mrl-actbar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:12px; }
#mrh.mrh-leaves .mrl-actbar .sep { margin-left:auto; }
#mrh.mrh-leaves .mrl-actbar .lbl { font-size:12px; color:var(--magma-text-muted); display:inline-flex; align-items:center; gap:5px; }
#mrh.mrh-leaves .mrl-hbtn { display:inline-flex; align-items:center; gap:6px; padding:7px 13px; border-radius:var(--magma-radius-xs);
            font-size:12.5px; font-weight:600; text-decoration:none; cursor:pointer; line-height:1.2;
            border:1px solid var(--magma-border); background:var(--magma-surface); color:var(--magma-text);
            transition:background-color var(--magma-dur) var(--magma-ease), border-color var(--magma-dur) var(--magma-ease), transform var(--magma-dur) var(--magma-ease); }
#mrh.mrh-leaves .mrl-hbtn:hover { background:var(--magma-surface-2); border-color:var(--magma-text-faint); color:var(--magma-text-strong); text-decoration:none; }
#mrh.mrh-leaves .mrl-hbtn:active { transform:translateY(1px); }
#mrh.mrh-leaves .mrl-hbtn:focus-visible { outline:none; box-shadow:0 0 0 3px var(--magma-accent-ring); }
#mrh.mrh-leaves .mrl-hbtn.is-primary { background:var(--magma-accent); color:var(--magma-on-accent); border-color:var(--magma-accent); }
#mrh.mrh-leaves .mrl-hbtn.is-primary:hover { background:var(--magma-accent-strong); border-color:var(--magma-accent-strong); color:#fff; }
#mrh.mrh-leaves .mrl-hbtn.is-success { background:var(--magma-success); color:#fff; border-color:var(--magma-success); }
#mrh.mrh-leaves .mrl-hbtn.is-success:hover { filter:brightness(.95); color:#fff; }
#mrh.mrh-leaves .mrl-actbar a.mrl-hbtn { color:var(--magma-text) !important; background:var(--magma-surface) !important; border-color:var(--magma-border) !important; }
#mrh.mrh-leaves .mrl-actbar a.mrl-hbtn:hover { color:var(--magma-text-strong) !important; background:var(--magma-surface-2) !important; border-color:var(--magma-text-faint) !important; }
#mrh.mrh-leaves .mrl-actbar a.mrl-hbtn.is-primary { color:var(--magma-on-accent) !important; background:var(--magma-accent) !important; border-color:var(--magma-accent) !important; }
#mrh.mrh-leaves .mrl-actbar a.mrl-hbtn.is-primary:hover { color:#fff !important; background:var(--magma-accent-strong) !important; border-color:var(--magma-accent-strong) !important; }
#mrh.mrh-leaves .mrl-cal { background:var(--magma-surface); border:1px solid var(--magma-border-soft); border-radius:var(--magma-radius); padding:16px 18px; margin-bottom:16px; box-shadow:var(--magma-shadow-card); }
#mrh.mrh-leaves .mrl-cal__head { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:14px; }
#mrh.mrh-leaves .mrl-cal__title { font-size:15px; font-weight:650; color:var(--magma-text-strong); display:inline-flex; align-items:center; gap:8px; }
#mrh.mrh-leaves .mrl-cal__title i { color:var(--magma-accent); }
#mrh.mrh-leaves .mrl-cal__title .muted { font-weight:500; color:var(--magma-text-faint); font-size:11px; }
#mrh.mrh-leaves .mrl-cal__legend { display:flex; gap:11px; flex-wrap:wrap; font-size:11px; color:var(--magma-text-muted); margin-left:auto; align-items:center; }
#mrh.mrh-leaves .mrl-cal__legend .k { display:inline-flex; align-items:center; gap:5px; }
#mrh.mrh-leaves .mrl-cal__legend .sw { width:11px; height:11px; border-radius:3px; display:inline-block; }
#mrh.mrh-leaves .mrl-calgrid { width:100%; border-collapse:separate; border-spacing:4px; table-layout:fixed; }
#mrh.mrh-leaves .mrl-calgrid th { padding:3px; text-align:center; color:var(--magma-text-faint); font-weight:700; font-size:10px; text-transform:uppercase; letter-spacing:.5px; }
#mrh.mrh-leaves .mrl-calgrid th.we { color:var(--magma-accent); }
#mrh.mrh-leaves .mrl-calgrid td { height:64px; vertical-align:top; padding:5px 6px; border-radius:var(--magma-radius-xs); border:1px solid var(--magma-border-soft); background:var(--magma-surface); }
#mrh.mrh-leaves .mrl-calgrid td.empty { background:transparent; border-color:transparent; }
#mrh.mrh-leaves .mrl-calgrid td.we { background:var(--magma-surface-2); }
#mrh.mrh-leaves .mrl-calgrid td.fest { background:var(--magma-accent-soft); border-color:var(--magma-accent-border); }
#mrh.mrh-leaves .mrl-calgrid td.today { box-shadow:inset 0 0 0 2px var(--magma-accent); }
#mrh.mrh-leaves .mrl-cal__dnum { font-size:11px; font-weight:700; color:var(--magma-text-muted); text-align:right; line-height:1; }
#mrh.mrh-leaves .mrl-calgrid td.today .mrl-cal__dnum { color:var(--magma-accent-strong); }
#mrh.mrh-leaves .mrl-cal__festname { font-size:8.5px; font-weight:700; color:var(--magma-accent-strong); line-height:1.15; margin-top:2px; text-transform:uppercase; letter-spacing:.2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#mrh.mrh-leaves .mrl-cal__dots { display:flex; flex-wrap:wrap; gap:3px; margin-top:4px; align-items:center; }
#mrh.mrh-leaves .mrl-cal__more { font-size:9px; color:var(--magma-text-muted); font-weight:700; align-self:center; }
@media  print {
#mrh.mrh-leaves #mrl-cal-print { --magma-surface:#fff; --magma-surface-2:#f4f5f7; --magma-surface-3:#eceef1;
                   --magma-text-strong:#111; --magma-text:#222; --magma-text-muted:#555; --magma-text-faint:#777;
                   --magma-border-soft:#dcdfe4; --magma-border:#c8ccd2;
                   --magma-accent:#d6202e; --magma-accent-strong:#b3151f; --magma-accent-soft:#fbe9eb; --magma-accent-border:#f0b9bd; }
#mrh.mrh-leaves * { visibility:hidden !important; }
#mrh.mrh-leaves #mrl-cal-print, #mrh.mrh-leaves #mrl-cal-print * { visibility:visible !important; }
#mrh.mrh-leaves #mrl-cal-print { position:absolute; left:0; top:0; width:100%; box-shadow:none !important; border:0 !important; }
#mrh.mrh-leaves .mrl-cal__noprint { display:none !important; }
}
#mrh.mrh-leaves .mrl-cal__toggle { display:inline-flex; border:1px solid var(--magma-border); border-radius:999px; overflow:hidden; background:var(--magma-surface-2); }
#mrh.mrh-leaves .mrl-cal__toggle button { border:0; background:transparent; padding:6px 14px; font-size:12.5px; font-weight:600; color:var(--magma-text-muted); cursor:pointer; display:inline-flex; align-items:center; gap:6px; line-height:1.2; transition:color var(--magma-dur) var(--magma-ease), background-color var(--magma-dur) var(--magma-ease); }
#mrh.mrh-leaves .mrl-cal__toggle button.is-on { background:var(--magma-accent); color:var(--magma-on-accent); }
#mrh.mrh-leaves .mrl-cal__toggle button:not(.is-on):hover { color:var(--magma-text-strong); }
#mrh.mrh-leaves .mrl-tl { border:1px solid var(--magma-border-soft); border-radius:var(--magma-radius-sm); overflow:hidden; }
#mrh.mrh-leaves .mrl-tl__scroll { overflow-x:auto; overflow-y:auto; max-height:540px; }
#mrh.mrh-leaves .mrl-tl__head, #mrh.mrh-leaves .mrl-tl__row { display:grid; grid-template-columns:168px repeat(var(--mrl-ndays), minmax(26px,1fr)); align-items:center; min-width:max-content; }
#mrh.mrh-leaves .mrl-tl__head { position:sticky; top:0; z-index:3; background:var(--magma-surface-2); border-bottom:1px solid var(--magma-border); }
#mrh.mrh-leaves .mrl-tl__hcell { grid-row:1; font-size:10px; font-weight:700; color:var(--magma-text-faint); text-align:center; padding:7px 0 6px; font-variant-numeric:tabular-nums; }
#mrh.mrh-leaves .mrl-tl__hcell .dow { display:block; font-size:8px; font-weight:600; opacity:.7; }
#mrh.mrh-leaves .mrl-tl__hcell.we { color:var(--magma-text-muted); }
#mrh.mrh-leaves .mrl-tl__hcell.fest { color:var(--magma-accent-strong); }
#mrh.mrh-leaves .mrl-tl__hcell.today { color:var(--magma-accent); }
#mrh.mrh-leaves .mrl-tl__hcell.today .dnum { display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:18px; border-radius:50%; background:var(--magma-accent); color:var(--magma-on-accent); }
#mrh.mrh-leaves .mrl-tl__hname { grid-column:1; grid-row:1; position:sticky; left:0; z-index:1; background:var(--magma-surface-2); font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--magma-text-faint); padding:0 12px; }
#mrh.mrh-leaves .mrl-tl__row { border-bottom:1px solid var(--magma-border-soft); min-height:38px; }
#mrh.mrh-leaves .mrl-tl__row:last-child { border-bottom:0; }
#mrh.mrh-leaves .mrl-tl__name { grid-column:1; grid-row:1; position:sticky; left:0; z-index:2; background:var(--magma-surface); display:flex; align-items:center; gap:8px; padding:5px 12px; border-right:1px solid var(--magma-border-soft); min-width:0; }
#mrh.mrh-leaves .mrl-tl__name .nm { font-size:12.5px; font-weight:600; color:var(--magma-text-strong); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#mrh.mrh-leaves .mrl-tl__cellbg { grid-row:1; height:100%; border-right:1px solid var(--magma-border-soft); }
#mrh.mrh-leaves .mrl-tl__cellbg.we { background:var(--magma-surface-2); }
#mrh.mrh-leaves .mrl-tl__cellbg.fest { background:var(--magma-accent-soft); }
#mrh.mrh-leaves .mrl-tl__cellbg.today { box-shadow:inset 1px 0 0 var(--magma-accent), inset -1px 0 0 var(--magma-accent); background:var(--magma-accent-soft); }
#mrh.mrh-leaves .mrl-tl__bar { grid-row:1; height:22px; margin:0 1px; border-radius:6px; display:flex; align-items:center; padding:0 8px; font-size:11px; font-weight:650; color:#fff; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; box-shadow:0 1px 2px rgba(0,0,0,.12); z-index:1; }
#mrh.mrh-leaves .mrl-tl__bar.pend { background-image:repeating-linear-gradient(45deg, rgba(255,255,255,.30) 0 5px, transparent 5px 10px); opacity:.92; outline:1px dashed rgba(255,255,255,.7); outline-offset:-2px; }
#mrh.mrh-leaves .mrl-tl__festrow { grid-column:1 / -1; grid-row:1; }
#mrh.mrh-leaves .mrl-tl__empty { padding:26px 16px; text-align:center; color:var(--magma-text-faint); font-size:13px; }
#mrh.mrh-leaves .mrl-calgrid td { height:auto; min-height:62px; }
#mrh.mrh-leaves .mrl-cal__pills { display:flex; flex-direction:column; gap:3px; margin-top:4px; }
#mrh.mrh-leaves .mrl-pill { display:flex; align-items:center; gap:5px; font-size:10.5px; font-weight:600; color:var(--magma-text-strong); background:var(--magma-surface-2); border:1px solid var(--magma-border-soft); border-left:3px solid var(--p, var(--magma-text-faint)); border-radius:5px; padding:2px 6px; line-height:1.25; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#mrh.mrh-leaves .mrl-pill.pend { border-style:dashed; opacity:.8; }
#mrh.mrh-leaves .mrl-cal__morep { font-size:9.5px; font-weight:700; color:var(--magma-text-muted); padding:1px 4px; }
@media  (max-width:600px) {
#mrh.mrh-leaves .mrl-tl__head, #mrh.mrh-leaves .mrl-tl__row { grid-template-columns:120px repeat(var(--mrl-ndays), minmax(22px,1fr)); }
}
#mrh.mrh-leaves .mrl-up-panel { background:var(--magma-surface); border:1px solid var(--magma-success-border); border-radius:var(--magma-radius); padding:14px 18px; margin-bottom:16px; box-shadow:var(--magma-shadow-card); }
#mrh.mrh-leaves .mrl-up-panel > summary { cursor:pointer; font-size:15px; font-weight:650; color:var(--magma-success-strong); }
#mrh.mrh-leaves .mrl-up-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px,1fr)); gap:10px; margin-top:12px; }
#mrh.mrh-leaves .mrl-up-card { display:flex; gap:10px; align-items:center; padding:10px 12px; border:1px solid var(--magma-border-soft); border-radius:var(--magma-radius-sm); text-decoration:none; color:inherit; background:var(--magma-surface-2); transition:background-color var(--magma-dur) var(--magma-ease), border-color var(--magma-dur) var(--magma-ease); }
#mrh.mrh-leaves .mrl-up-card:hover { background:var(--magma-surface); border-color:var(--magma-success); }
#mrh.mrh-leaves .mrl-up-card .nm { font-size:13px; font-weight:600; color:var(--magma-text-strong); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#mrh.mrh-leaves .mrl-up-card .meta { font-size:11px; color:var(--magma-text-muted); margin-top:2px; }
#mrh.mrh-leaves .mrl-up-card .meta strong { color:var(--magma-text-strong); }
#mrh.mrh-leaves .mrl-up-tag { display:inline-block; padding:1px 7px; border-radius:999px; color:#fff; font-weight:600; font-size:10px; }
#mrh.mrh-leaves .mrl-up-when { padding:2px 8px; border-radius:999px; font-weight:700; font-size:11px; }
#mrh.mrh-leaves .mrl-up-src { color:var(--magma-text-faint); font-size:10px; margin-left:6px; }
#mrh.mrh-leaves .mrl-bulk-toolbar {display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 12px;padding:10px 14px;background:var(--magma-surface);border:1px solid var(--magma-border-soft);border-radius:var(--magma-radius-sm);box-shadow:var(--magma-shadow-card);}
#mrh.mrh-leaves .mrl-selall {display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--magma-text-strong);cursor:pointer;margin:0;}
#mrh.mrh-leaves .mrl-selall input {width:17px;height:17px;cursor:pointer;accent-color:var(--magma-accent);}
#mrh.mrh-leaves .mrl-hint {font-size:12px;color:var(--magma-text-faint);}
#mrh.mrh-leaves .mrl-card .mrl-sel {width:18px;height:18px;margin-right:2px;align-self:center;cursor:pointer;flex-shrink:0;}
#mrh.mrh-leaves .mrl-bulkbar {position:fixed;left:50%;bottom:18px;z-index:1040;transform:translateX(-50%) translateY(160%);display:flex;align-items:center;gap:12px;background:#1f2937;color:#fff;padding:12px 18px;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.28);transition:transform .22s ease;}
#mrh.mrh-leaves .mrl-bulkbar.show {transform:translateX(-50%) translateY(0);}
#mrh.mrh-leaves .mrl-bulkbar .cnt {font-size:14px;}
#mrh.mrh-leaves .mrl-bulkbar .cnt strong {font-size:16px;color:#fbbf24;}
#mrh.mrh-leaves .mrl-bulkbar button {border:none;border-radius:8px;padding:9px 16px;font-weight:600;font-size:13px;cursor:pointer;color:#fff;}
#mrh.mrh-leaves .mrl-bulkbar button.ok {background:#16a34a;}
#mrh.mrh-leaves .mrl-bulkbar button.ok:hover {background:#15803d;}
#mrh.mrh-leaves .mrl-bulkbar button.no {background:#c0392b;}
#mrh.mrh-leaves .mrl-bulkbar button.no:hover {background:#a93226;}
#mrh.mrh-leaves {
  --magma-text-strong:var(--mrh-ink); --magma-text:var(--mrh-text);
  --magma-text-muted:var(--mrh-muted); --magma-text-faint:var(--mrh-muted-2);
  --magma-surface:var(--mrh-surface); --magma-surface-2:var(--mrh-surface-2);
  --magma-surface-3:var(--mrh-surface-3); --magma-border:var(--mrh-border);
  --magma-border-soft:var(--mrh-border-soft); --magma-shadow-card:none;
}
#mrh.mrh-leaves .mrh-leaves-requests { margin:24px 0; }
#mrh.mrh-leaves h1 { margin:0 0 8px; font-size:24px; font-weight:650; line-height:1.25; color:var(--mrh-ink); }
#mrh.mrh-leaves h1 span { color:var(--mrh-muted); font-size:18px; }
#mrh.mrh-leaves .mrh-leaves-help { font-size:13px; line-height:1.6; color:var(--mrh-muted); margin:8px 0 16px; }
#mrh.mrh-leaves .mrh-leaves-group,
#mrh.mrh-leaves .mrh-leaves-filters { margin:16px 0; padding:14px 16px; border:1px solid var(--mrh-border); border-radius:var(--mrh-r-box); background:var(--mrh-surface); }
#mrh.mrh-leaves summary { cursor:pointer; font-size:14px; font-weight:600; color:var(--mrh-ink); }
#mrh.mrh-leaves summary:focus-visible { outline:2px solid var(--mrh-ink); outline-offset:4px; }
#mrh.mrh-leaves .mrh-leaves-group > summary::before,
#mrh.mrh-leaves .mrh-leaves-filters > summary::before { content:'›'; display:inline-block; margin-right:8px; font-size:18px; }
#mrh.mrh-leaves .mrh-leaves-group[open] > summary::before,
#mrh.mrh-leaves .mrh-leaves-filters[open] > summary::before { transform:rotate(90deg); }
#mrh.mrh-leaves .mrr-scope-banner { background:var(--mrh-surface); border-color:var(--mrh-border); box-shadow:none; }
#mrh.mrh-leaves .mrr-scope-banner__title { color:var(--mrh-text); }
#mrh.mrh-leaves .mrr-scope-banner__hint { font-size:12px; line-height:1.5; }
#mrh.mrh-leaves .mrr-scope-banner__avatar { border-color:var(--mrh-border); background:var(--mrh-ink); }
#mrh.mrh-leaves .mrr-scope-banner__btn-red { background:var(--mrh-surface); border-color:var(--mrh-border); color:var(--mrh-ink) !important; }
#mrh.mrh-leaves .mrr-scope-banner__btn-red:hover { background:var(--mrh-surface-2); border-color:var(--mrh-ink); }
#mrh.mrh-leaves .mrl-actbar a.mrl-hbtn.is-primary,
#mrh.mrh-leaves .mrl-actbar a.mrl-hbtn.is-primary:hover,
#mrh.mrh-leaves .mrl-actions .success,
#mrh.mrh-leaves .mrr-qa .btn-primary,
#mrh.mrh-leaves .mrl-cal__toggle button.is-on { background:var(--mrh-ink) !important; border-color:var(--mrh-ink) !important; color:var(--mrh-surface) !important; }
#mrh.mrh-leaves .mrl-sltabs > li.active > a { color:var(--mrh-ink) !important; border-bottom-color:var(--mrh-ink) !important; }
#mrh.mrh-leaves .mrl-card { padding:20px; flex-wrap:wrap; box-shadow:none; border-radius:var(--mrh-r-box); }
#mrh.mrh-leaves .mrl-card .mrl-body { flex:1 1 65%; }
#mrh.mrh-leaves .mrl-card .mrl-actions { width:100%; justify-content:flex-end; border-top:1px solid var(--mrh-border-soft); padding-top:14px; }
#mrh.mrh-leaves .mrl-actions a,
#mrh.mrh-leaves .mrl-actions button { min-height:40px; display:inline-flex; align-items:center; justify-content:center; padding:8px 20px; font-size:13px; }
#mrh.mrh-leaves .mrl-chip { border-radius:var(--mrh-r-mini); font-size:12px; }
#mrh.mrh-leaves .mrl-meta { font-size:13px; line-height:1.6; }
#mrh.mrh-leaves .mrl-num .nlbl,
#mrh.mrh-leaves .mrl-ds .ds-cell .k { font-size:11px; }
#mrh.mrh-leaves .mrl-ds .ds-reason { font-size:12px; line-height:1.5; }
#mrh.mrh-leaves .mrl-empty { padding:28px 18px; background:var(--mrh-surface); border:1px solid var(--mrh-border); border-radius:var(--mrh-r-box); }
#mrh.mrh-leaves .mrl-up-grid { grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)); }
#mrh.mrh-leaves .mrl-bulkbar { max-width:calc(100vw - 24px); flex-wrap:wrap; justify-content:center; }
#mrh.mrh-leaves .mrl-bulkbar:not(.show) { display:none !important; }
#mrh.mrh-leaves .mrl-bulkbar.show { display:flex !important; }
#mrh.mrh-leaves .mrl-bulkbar button.ok { background:var(--mrh-ink-2); border:1px solid var(--mrh-muted-2); }
@media (max-width:640px) {
  #mrh.mrh-leaves .mrl-card { padding:14px; gap:10px; }
  #mrh.mrh-leaves .mrl-card .mrl-body { flex-basis:100%; }
  #mrh.mrh-leaves .mrl-actbar .sep { display:none; }
  #mrh.mrh-leaves .mrl-actbar .lbl { flex-basis:100%; margin-top:4px; }
  #mrh.mrh-leaves .mrh-leaves-group,
  #mrh.mrh-leaves .mrh-leaves-filters { padding:12px; }
  #mrh.mrh-leaves .mrl-ds .ds-grid { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  #mrh.mrh-leaves .mrr-qa .btn { white-space:normal !important; line-height:1.35; }
  #mrh.mrh-leaves .mrl-selall { display:flex; text-align:left; width:auto; }
  #mrh.mrh-leaves .mrl-selall input { flex:0 0 18px; }
  #mrh.mrh-leaves .mrl-bulkbar { width:calc(100vw - 24px); bottom:8px; padding:10px; }
}

/* 9-sep-2026 · Administración RRHH: continuidad visual por pantalla. */
#mrh.mrh-screen-weekly-workflow .mrl-ww-kpis{display:grid;grid-template-columns:repeat(4, 1fr);gap:12px;margin-bottom:16px;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-kpi{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:10px;padding:14px;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-kpi .lbl{font-size:11px;color:var(--mrh-muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-kpi .val{font-size:24px;font-weight:600;line-height:1;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-kpi.warn .val{color:#f59e0b;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-kpi.green .val{color:#10b981;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-kpi.red .val{color:#dc2626;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-section{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:10px;padding:18px;margin-bottom:14px;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-section h4{margin:0 0 10px;color:var(--mrh-ink);}
#mrh.mrh-screen-weekly-workflow .mrl-ww-btn-primary{background:#c0392b;color:#fff;border:0;padding:12px 22px;border-radius:8px;font-weight:600;cursor:pointer;font-size:15px;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-btn-primary:hover{background:#a93226;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-btn-green{background:#10b981;color:#fff;border:0;padding:10px 18px;border-radius:8px;font-weight:600;cursor:pointer;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-status-chip{display:inline-block;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:600;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-status-chip.pending{background:#fef3c7;color:#92400e;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-status-chip.no_movements{background:#e5e7eb;color:#374151;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-status-chip.reviewed_with_movements{background:#d1fae5;color:#065f46;}
#mrh.mrh-screen-weekly-workflow .mrl-ww-history-table th{background:#f9fafb;font-size:11px;text-transform:uppercase;color:var(--mrh-muted);}
#mrh.mrh-screen-weekly-workflow .mrl-ww-history-table td{font-size:13px;}
.theme-dark #mrh.mrh-screen-weekly-workflow .mrl-ww-kpi{background:#15181f;border-color:#2a2f3a;}
.theme-dark #mrh.mrh-screen-weekly-workflow .mrl-ww-kpi .lbl{color:#98a1af;}
.theme-dark #mrh.mrh-screen-weekly-workflow .mrl-ww-kpi .val{color:#e9edf3;}
.theme-dark #mrh.mrh-screen-weekly-workflow .mrl-ww-section{background:#15181f;border-color:#2a2f3a;}
.theme-dark #mrh.mrh-screen-weekly-workflow .mrl-ww-section h4{color:#e9edf3;}
.theme-dark #mrh.mrh-screen-weekly-workflow .mrl-ww-status-chip.no_movements{background:#1b1f27;color:#98a1af;}
.theme-dark #mrh.mrh-screen-weekly-workflow .mrl-ww-history-table th{background:#1b1f27;color:#98a1af;}
.theme-dark #mrh.mrh-screen-weekly-workflow .mrl-ww-history-table td{color:#e9edf3;}
.theme-dark #mrh.mrh-screen-weekly-workflow .mrl-ww-history-table tbody tr:hover{background:#1b1f27;}
.theme-dark #mrh.mrh-screen-weekly-workflow .mrl-ww-history-table tbody tr[style*="fef5e7"]{background:#2a2412  !important;}
.theme-dark #mrh.mrh-screen-weekly-workflow .mrl-ww-history-table tbody tr[style*="fef5e7"] td{color:#e9edf3;}
#mrh.mrh-screen-over-hours .oh-wrap{max-width:1180px;margin:0 auto;font-family:var(--magma-font,system-ui,sans-serif);}
#mrh.mrh-screen-over-hours .oh-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:2px 0 14px;}
#mrh.mrh-screen-over-hours .oh-head h3{margin:0;font-size:20px;font-weight:700;color:var(--magma-text-strong);}
#mrh.mrh-screen-over-hours .oh-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
#mrh.mrh-screen-over-hours .oh-in{padding:7px 10px;border:1px solid var(--magma-border);border-radius:8px;background:var(--magma-surface);color:var(--magma-text);font-size:13px;font-family:inherit;}
#mrh.mrh-screen-over-hours .oh-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:8px;font-size:13px;font-weight:600;border:1px solid var(--magma-border);background:var(--magma-surface-2);color:var(--magma-text);text-decoration:none;cursor:pointer;}
#mrh.mrh-screen-over-hours .oh-btn:hover{background:var(--magma-surface-3);}
#mrh.mrh-screen-over-hours .oh-banner{display:flex;gap:10px;align-items:flex-start;background:rgba(123,92,214,.08);border:1px solid rgba(123,92,214,.3);border-radius:10px;padding:11px 14px;margin:0 0 14px;font-size:13px;color:var(--magma-text);}
#mrh.mrh-screen-over-hours .oh-banner b{color:#7b5cd6;}
#mrh.mrh-screen-over-hours .oh-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:0 0 16px;}
#mrh.mrh-screen-over-hours .oh-kpi{background:var(--magma-surface);border:1px solid var(--magma-border);border-radius:12px;padding:13px 15px;}
#mrh.mrh-screen-over-hours .oh-kpi .v{font-size:24px;font-weight:800;color:var(--magma-text-strong);line-height:1;}
#mrh.mrh-screen-over-hours .oh-kpi .l{font-size:11.5px;color:var(--magma-text-muted);margin-top:5px;text-transform:uppercase;letter-spacing:.3px;font-weight:600;}
#mrh.mrh-screen-over-hours .oh-sec{background:var(--magma-surface);border:1px solid var(--magma-border);border-radius:12px;overflow:hidden;margin-bottom:18px;}
#mrh.mrh-screen-over-hours .oh-sec-h{padding:13px 16px;border-bottom:1px solid var(--magma-border);font-weight:700;color:var(--magma-text-strong);display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
#mrh.mrh-screen-over-hours .oh-sec-h small{font-weight:500;color:var(--magma-text-muted);font-size:12.5px;}
#mrh.mrh-screen-over-hours .oh-wrapx{overflow-x:auto;}
#mrh.mrh-screen-over-hours .oh-t{width:100%;border-collapse:collapse;font-size:13px;}
#mrh.mrh-screen-over-hours .oh-t th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--magma-text-muted);font-weight:700;padding:10px 14px;background:var(--magma-surface-2);border-bottom:1px solid var(--magma-border);white-space:nowrap;}
#mrh.mrh-screen-over-hours .oh-t td{padding:10px 14px;border-bottom:1px solid var(--magma-border-soft);vertical-align:middle;}
#mrh.mrh-screen-over-hours .oh-t tr:last-child td{border-bottom:0;}
#mrh.mrh-screen-over-hours .oh-nm{font-weight:650;color:var(--magma-text-strong);text-decoration:none;}
#mrh.mrh-screen-over-hours .oh-nm:hover{color:var(--magma-accent);}
#mrh.mrh-screen-over-hours .oh-pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600;}
#mrh.mrh-screen-over-hours .oh-extra{font-weight:800;font-variant-numeric:tabular-nums;}
#mrh.mrh-screen-over-hours .oh-muted{color:var(--magma-text-faint,#98a1af);}
#mrh.mrh-screen-over-hours .oh-bar{height:7px;border-radius:4px;background:var(--magma-surface-3,#eef1f5);overflow:hidden;min-width:90px;}
#mrh.mrh-screen-over-hours .oh-bar > i{display:block;height:100%;}
#mrh.mrh-screen-over-hours .oh-empty{padding:30px;text-align:center;color:var(--magma-text-muted);}
@media (max-width:760px){#mrh.mrh-screen-over-hours .oh-t thead{display:none;}
#mrh.mrh-screen-over-hours .oh-t,#mrh.mrh-screen-over-hours .oh-t tbody,#mrh.mrh-screen-over-hours .oh-t tr,#mrh.mrh-screen-over-hours .oh-t td{display:block;width:100%;}
#mrh.mrh-screen-over-hours .oh-t tr{border:1px solid var(--magma-border);border-radius:10px;margin:9px;padding:6px 4px;}
#mrh.mrh-screen-over-hours .oh-t td{border:0;padding:6px 12px;display:flex;justify-content:space-between;gap:12px;}
#mrh.mrh-screen-over-hours .oh-t td::before{content:attr(data-l);font-size:10.5px;text-transform:uppercase;letter-spacing:.3px;color:var(--magma-text-faint,#98a1af);font-weight:700;}
#mrh.mrh-screen-over-hours .oh-t td.oh-c-who{justify-content:flex-start;}
#mrh.mrh-screen-over-hours .oh-t td.oh-c-who::before{display:none;}}
#mrh.mrh-screen-payments-export-unified .pxu-wrap{max-width:1240px;}
#mrh.mrh-screen-payments-export-unified .pxu-head h3{font-weight:800;margin:0 0 4px;color:var(--mrh-ink);}
#mrh.mrh-screen-payments-export-unified .pxu-sub{color:var(--mrh-muted);font-size:13px;margin:0;max-width:70ch;line-height:1.55;}
#mrh.mrh-screen-payments-export-unified .pxu-period-chip{font-weight:400;color:var(--mrh-muted);}
#mrh.mrh-screen-payments-export-unified .pxu-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
#mrh.mrh-screen-payments-export-unified .pxu-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0;}
@media (max-width:820px){#mrh.mrh-screen-payments-export-unified .pxu-kpis{grid-template-columns:repeat(2,1fr);}}
#mrh.mrh-screen-payments-export-unified .pxu-kpi{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:12px;padding:13px 15px;}
#mrh.mrh-screen-payments-export-unified .pxu-kpi .l{font-size:11px;color:var(--mrh-muted);text-transform:uppercase;letter-spacing:.4px;font-weight:700;}
#mrh.mrh-screen-payments-export-unified .pxu-kpi .v{font-size:22px;font-weight:800;color:var(--mrh-ink);margin-top:3px;font-variant-numeric:tabular-nums;}
#mrh.mrh-screen-payments-export-unified .pxu-kpi .s{font-size:11.5px;color:var(--mrh-muted);margin-top:1px;}
#mrh.mrh-screen-payments-export-unified .pxu-kpi.is-total .v{color:var(--mrh-ink);}
#mrh.mrh-screen-payments-export-unified .pxu-kpi.is-ok .v{color:#15803d;}
#mrh.mrh-screen-payments-export-unified .pxu-kpi.is-warn{background:#fffbeb;border-color:#fde68a;}
#mrh.mrh-screen-payments-export-unified .pxu-kpi.is-warn .v{color:#b45309;}
#mrh.mrh-screen-payments-export-unified .pxu-filters{background:#fafafa;border:1px solid var(--mrh-border);border-radius:12px;padding:12px 14px;margin-bottom:16px;}
#mrh.mrh-screen-payments-export-unified .pxu-filters .grid{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;}
#mrh.mrh-screen-payments-export-unified .pxu-filters label{font-weight:700;font-size:11.5px;color:#374151;display:block;margin-bottom:3px;}
#mrh.mrh-screen-payments-export-unified .pxu-soc{margin-bottom:14px;}
#mrh.mrh-screen-payments-export-unified .pxu-soc-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px;padding:2px 2px 10px;}
#mrh.mrh-screen-payments-export-unified .pxu-soc-head h5{margin:0;font-weight:800;color:var(--mrh-ink);}
#mrh.mrh-screen-payments-export-unified .pxu-soc-head .alias{font-weight:400;color:var(--mrh-muted);}
#mrh.mrh-screen-payments-export-unified .pxu-soc-sub{font-weight:800;color:var(--mrh-ink);font-variant-numeric:tabular-nums;}
#mrh.mrh-screen-payments-export-unified .pxu-soc-sub .n{font-weight:500;color:var(--mrh-muted);font-size:12px;}
#mrh.mrh-screen-payments-export-unified .pxu-tbl{width:100%;}
#mrh.mrh-screen-payments-export-unified .pxu-tbl th{font-weight:700;color:#374151;font-size:11.5px;text-transform:uppercase;letter-spacing:.3px;border-bottom:2px solid #f3f4f6;}
#mrh.mrh-screen-payments-export-unified .pxu-tbl td,#mrh.mrh-screen-payments-export-unified .pxu-tbl th{vertical-align:middle;font-size:13px;}
#mrh.mrh-screen-payments-export-unified .pxu-tbl tbody tr{border-bottom:1px solid #f3f4f6;}
#mrh.mrh-screen-payments-export-unified .pxu-tbl tbody tr.is-paid{background:#f6fef9;}
#mrh.mrh-screen-payments-export-unified .pxu-tbl tbody tr.is-unsigned{background:#fffafa;}
#mrh.mrh-screen-payments-export-unified .pxu-name{font-weight:700;color:var(--mrh-ink);}
#mrh.mrh-screen-payments-export-unified .pxu-nif{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;color:var(--mrh-muted);}
#mrh.mrh-screen-payments-export-unified .pxu-iban{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;color:#374151;white-space:nowrap;}
#mrh.mrh-screen-payments-export-unified .pxu-amt{font-weight:800;font-size:14px;color:var(--mrh-ink);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;}
#mrh.mrh-screen-payments-export-unified .pill{display:inline-block;border-radius:999px;padding:2px 11px;font-size:11px;font-weight:800;letter-spacing:.2px;}
#mrh.mrh-screen-payments-export-unified .pill-paid{background:#dcfce7;color:#15803d;}
#mrh.mrh-screen-payments-export-unified .pill-pending{background:#fef3c7;color:#b45309;}
#mrh.mrh-screen-payments-export-unified .pill-sepa{background:#eef2ff;color:#3730a3;}
#mrh.mrh-screen-payments-export-unified .sig-mini{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:800;border-radius:999px;padding:2px 9px;white-space:nowrap;}
#mrh.mrh-screen-payments-export-unified .sig-mini.ok{background:#dcfce7;color:#15803d;}
#mrh.mrh-screen-payments-export-unified .sig-mini.no{background:#fee2e2;color:#b91c1c;}
#mrh.mrh-screen-payments-export-unified .pxu-row-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:wrap;}
#mrh.mrh-screen-payments-export-unified .pxu-row-actions form{margin:0;display:inline;}
#mrh.mrh-screen-payments-export-unified .btn-pay{background:var(--mrh-ink);border-color:var(--mrh-ink);color:#fff;font-weight:700;}
#mrh.mrh-screen-payments-export-unified .btn-pay:hover,#mrh.mrh-screen-payments-export-unified .btn-pay:focus{background:#a93226;border-color:#a93226;color:#fff;}
#mrh.mrh-screen-payments-export-unified .btn-remind{background:var(--mrh-surface);border:1px solid #f59e0b;color:#b45309;font-weight:700;}
#mrh.mrh-screen-payments-export-unified .btn-remind:hover,#mrh.mrh-screen-payments-export-unified .btn-remind:focus{background:#fffbeb;border-color:#d97706;color:#92400e;}
#mrh.mrh-screen-payments-export-unified .pxu-paid-meta{font-size:11px;color:#15803d;font-weight:700;white-space:nowrap;}
#mrh.mrh-screen-payments-export-unified .pxu-total{border-top:3px solid var(--mrh-ink);}
#mrh.mrh-screen-payments-export-unified .pxu-total .panel-body{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px;}
#mrh.mrh-screen-payments-export-unified .pxu-empty{background:var(--mrh-surface);border:1px dashed #d1d5db;border-radius:12px;padding:30px;text-align:center;color:var(--mrh-muted);}
#mrh.mrh-screen-payments-export-unified .pxu-bulkbar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%) translateY(160%);transition:transform .18s cubic-bezier(.16,1,.3,1);z-index:1040;background:#0f172a;color:#fff;border-radius:14px;padding:11px 16px;display:flex;gap:14px;align-items:center;box-shadow:0 12px 34px rgba(0,0,0,.30);max-width:94vw;flex-wrap:wrap;}
#mrh.mrh-screen-payments-export-unified .pxu-bulkbar.show{transform:translateX(-50%) translateY(0);}
#mrh.mrh-screen-payments-export-unified .pxu-bulkbar .cnt{font-weight:800;}
#mrh.mrh-screen-payments-export-unified .pxu-bulkbar form{margin:0;display:inline;}
#mrh.mrh-screen-payments-export-unified .pxu-bulkbar .btn-paybulk{background:#16a34a;border-color:#16a34a;color:#fff;font-weight:700;}
#mrh.mrh-screen-payments-export-unified .pxu-bulkbar .btn-paybulk:hover{background:#15803d;border-color:#15803d;}
#mrh.mrh-screen-payments-export-unified .pxu-bulkbar .btn-remindbulk{background:#f59e0b;border-color:#f59e0b;color:var(--mrh-ink);font-weight:700;}
#mrh.mrh-screen-payments-export-unified .pxu-bulkbar .btn-remindbulk:hover{background:#d97706;border-color:#d97706;color:#fff;}
#mrh.mrh-screen-payments-export-unified .pxu-notify{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:#e5e7eb;font-weight:600;}
#mrh.mrh-screen-payments-export-unified .pxu-notify input{width:15px;height:15px;}
#mrh.mrh-screen-payments-export-unified .pxu-check{width:16px;height:16px;cursor:pointer;}
#mrh.mrh-screen-payments-export-unified .pxu-gate-note{font-size:12px;color:var(--mrh-muted);background:#f9fafb;border:1px solid #eef0f2;border-radius:8px;padding:8px 12px;margin:2px 0 14px;line-height:1.5;}
#mrh.mrh-screen-cartero-index .mc-wrap{max-width:1180px;margin:0 auto;padding:4px 2px 40px;font-family:var(--magma-font,"Geist",system-ui,-apple-system,"Segoe UI",sans-serif);color:var(--magma-text,var(--mrh-ink));}
#mrh.mrh-screen-cartero-index .mc-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px;margin:6px 0 18px;}
#mrh.mrh-screen-cartero-index .mc-head h3{margin:0 0 4px;font-size:22px;font-weight:700;letter-spacing:-.02em;}
#mrh.mrh-screen-cartero-index .mc-head p{margin:0;color:var(--magma-text-muted,var(--mrh-muted));font-size:14px;max-width:640px;}
#mrh.mrh-screen-cartero-index .mc-run{display:inline-flex;align-items:center;gap:9px;background:var(--magma-accent,#d6202e);color:#fff;border:0;border-radius:10px;padding:11px 18px;font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 1px 2px rgba(214,32,46,.25);transition:filter .15s,transform .05s;}
#mrh.mrh-screen-cartero-index .mc-run:hover{filter:brightness(.94);}
#mrh.mrh-screen-cartero-index .mc-run:active{transform:translateY(1px);}
#mrh.mrh-screen-cartero-index .mc-lastread{display:block;text-align:right;margin-top:6px;color:var(--magma-text-faint,var(--mrh-muted));font-size:12px;}
#mrh.mrh-screen-cartero-index .mc-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px;}
#mrh.mrh-screen-cartero-index .mc-tabs{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 16px;border-bottom:1px solid var(--magma-border,var(--mrh-border));}
#mrh.mrh-screen-cartero-index .mc-tab{display:inline-flex;align-items:center;gap:7px;text-decoration:none;padding:9px 14px;font-size:14px;font-weight:600;color:var(--magma-text-muted,var(--mrh-muted));border-bottom:2px solid transparent;margin-bottom:-1px;border-radius:8px 8px 0 0;}
#mrh.mrh-screen-cartero-index .mc-tab:hover{color:var(--magma-text,var(--mrh-ink));background:var(--magma-surface-2,#f6f7f9);text-decoration:none;}
#mrh.mrh-screen-cartero-index .mc-tab.on{color:var(--magma-text,var(--mrh-ink));border-bottom-color:var(--magma-accent,#d6202e);}
.theme-dark #mrh.mrh-screen-cartero-index .mc-tab.on{color:#eceff4;}
#mrh.mrh-screen-cartero-index .mc-areas{display:flex;flex-wrap:wrap;gap:10px 26px;align-items:flex-start;margin:0 0 6px;}
#mrh.mrh-screen-cartero-index .mc-area__t{display:block;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--magma-text-muted,var(--mrh-muted));margin:0 0 6px;}
#mrh.mrh-screen-cartero-index .mc-area__t small{font-weight:600;text-transform:none;letter-spacing:0;color:var(--magma-text-faint,#98a1af);}
#mrh.mrh-screen-cartero-index .mc-area--otro{padding-left:22px;border-left:1px solid var(--magma-border,var(--mrh-border));}
@media (max-width:760px){#mrh.mrh-screen-cartero-index .mc-area--otro{padding-left:0;border-left:0;border-top:1px solid var(--magma-border,var(--mrh-border));padding-top:10px;width:100%;}}
#mrh.mrh-screen-cartero-index .mc-chip{display:inline-flex;align-items:center;gap:7px;text-decoration:none;border:1px solid var(--magma-border,var(--mrh-border));background:var(--magma-surface,var(--mrh-surface));color:#374151;border-radius:999px;padding:7px 14px;font-size:13px;font-weight:500;transition:.12s;}
#mrh.mrh-screen-cartero-index .mc-chip:hover{border-color:#c9ced6;color:var(--mrh-ink);}
#mrh.mrh-screen-cartero-index .mc-chip.on{background:#111827;border-color:#111827;color:#fff;}
#mrh.mrh-screen-cartero-index .mc-chip b{font-weight:700;}
#mrh.mrh-screen-cartero-index .mc-chip .dot{width:8px;height:8px;border-radius:50%;display:inline-block;}
#mrh.mrh-screen-cartero-index .mc-bulk{display:flex;align-items:center;gap:14px;background:var(--magma-surface-2,#f8f9fb);border:1px solid var(--magma-border,var(--mrh-border));border-radius:12px;padding:9px 14px;margin:0 0 10px;font-size:13.5px;}
#mrh.mrh-screen-cartero-index .mc-bulk label{display:inline-flex;align-items:center;gap:8px;margin:0;font-weight:500;color:#374151;cursor:pointer;}
#mrh.mrh-screen-cartero-index .mc-bulk input[type=checkbox]{width:16px;height:16px;margin:0;accent-color:var(--magma-accent,#d6202e);cursor:pointer;}
#mrh.mrh-screen-cartero-index .mc-bulkbtn{margin-left:auto;display:inline-flex;align-items:center;gap:7px;background:#111827;color:#fff;border:0;border-radius:9px;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;transition:.12s;}
#mrh.mrh-screen-cartero-index .mc-bulkbtn:disabled{opacity:.35;cursor:default;}
#mrh.mrh-screen-cartero-index .mc-bulkbtn:not(:disabled):hover{background:#000;}
#mrh.mrh-screen-cartero-index .mc-bulkhint{color:var(--magma-text-faint,var(--mrh-muted));font-size:12px;}
#mrh.mrh-screen-cartero-index .mc-list{background:var(--magma-surface,var(--mrh-surface));border:1px solid #e8eaed;border-radius:14px;overflow:hidden;box-shadow:var(--magma-shadow-card,0 1px 2px rgba(16,24,40,.04));}
#mrh.mrh-screen-cartero-index .mc-row{display:flex;align-items:center;gap:11px;padding:10px 14px;border-top:1px solid #f1f3f6;transition:background .12s;}
#mrh.mrh-screen-cartero-index .mc-row:first-child{border-top:0;}
#mrh.mrh-screen-cartero-index .mc-row:hover{background:var(--magma-surface-2,#f8f9fb);}
#mrh.mrh-screen-cartero-index .mc-row.busy{opacity:.45;pointer-events:none;}
#mrh.mrh-screen-cartero-index .mc-check{width:16px;height:16px;margin:0;flex:0 0 auto;accent-color:var(--magma-accent,#d6202e);cursor:pointer;}
#mrh.mrh-screen-cartero-index .mc-nocheck{width:16px;flex:0 0 auto;}
#mrh.mrh-screen-cartero-index .mc-ric{width:30px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:13px;flex:0 0 auto;}
#mrh.mrh-screen-cartero-index .mc-rbody{flex:1;min-width:0;}
#mrh.mrh-screen-cartero-index .mc-rt{display:flex;align-items:baseline;gap:8px;min-width:0;}
#mrh.mrh-screen-cartero-index .mc-rt .nm{font-size:14.5px;font-weight:700;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
#mrh.mrh-screen-cartero-index .mc-rt .ty{font-size:11.5px;color:var(--magma-text-muted,var(--mrh-muted));white-space:nowrap;flex:0 0 auto;}
#mrh.mrh-screen-cartero-index .mc-via{font-size:10.5px;font-weight:600;background:#eef2ff;color:#3730a3;border-radius:6px;padding:1px 6px;white-space:nowrap;flex:0 0 auto;}
#mrh.mrh-screen-cartero-index .mc-conf{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;padding:1px 8px;border-radius:999px;white-space:nowrap;flex:0 0 auto;}
#mrh.mrh-screen-cartero-index .mc-conf .dot{width:6px;height:6px;border-radius:50%;}
#mrh.mrh-screen-cartero-index .mc-rs{font-size:12.5px;color:var(--magma-text-muted,var(--mrh-muted));margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#mrh.mrh-screen-cartero-index .mc-rs .warn{color:#92400e;font-weight:600;}
#mrh.mrh-screen-cartero-index .mc-rs .upd{color:#9a3412;}
#mrh.mrh-screen-cartero-index .mc-rs a.doc{color:#374151;text-decoration:none;border-bottom:1px dotted #c9ced6;}
#mrh.mrh-screen-cartero-index .mc-rs a.doc:hover{color:var(--mrh-ink);}
#mrh.mrh-screen-cartero-index .mc-ract{display:flex;align-items:center;gap:6px;flex:0 0 auto;}
#mrh.mrh-screen-cartero-index .mc-ract form{margin:0;}
#mrh.mrh-screen-cartero-index .mc-acc,#mrh.mrh-screen-cartero-index .mc-open{display:inline-flex;align-items:center;gap:6px;background:#111827;color:#fff;text-decoration:none;border:0;border-radius:8px;padding:7px 12px;font-size:12.5px;font-weight:600;cursor:pointer;transition:.12s;white-space:nowrap;}
#mrh.mrh-screen-cartero-index .mc-acc:hover,#mrh.mrh-screen-cartero-index .mc-open:hover{background:#000;color:#fff;}
#mrh.mrh-screen-cartero-index .mc-open{background:var(--magma-surface,var(--mrh-surface));color:var(--mrh-ink);border:1px solid var(--magma-border,var(--mrh-border));}
#mrh.mrh-screen-cartero-index .mc-open:hover{background:var(--magma-surface-2,#f8f9fb);color:var(--mrh-ink);border-color:#c9ced6;}
#mrh.mrh-screen-cartero-index .mc-dis{display:inline-flex;align-items:center;justify-content:center;background:var(--magma-surface,var(--mrh-surface));color:var(--mrh-muted);border:1px solid var(--magma-border,var(--mrh-border));border-radius:8px;width:32px;height:32px;font-size:13px;cursor:pointer;transition:.12s;}
#mrh.mrh-screen-cartero-index .mc-dis:hover{border-color:#fca5a5;color:#b91c1c;}
#mrh.mrh-screen-cartero-index .mc-empty-state{text-align:center;padding:64px 24px;background:var(--magma-surface,var(--mrh-surface));border:1px dashed #dfe3e8;border-radius:18px;}
#mrh.mrh-screen-cartero-index .mc-empty-state .em{font-size:34px;}
#mrh.mrh-screen-cartero-index .mc-empty-state h4{margin:12px 0 4px;font-size:18px;font-weight:700;}
#mrh.mrh-screen-cartero-index .mc-empty-state p{margin:0;color:var(--magma-text-muted,var(--mrh-muted));font-size:14px;}
#mrh.mrh-screen-cartero-index .mc-rule{margin:26px auto 0;max-width:1180px;text-align:center;color:var(--magma-text-faint,var(--mrh-muted));font-size:12.5px;}
#mrh.mrh-screen-cartero-index .mc-rule b{color:var(--magma-text-muted,var(--mrh-muted));font-weight:600;}
#mrh.mrh-screen-cartero-index .mc-off{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:14px;padding:16px 18px;font-size:14px;}
.theme-dark #mrh.mrh-screen-cartero-index .mc-list,.theme-dark #mrh.mrh-screen-cartero-index .mc-hist,.theme-dark #mrh.mrh-screen-cartero-index .mc-espera,.theme-dark #mrh.mrh-screen-cartero-index .mc-empty-state{border-color:var(--magma-border,#2b313d);}
.theme-dark #mrh.mrh-screen-cartero-index .mc-row,.theme-dark #mrh.mrh-screen-cartero-index .mc-hrow,.theme-dark #mrh.mrh-screen-cartero-index .mc-esrow,.theme-dark #mrh.mrh-screen-cartero-index .mc-espera[open] summary{border-top-color:var(--magma-border-soft,#232936);border-bottom-color:var(--magma-border-soft,#232936);}
.theme-dark #mrh.mrh-screen-cartero-index .mc-rt .nm,.theme-dark #mrh.mrh-screen-cartero-index .mc-hist h4,.theme-dark #mrh.mrh-screen-cartero-index .mc-htxt .t,.theme-dark #mrh.mrh-screen-cartero-index .mc-esrow .nm,.theme-dark #mrh.mrh-screen-cartero-index .mc-bulk label{color:var(--magma-text,#eceff4);}
.theme-dark #mrh.mrh-screen-cartero-index .mc-chip{color:var(--magma-text,#eceff4);}
.theme-dark #mrh.mrh-screen-cartero-index .mc-chip.on{background:var(--magma-accent,#d6202e);border-color:var(--magma-accent,#d6202e);color:#fff;}
.theme-dark #mrh.mrh-screen-cartero-index .mc-acc{background:var(--magma-accent,#d6202e);}
.theme-dark #mrh.mrh-screen-cartero-index .mc-acc:hover{background:var(--magma-accent-strong,#b3151f);}
.theme-dark #mrh.mrh-screen-cartero-index .mc-open{color:var(--magma-text,#eceff4);}
.theme-dark #mrh.mrh-screen-cartero-index .mc-bulkbtn{background:var(--magma-accent,#d6202e);}
.theme-dark #mrh.mrh-screen-cartero-index .mc-rs a.doc{color:var(--magma-text-muted,#9aa4b4);border-bottom-color:#3a4150;}
.theme-dark #mrh.mrh-screen-cartero-index .mc-via{background:#242b45;color:#aab6ff;}
.theme-dark #mrh.mrh-screen-cartero-index .mc-esrow .why,.theme-dark #mrh.mrh-screen-cartero-index .mc-htxt .d{color:var(--magma-text-faint,#6b7482);}
/* 14-sep-2026 · Cartero: avatar con insignia de tipo + barra de filtros (local, razón social…) */
#mrh.mrh-screen-cartero-index .mc-av{position:relative;display:inline-flex;flex:0 0 auto;}
#mrh.mrh-screen-cartero-index .mc-av__b{position:absolute;right:-4px;bottom:-3px;width:17px;height:17px;border-radius:50%;color:#fff;font-size:8.5px;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px var(--magma-surface,var(--mrh-surface));}
#mrh.mrh-screen-cartero-index .mc-row:hover .mc-av__b{box-shadow:0 0 0 2px var(--magma-surface-2,#f8f9fb);}
#mrh.mrh-screen-cartero-index .mc-rs .loc{color:var(--mrh-ink);font-weight:600;}
#mrh.mrh-screen-cartero-index .mc-rs .deduc{font-size:11px;color:var(--magma-text-faint,#98a1af);}
#mrh.mrh-screen-cartero-index .mc-rs a.upd{color:#9a3412;text-decoration:none;border-bottom:1px dotted #f0b89a;}
#mrh.mrh-screen-cartero-index .mc-rs a.upd:hover{color:#7c2d12;}
#mrh.mrh-screen-cartero-index .mc-filtros{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 10px;margin:4px 0 16px;padding:12px;background:var(--magma-surface,var(--mrh-surface));border:1px solid var(--magma-border,var(--mrh-border));border-radius:14px;}
#mrh.mrh-screen-cartero-index .mc-q{position:relative;flex:1 1 220px;min-width:0;margin:0;font-weight:400;}
#mrh.mrh-screen-cartero-index .mc-q .fa{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--mrh-muted);font-size:13px;pointer-events:none;}
#mrh.mrh-screen-cartero-index .mc-q input{width:100%;min-height:38px;border:1px solid var(--magma-border,var(--mrh-border));border-radius:10px;background:var(--magma-surface,var(--mrh-surface));color:var(--mrh-ink);font:inherit;font-size:13.5px;padding:8px 10px 8px 32px;box-shadow:none;}
#mrh.mrh-screen-cartero-index .mc-q input:focus,#mrh.mrh-screen-cartero-index .mc-sel select:focus{outline:2px solid var(--mrh-ink);outline-offset:1px;border-color:var(--mrh-ink);}
#mrh.mrh-screen-cartero-index .mc-sel{display:flex;flex-direction:column;gap:4px;margin:0;min-width:0;flex:0 1 auto;font-weight:400;}
#mrh.mrh-screen-cartero-index .mc-sel__l{font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--mrh-muted);line-height:1;}
#mrh.mrh-screen-cartero-index .mc-sel select{min-height:38px;max-width:220px;width:100%;border:1px solid var(--magma-border,var(--mrh-border));border-radius:10px;background-color:var(--magma-surface,var(--mrh-surface));color:var(--mrh-ink);font:inherit;font-size:13px;font-weight:600;padding:7px 28px 7px 10px;box-shadow:none;text-overflow:ellipsis;}
#mrh.mrh-screen-cartero-index .mc-sel.on select{border-color:var(--mrh-ink);box-shadow:inset 0 0 0 1px var(--mrh-ink);}
#mrh.mrh-screen-cartero-index .mc-sel.on .mc-sel__l{color:var(--mrh-ink);}
#mrh.mrh-screen-cartero-index .mc-filtros__go{min-height:38px;background:#111827;color:#fff;border:0;border-radius:10px;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer;}
#mrh.mrh-screen-cartero-index .mc-filtros.js .mc-filtros__go{display:none;}
#mrh.mrh-screen-cartero-index .mc-filtros__clear{align-self:center;margin-top:14px;font-size:13px;font-weight:600;color:var(--mrh-ink);text-decoration:none;border-bottom:1px solid currentColor;white-space:nowrap;}
.theme-dark #mrh.mrh-screen-cartero-index .mc-filtros__go{background:var(--magma-accent,#d6202e);}
.theme-dark #mrh.mrh-screen-cartero-index .mc-rs .loc,.theme-dark #mrh.mrh-screen-cartero-index .mc-filtros__clear{color:var(--magma-text,#eceff4);}
@media (max-width:640px){#mrh.mrh-screen-cartero-index .mc-filtros{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:10px;}
#mrh.mrh-screen-cartero-index .mc-q{grid-column:1 / -1;}
/* mobile_first.css fuerza padding 12px 14px !important a todo input: la lupa quedaba encima del texto. Se mantiene el 16px (sin zoom en iOS). */
#mrh.mrh-screen-cartero-index .mc-q input{padding:9px 12px 9px 36px !important;}
#mrh.mrh-screen-cartero-index .mc-sel select{max-width:none;padding:8px 26px 8px 10px !important;font-size:16px !important;}
#mrh.mrh-screen-cartero-index .mc-filtros__clear{grid-column:1 / -1;justify-self:start;margin-top:0;}}
@media (max-width:640px){#mrh.mrh-screen-cartero-index .mc-head{flex-direction:column;align-items:stretch;}
#mrh.mrh-screen-cartero-index .mc-row{flex-wrap:nowrap;align-items:flex-start;padding:11px 12px;}
#mrh.mrh-screen-cartero-index .mc-rbody{flex:1 1 0;}
#mrh.mrh-screen-cartero-index .mc-nocheck{display:none;}
#mrh.mrh-screen-cartero-index .mc-ract{flex-direction:column;gap:6px;}
#mrh.mrh-screen-cartero-index .mc-rt{flex-wrap:wrap;row-gap:2px;}
#mrh.mrh-screen-cartero-index .mc-rt .nm{white-space:normal;display:block;width:100%;line-height:1.25;}
#mrh.mrh-screen-cartero-index .mc-rs{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
#mrh.mrh-screen-cartero-index .mc-ract{margin-left:auto;}
#mrh.mrh-screen-cartero-index .mc-acc .lbl,#mrh.mrh-screen-cartero-index .mc-open .lbl{display:none;}
#mrh.mrh-screen-cartero-index .mc-acc,#mrh.mrh-screen-cartero-index .mc-open{padding:7px 10px;}
#mrh.mrh-screen-cartero-index .mc-bulk{flex-wrap:wrap;row-gap:8px;}
#mrh.mrh-screen-cartero-index .mc-bulkhint{display:none;}}
#mrh.mrh-screen-cartero-index .mc-espera{margin-top:18px;background:var(--magma-surface,var(--mrh-surface));border:1px dashed #e8eaed;border-radius:14px;}
#mrh.mrh-screen-cartero-index .mc-espera summary{cursor:pointer;padding:12px 18px;font-size:13.5px;font-weight:600;color:var(--mrh-muted);list-style:none;display:flex;align-items:center;gap:8px;}
#mrh.mrh-screen-cartero-index .mc-espera summary::-webkit-details-marker{display:none;}
#mrh.mrh-screen-cartero-index .mc-espera[open] summary{border-bottom:1px solid #f1f3f6;}
#mrh.mrh-screen-cartero-index .mc-esrow{display:flex;gap:10px;align-items:center;padding:7px 18px;border-top:1px solid #f6f7f9;font-size:12.5px;color:#4b5563;}
#mrh.mrh-screen-cartero-index .mc-esrow:first-of-type{border-top:0;}
#mrh.mrh-screen-cartero-index .mc-esrow .nm{font-weight:600;color:var(--mrh-ink);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#mrh.mrh-screen-cartero-index .mc-esrow .why{color:var(--mrh-muted);white-space:nowrap;}
#mrh.mrh-screen-cartero-index .mc-esrow a{color:#b91c1c;text-decoration:none;white-space:nowrap;}
#mrh.mrh-screen-cartero-index .mc-hist{margin-top:26px;background:var(--magma-surface,var(--mrh-surface));border:1px solid #e8eaed;border-radius:18px;padding:18px 20px;}
#mrh.mrh-screen-cartero-index .mc-hist h4{margin:0 0 12px;font-size:15px;font-weight:700;color:var(--mrh-ink);display:flex;align-items:center;gap:8px;}
#mrh.mrh-screen-cartero-index .mc-hist h4 .fa{color:var(--mrh-muted);}
#mrh.mrh-screen-cartero-index .mc-hrow{display:flex;gap:11px;align-items:flex-start;padding:8px 0;border-top:1px solid #f1f3f6;}
#mrh.mrh-screen-cartero-index .mc-hrow:first-of-type{border-top:0;}
#mrh.mrh-screen-cartero-index .mc-hic{width:26px;height:26px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;flex:0 0 auto;margin-top:1px;}
#mrh.mrh-screen-cartero-index .mc-hic.ok{background:#ecfdf5;color:#059669;}
#mrh.mrh-screen-cartero-index .mc-hic.off{background:#f3f4f6;color:var(--mrh-muted);}
#mrh.mrh-screen-cartero-index .mc-hic.lote{background:#eff6ff;color:#2563eb;}
#mrh.mrh-screen-cartero-index .mc-heff{font-size:12px;color:var(--magma-text-muted,var(--mrh-muted));margin-top:3px;display:flex;gap:5px;align-items:baseline;flex-wrap:wrap;}
#mrh.mrh-screen-cartero-index .mc-heff .fa{font-size:9px;color:var(--mrh-muted);}
#mrh.mrh-screen-cartero-index .mc-heff a{color:var(--magma-info,#3b6fb0);font-weight:600;}
#mrh.mrh-screen-cartero-index .mc-heff--ojo{color:var(--magma-warning,#c97a0e);}
#mrh.mrh-screen-cartero-index .mc-heff--ojo .fa{color:var(--magma-warning,#c97a0e);}
#mrh.mrh-screen-cartero-index .mc-htxt{min-width:0;}
#mrh.mrh-screen-cartero-index .mc-htxt .t{font-size:13.5px;font-weight:600;color:var(--mrh-ink);line-height:1.3;}
#mrh.mrh-screen-cartero-index .mc-htxt .d{font-size:12px;color:var(--mrh-muted);margin-top:1px;}
#mrh.mrh-screen-configuration-panel .cfg-panel-page{padding: 14px;max-width: 1080px;margin: 0 auto;}
#mrh.mrh-screen-configuration-panel .cfg-tabs-grid{display: grid;grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));gap: 14px;margin-top: 14px;}
#mrh.mrh-screen-configuration-panel .cfg-tab-card{background: var(--mrh-surface);border: 1px solid var(--mrh-border);border-radius: 10px;padding: 18px;text-decoration: none;color: var(--mrh-ink);transition: all .15s ease;cursor: pointer;display: block;}
#mrh.mrh-screen-configuration-panel .cfg-tab-card:hover{border-color: #c0392b;box-shadow: 0 4px 10px rgba(0,0,0,.06);transform: translateY(-1px);}
#mrh.mrh-screen-configuration-panel .cfg-tab-card .icon{font-size: 32px;line-height: 1;margin-bottom: 10px;display: block;}
#mrh.mrh-screen-configuration-panel .cfg-tab-card .lbl{font-weight: 700;font-size: 15px;}
#mrh.mrh-screen-configuration-panel .cfg-tab-card .desc{font-size: 12px;color: var(--mrh-muted);margin-top: 6px;}
@media  (max-width: 600px) {#mrh.mrh-screen-configuration-panel .cfg-tabs-grid{grid-template-columns: 1fr;}}
#mrh.mrh-screen-payroll-cierre.cie{--red:#d6202e;--ink:#111827;--muted:#6b7280;--line:#e5e7eb;--blue:#2563eb;--green:#15803d;--amber:#b45309;}
#mrh.mrh-screen-payroll-cierre.cie h1{font-size:22px;font-weight:700;color:var(--ink);margin:0 0 3px;}
#mrh.mrh-screen-payroll-cierre.cie .sub{color:var(--muted);font-size:13px;margin:0 0 4px;}
#mrh.mrh-screen-payroll-cierre.cie .back{display:inline-block;font-size:12.5px;color:var(--muted);text-decoration:none;margin:0 0 16px;}
#mrh.mrh-screen-payroll-cierre.cie .back:hover{color:var(--red);}
#mrh.mrh-screen-payroll-cierre .cie-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px;}
#mrh.mrh-screen-payroll-cierre .cie-kpi{background:var(--mrh-surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;text-align:center;}
#mrh.mrh-screen-payroll-cierre .cie-kpi .v{font-size:26px;font-weight:800;color:var(--ink);line-height:1;}
#mrh.mrh-screen-payroll-cierre .cie-kpi .l{font-size:11.5px;color:var(--muted);margin-top:6px;}
#mrh.mrh-screen-payroll-cierre .cie-step{display:flex;gap:16px;background:var(--mrh-surface);border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin-bottom:14px;}
#mrh.mrh-screen-payroll-cierre .cie-step .n{width:34px;height:34px;border-radius:50%;background:var(--red);color:#fff;font-weight:800;font-size:16px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
#mrh.mrh-screen-payroll-cierre .cie-step .body{flex:1;min-width:0;}
#mrh.mrh-screen-payroll-cierre .cie-step h3{font-size:16px;font-weight:800;color:var(--ink);margin:2px 0 6px;}
#mrh.mrh-screen-payroll-cierre .cie-step p{font-size:13.5px;color:var(--muted);margin:0 0 12px;line-height:1.5;}
#mrh.mrh-screen-payroll-cierre .cie-step .big{font-size:15px;color:var(--ink);font-weight:700;}
#mrh.mrh-screen-payroll-cierre .cie-step .big b.on{color:var(--green);}
#mrh.mrh-screen-payroll-cierre .cie-step .big b.off{color:var(--amber);}
#mrh.mrh-screen-payroll-cierre .cie-btns{display:flex;flex-wrap:wrap;gap:10px;}
#mrh.mrh-screen-payroll-cierre .cie-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:9px;font-size:13.5px;font-weight:700;text-decoration:none;border:1px solid transparent;}
#mrh.mrh-screen-payroll-cierre .cie-btn.p{background:var(--red);color:#fff;}
#mrh.mrh-screen-payroll-cierre .cie-btn.p:hover{background:#a8121d;color:#fff;text-decoration:none;}
#mrh.mrh-screen-payroll-cierre .cie-btn.b{background:var(--blue);color:#fff;}
#mrh.mrh-screen-payroll-cierre .cie-btn.b:hover{background:#1d4fd0;color:#fff;text-decoration:none;}
#mrh.mrh-screen-payroll-cierre .cie-btn.g{background:var(--green);color:#fff;}
#mrh.mrh-screen-payroll-cierre .cie-btn.g:hover{background:#126a33;color:#fff;text-decoration:none;}
#mrh.mrh-screen-payroll-cierre .cie-btn.o{background:var(--mrh-surface);color:var(--ink);border-color:var(--line);}
#mrh.mrh-screen-payroll-cierre .cie-btn.o:hover{border-color:var(--red);color:var(--red);text-decoration:none;}
#mrh.mrh-screen-payroll-cierre .cie-bar{height:10px;border-radius:999px;background:#eef0f3;overflow:hidden;margin:2px 0 12px;max-width:360px;}
#mrh.mrh-screen-payroll-cierre .cie-bar > span{display:block;height:100%;background:var(--green);}
#mrh.mrh-screen-payroll-cierre .cie-note{font-size:12.5px;color:var(--amber);background:#fff8e1;border:1px solid #ffe0a3;border-radius:8px;padding:10px 12px;margin-top:10px;}
#mrh.mrh-screen-payroll-cierre .cie-ok{color:var(--green);font-weight:700;}
@media  (max-width:640px){#mrh.mrh-screen-payroll-cierre .cie-kpis{grid-template-columns:1fr 1fr;}
#mrh.mrh-screen-payroll-cierre .cie-step{flex-direction:column;gap:10px;}}
.theme-dark #mrh.mrh-screen-payroll-cierre.cie{--ink:#e9edf3;--muted:#98a1af;--line:#2a2f3a;}
.theme-dark #mrh.mrh-screen-payroll-cierre .cie-kpi,.theme-dark #mrh.mrh-screen-payroll-cierre .cie-step{background:#15181f;}
.theme-dark #mrh.mrh-screen-payroll-cierre .cie-btn.o{background:#15181f;}
.theme-dark #mrh.mrh-screen-payroll-cierre .cie-bar{background:#2a2f3a;}
#mrh.mrh-leaves .mrl-ajuste-btn{border:1px solid var(--magma-border,var(--mrh-border));background:var(--magma-surface,var(--mrh-surface));color:var(--magma-text-muted,var(--mrh-muted));border-radius:7px;padding:3px 9px;font-size:12px;cursor:pointer;}
#mrh.mrh-leaves .mrl-ajuste-btn:hover{border-color:var(--magma-accent,#d6202e);color:var(--magma-accent,#d6202e);}
#mrh.mrh-leaves .mrl-ajuste{grid-column:1/-1;margin-top:8px;padding:10px 12px;border-top:1px solid var(--magma-border,var(--mrh-border));}
#mrh.mrh-leaves .mrl-ajuste[hidden]{display:none;}
#mrh.mrh-leaves .mrl-ajuste-form{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;}
#mrh.mrh-leaves .mrl-ajuste-form label{display:flex;flex-direction:column;gap:3px;font-size:11.5px;color:var(--magma-text-muted,var(--mrh-muted));flex:1;min-width:150px;}
#mrh.mrh-leaves .mrl-ajuste-form input{height:32px;border:1px solid var(--magma-border,var(--mrh-border));border-radius:7px;padding:0 9px;font-size:13px;}
#mrh.mrh-leaves .mrl-ajuste-ok{height:32px;padding:0 14px;border:0;border-radius:7px;background:var(--magma-accent,#d6202e);color:#fff;font-weight:600;font-size:13px;cursor:pointer;}
#mrh.mrh-leaves .mrl-ajuste-no{height:32px;padding:0 10px;border:0;background:none;color:var(--magma-text-muted,var(--mrh-muted));font-size:12.5px;cursor:pointer;text-decoration:underline;}
#mrh.mrh-refresh { --magma-surface:var(--mrh-surface); --magma-surface-2:var(--mrh-surface-2); --magma-surface-3:var(--mrh-surface-3); --magma-text:var(--mrh-text); --magma-text-strong:var(--mrh-ink); --magma-text-muted:var(--mrh-muted); --magma-text-faint:var(--mrh-muted-2); --magma-border:var(--mrh-border); --magma-border-soft:var(--mrh-border-soft); }
#mrh.mrh-refresh .panel_s .panel-body { padding:20px; border:1px solid var(--mrh-border); border-radius:var(--mrh-r-box); background:var(--mrh-surface); }
#mrh.mrh-refresh .btn-primary,
#mrh.mrh-refresh .btn-info,
#mrh.mrh-refresh .btn-success,
#mrh.mrh-refresh .mrl-ww-btn-primary,
#mrh.mrh-refresh .mrl-ww-btn-green,
#mrh.mrh-refresh .mrl-ajuste-ok { background:var(--mrh-ink) !important; border-color:var(--mrh-ink) !important; color:var(--mrh-surface) !important; }
#mrh.mrh-refresh .btn { min-height:38px; white-space:normal; border-radius:var(--mrh-r-btn); }
#mrh.mrh-refresh .form-control { background:var(--mrh-surface); color:var(--mrh-ink); border-color:var(--mrh-border); min-height:40px; }
#mrh.mrh-refresh label { color:var(--mrh-text); font-size:13px; }
#mrh.mrh-refresh input:focus-visible,
#mrh.mrh-refresh select:focus-visible,
#mrh.mrh-refresh textarea:focus-visible,
#mrh.mrh-refresh button:focus-visible,
#mrh.mrh-refresh a:focus-visible { outline:2px solid var(--mrh-ink); outline-offset:2px; }
#mrh.mrh-refresh .magma-tab-link.is-active { color:var(--mrh-ink) !important; border-bottom-color:var(--mrh-ink); }
#mrh.mrh-refresh .mrh-units { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:12px; margin-bottom:18px; }
#mrh.mrh-refresh .mrh-unit { background:var(--mrh-surface); border:1px solid var(--mrh-border); padding:16px; border-radius:var(--mrh-r-box); }
#mrh.mrh-refresh .mrh-unit h3 { margin:0 0 12px; font-size:16px; color:var(--mrh-ink); }
#mrh.mrh-refresh .mrh-unit dl { display:grid; grid-template-columns:1fr auto; gap:8px; margin:0; }
#mrh.mrh-refresh .mrh-unit dd { text-align:right; font-weight:600; color:var(--mrh-ink); }
#mrh.mrh-refresh .mrh-balance-note { color:var(--mrh-muted); line-height:1.6; font-size:13px; margin:12px 0; }
#mrh.mrh-refresh .mrl-ww-kpis { grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); }
@media(max-width:640px) {
 #mrh.mrh-refresh .panel_s .panel-body { padding:16px; }
 #mrh.mrh-refresh .mrl-num-block { flex-wrap:wrap; }
 #mrh.mrh-refresh .mrl-ajuste-form label { min-width:0; flex-basis:100%; }
 #mrh.mrh-refresh .mrh-units { grid-template-columns:1fr; }
 #mrh.mrh-refresh .mrl-ww-section { padding:14px; }
}

/* Revisión de horas: detalle desplegable y búsqueda local. */
#mrh .mrh-oh-detail>summary{cursor:pointer;display:list-item;list-style-position:inside;padding:16px;font-weight:650;}
#mrh .mrh-oh-detail>summary:focus-visible{outline:2px solid var(--mrh-ink);outline-offset:2px;}
#mrh .mrh-oh-detail tr[hidden]{display:none!important;}
#mrh .mrh-oh-search{margin:16px 0;max-width:540px;}
#mrh .mrh-oh-search label{display:block;margin-bottom:6px;}
#mrh .mrh-oh-search [role=status]{display:block;margin-top:6px;color:var(--mrh-muted);}

#mrh.mrh-leaves .balance-card{padding:16px;gap:14px;}
#mrh.mrh-leaves .balance-card .mrl-actions{flex-direction:row;flex-wrap:wrap;gap:6px;padding-top:10px;}
@media(min-width:992px){
#mrh.mrh-leaves .balance-card{flex-wrap:nowrap;}
#mrh.mrh-leaves .balance-card .mrl-body{flex:1 1 auto;min-width:0;}
#mrh.mrh-leaves .balance-card .mrl-actions{width:auto;max-width:165px;border-top:0;padding-top:0;flex:0 0 165px;}
#mrh.mrh-leaves .balance-card:has(.mrl-ajuste:not([hidden])){flex-wrap:wrap;}
}
#mrh .mrh-oh-detail>summary::after{content:'Ver detalle ▾';font-size:12px;font-weight:500;display:block;color:var(--mrh-muted);margin-top:4px;}
#mrh .mrh-oh-detail[open]>summary::after{content:'Ocultar detalle ▴';}

/* Administración y avisos: estilos del módulo, aislados de Perfex. */
@media  print {#mrh.mrh-more #header,#mrh.mrh-more .menu,#mrh.mrh-more .menu-wrapper,#mrh.mrh-more .footer,#mrh.mrh-more .sidebar,#mrh.mrh-more .breadcrumb,#mrh.mrh-more .btn,#mrh.mrh-more button,#mrh.mrh-more form{display: none  !important;}
#mrh.mrh-more .panel_s{box-shadow: none  !important;border: 0  !important;}}
#mrh.mrh-more .mel-tbl{width:100%;border-collapse:collapse;font-size:13px;}
#mrh.mrh-more .mel-tbl th{background:#f9fafb;text-transform:uppercase;font-size:11px;color:var(--mrh-muted);padding:8px 10px;border-bottom:1px solid var(--mrh-border);text-align:left;}
#mrh.mrh-more .mel-tbl td{padding:8px 10px;border-bottom:1px solid #f3f4f6;vertical-align:top;}
#mrh.mrh-more .mel-tbl tr:hover{background:#fafafa;cursor:pointer;}
#mrh.mrh-more .mel-status{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;}
#mrh.mrh-more .mel-status.sent{background:#d1fae5;color:#065f46;}
#mrh.mrh-more .mel-status.failed{background:#fee2e2;color:#991b1b;}
#mrh.mrh-more .mel-status.queued{background:#fef3c7;color:#92400e;}
#mrh.mrh-more .mel-related{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;background:#e0e7ff;color:#3730a3;}
#mrh.mrh-more .mel-redirected{font-size:10px;color:var(--mrh-muted);}
#mrh.mrh-more .mh-ws-name{display:inline-flex;align-items:center;gap:9px;}
#mrh.mrh-more .mh-ws-name .mh-avatar{border-radius:7px;object-fit:cover;display:inline-block;vertical-align:middle;flex:0 0 auto;background:var(--mrh-surface);box-shadow:inset 0 0 0 1px rgba(16,24,40,.12);}
#mrh.mrh-more .mh-ws-name .mh-avatar-mono{display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;box-shadow:none;}
#mrh.mrh-more .mrr-sr-cat{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:10px;padding:16px;margin-bottom:14px;}
#mrh.mrh-more .mrr-sr-cat h4{margin:0 0 12px;font-size:14px;color:#c0392b;}
#mrh.mrh-more .mrr-sr-table{width:100%;font-size:13px;}
#mrh.mrh-more .mrr-sr-table th{background:#f3f4f6;padding:6px 10px;font-size:11px;text-align:left;color:var(--mrh-muted);text-transform:uppercase;}
#mrh.mrh-more .mrr-sr-table td{padding:6px 10px;vertical-align:top;border-bottom:1px solid #f3f4f6;}
#mrh.mrh-more .mrr-sr-table code{font-size:11px;color:#0a7c44;background:#f0fdf4;padding:1px 6px;border-radius:4px;}
#mrh.mrh-more .mrr-sr-val{font-family:ui-monospace,Menlo,monospace;font-size:12px;background:#f9fafb;padding:2px 6px;border-radius:4px;max-width:280px;overflow:hidden;text-overflow:ellipsis;display:inline-block;white-space:nowrap;vertical-align:middle;}
#mrh.mrh-more .mr-imp-card{padding:18px;margin-bottom:14px;border-radius:6px;background:var(--mrh-surface);box-shadow:0 1px 3px rgba(0,0,0,.05);}
#mrh.mrh-more .mr-imp-card h4{margin-top:0;color:#E67E22;}
#mrh.mrh-more .mr-orange{color:#E67E22;font-weight:600;}
#mrh.mrh-more .mr-row-changed td{background:#fff3e0;}
#mrh.mrh-more .mr-pill{display:inline-block;padding:1px 8px;border-radius:10px;font-size:11px;}
#mrh.mrh-more .mr-pill-add{background:#d4edda;color:#155724;}
#mrh.mrh-more .mr-pill-del{background:#f8d7da;color:#721c24;text-decoration:line-through;}
#mrh.mrh-more .mr-imp-section{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:8px;margin-bottom:12px;}
#mrh.mrh-more .mr-imp-section summary{padding:12px 16px;cursor:pointer;font-weight:600;font-size:15px;list-style:none;display:flex;align-items:center;gap:10px;}
#mrh.mrh-more .mr-imp-section summary::before{content:"▶";transition:transform .15s;font-size:11px;color:var(--mrh-muted);}
#mrh.mrh-more .mr-imp-section[open] > summary::before{transform:rotate(90deg);}
#mrh.mrh-more .mr-imp-section .mr-imp-section-body{padding:0 16px 16px;}
#mrh.mrh-more .mr-imp-section .badge-count{background:#f3f4f6;color:#374151;padding:2px 10px;border-radius:12px;font-size:12px;font-weight:500;}
#mrh.mrh-more .mr-imp-section.alta summary{background:#ecfdf5;border-left:4px solid #10b981;}
#mrh.mrh-more .mr-imp-section.alta .badge-count{background:#10b981;color:#fff;}
#mrh.mrh-more .mr-imp-section.baja summary{background:#fef2f2;border-left:4px solid #dc2626;}
#mrh.mrh-more .mr-imp-section.baja .badge-count{background:#dc2626;color:#fff;}
#mrh.mrh-more .mr-imp-section.cambio summary{background:#fef3c7;border-left:4px solid #f59e0b;}
#mrh.mrh-more .mr-imp-section.cambio .badge-count{background:#f59e0b;color:#fff;}
#mrh.mrh-more .mr-imp-alta-doc-row{display:flex;gap:6px;align-items:center;padding:6px 0;font-size:12px;}
#mrh.mrh-more .mr-imp-alta-doc-row label{background:#fff7ed;border:1px dashed #fed7aa;padding:4px 10px;border-radius:6px;cursor:pointer;}
#mrh.mrh-notifications .mrl-noti-kpi-row{display:grid;grid-template-columns:repeat(3, 1fr);gap:12px;margin-bottom:14px;}
#mrh.mrh-notifications .mrl-noti-kpi{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:10px;padding:16px;}
#mrh.mrh-notifications .mrl-noti-kpi.alert{border-color:#fecaca;background:#fef2f2;}
#mrh.mrh-notifications .mrl-noti-kpi.warn{border-color:#fde68a;background:#fffbeb;}
#mrh.mrh-notifications .mrl-noti-kpi .v{font-size:28px;font-weight:700;color:var(--mrh-ink);line-height:1;}
#mrh.mrh-notifications .mrl-noti-kpi .l{font-size:12px;color:var(--mrh-muted);margin-top:4px;text-transform:uppercase;letter-spacing:.04em;}
#mrh.mrh-notifications .mrl-noti-card{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:8px;padding:14px;margin-bottom:10px;display:flex;gap:14px;align-items:center;}
#mrh.mrh-notifications .mrl-noti-card.level-1{border-left:4px solid #f59e0b;}
#mrh.mrh-notifications .mrl-noti-card.level-2{border-left:4px solid #dc2626;background:#fef2f2;}
#mrh.mrh-notifications .mrl-noti-card.level-3{border-left:4px solid #dc2626;background:#fef2f2;box-shadow:0 0 0 3px rgba(220,38,38,0.1);animation: mrl-pulse 2s infinite;}
@keyframes mrl-pulse { 0%,100%{box-shadow:0 0 0 3px rgba(220,38,38,0.1);} 50%{box-shadow:0 0 0 6px rgba(220,38,38,0.2);} }
#mrh.mrh-notifications .mrl-noti-avatar{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#c0392b,#d4a017);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex-shrink:0;overflow:hidden;}
#mrh.mrh-notifications .mrl-noti-avatar img{width:100%;height:100%;object-fit:cover;}
#mrh.mrh-notifications .mrl-noti-info{flex:1;min-width:0;}
#mrh.mrh-notifications .mrl-noti-name{font-weight:600;color:var(--mrh-ink);font-size:14px;}
#mrh.mrh-notifications .mrl-noti-meta{color:var(--mrh-muted);font-size:12px;margin-top:2px;}
#mrh.mrh-notifications .mrl-noti-chip{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;margin-right:4px;}
#mrh.mrh-notifications .mrl-noti-chip.alta{background:#d1fae5;color:#065f46;}
#mrh.mrh-notifications .mrl-noti-chip.baja{background:#fee2e2;color:#991b1b;}
#mrh.mrh-notifications .mrl-noti-chip.level-0{background:#f3f4f6;color:var(--mrh-muted);}
#mrh.mrh-notifications .mrl-noti-chip.level-1{background:#fef3c7;color:#92400e;}
#mrh.mrh-notifications .mrl-noti-chip.level-2{background:#fee2e2;color:#991b1b;}
#mrh.mrh-notifications .mrl-noti-chip.level-3{background:#dc2626;color:#fff;}
#mrh.mrh-notifications .mrl-noti-actions{display:flex;gap:6px;}
/* Portadas compartidas de operaciones, comunicación y configuración. */
#mrh.mrh-legacy-hub .mrh-wrap{max-width:1400px;margin:0 auto;padding:24px;}
#mrh.mrh-legacy-hub .mrh-header{margin-bottom:24px;}
#mrh.mrh-legacy-hub .mrh-header h1{font-size:28px;font-weight:700;color:#1a1a1a;margin:0 0 4px;letter-spacing:-0.5px;}
#mrh.mrh-legacy-hub .mrh-header .sub{font-size:14px;color:var(--mrh-muted);}
#mrh.mrh-legacy-hub .mrh-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
@media  (max-width:900px) {#mrh.mrh-legacy-hub .mrh-grid{grid-template-columns:repeat(2,1fr);}}
@media  (max-width:560px) {#mrh.mrh-legacy-hub .mrh-grid{grid-template-columns:1fr;}}
#mrh.mrh-legacy-hub .mrh-card{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:12px;padding:22px;text-decoration:none;color:#1a1a1a;transition:all .15s ease;display:block;box-shadow:0 1px 3px rgba(0,0,0,0.04);}
#mrh.mrh-legacy-hub .mrh-card:hover{text-decoration:none;color:#1a1a1a;border-color:#c0392b;transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,0.08);}
#mrh.mrh-legacy-hub .mrh-card .icon-wrap{width:48px;height:48px;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:14px;}
#mrh.mrh-legacy-hub .mrh-card .icon-wrap i{font-size:22px;}
#mrh.mrh-legacy-hub .mrh-card .title{font-size:16px;font-weight:600;margin:0 0 6px;color:#1a1a1a;}
#mrh.mrh-legacy-hub .mrh-card .desc{font-size:12px;color:var(--mrh-muted);line-height:1.5;margin-bottom:10px;}
#mrh.mrh-legacy-hub .mrh-card .kpi{display:flex;align-items:baseline;gap:6px;}
#mrh.mrh-legacy-hub .mrh-card .kpi .v{font-size:24px;font-weight:700;color:#1a1a1a;line-height:1;}
#mrh.mrh-legacy-hub .mrh-card .kpi .v.crit{color:#c0392b;}
#mrh.mrh-legacy-hub .mrh-card .kpi .v.warn{color:#d4a017;}
#mrh.mrh-legacy-hub .mrh-card .kpi .v.ok{color:#27ae60;}
#mrh.mrh-legacy-hub .mrh-card .kpi .l{font-size:10px;color:var(--mrh-muted);text-transform:uppercase;letter-spacing:.6px;}
#mrh.mrh-legacy-hub .mrh-card.placeholder{opacity:0.55;pointer-events:none;}
#mrh.mrh-legacy-hub .mrh-card.placeholder::after{content:"próximamente";position:absolute;}
@media  (max-width:480px) {#mrh.mrh-legacy-hub .mrh-grid{grid-template-columns:1fr  !important;}}
.theme-dark #mrh.mrh-legacy-hub .mrh-card,.theme-dark #mrh.mrh-legacy-hub .hub-card{background:#1f2937;border-color:#374151;color:#f3f4f6;}
.theme-dark #mrh.mrh-legacy-hub .mrh-card .title,.theme-dark #mrh.mrh-legacy-hub .mrh-card .kpi .v,.theme-dark #mrh.mrh-legacy-hub .hub-card .title{color:#f9fafb;}
.theme-dark #mrh.mrh-legacy-hub .mrh-card .desc,.theme-dark #mrh.mrh-legacy-hub .hub-card .desc{color:var(--mrh-muted);}
.theme-dark #mrh.mrh-legacy-hub .mrh-header h1{color:#f9fafb;}
.theme-dark #mrh.mrh-legacy-hub .mrh-header .sub{color:var(--mrh-muted);}
.theme-dark #mrh.mrh-legacy-hub .mrh-card:hover{background:#111827;border-color:#c0392b;}
/* Cabecera del hub: búsqueda, acciones y pestañas sobre superficie propia. */
#mrh .mrh-hub-top{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:var(--mrh-r-card);padding:20px;margin-bottom:20px;}
#mrh .mrh-hub-top .magma-tabbar{background:var(--mrh-surface);margin:12px 0 0;border-bottom:1px solid var(--mrh-border);}
#mrh .mrh-hub-top .magma-tab-link{color:var(--mrh-muted);border-radius:0;}
#mrh .mrh-hub-top .magma-tab-link.is-active{color:var(--mrh-ink)!important;border-bottom-color:var(--mrh-ink)!important;}
#mrh .mrh-hub-top .mrr-gsearch-input{padding-left:40px;}
#mrh .mrh-hub-top .mrr-hub-header{background:transparent;}
@media(max-width:768px){
#mrh .mrh-hub-top{padding:14px;border-radius:var(--mrh-r-box);}
#mrh .mrh-hub-top .mrr-qa{width:100%;gap:8px;}
#mrh .mrh-hub-top .mrr-qa .btn{flex:1 1 45%;width:auto!important;min-height:46px;padding:10px;font-size:13px;}
#mrh .mrh-hub-top .magma-tab-link{padding:14px 10px;font-size:13px;}
}

#mrh .mrh-hub-top .mrr-gsearch-input{padding-left:40px!important;font-size:13px;}
@media(max-width:768px){
#mrh.mrh-leaves .mrh-hub-top .magma-tab-link{flex:1 1 0;min-width:0;white-space:normal;line-height:1.35;text-align:center;justify-content:center;padding:12px 6px;}
}

/* Vacaciones: herramientas secundarias plegables y bandeja orientada al trabajo pendiente. */
#mrh.mrh-leaves .mrh-hub-top{padding:16px;margin-bottom:16px;}
#mrh.mrh-leaves .mrh-hub-tools{margin:0 0 12px;border-bottom:1px solid var(--mrh-border);padding-bottom:10px;}
#mrh.mrh-leaves .mrh-hub-tools summary{cursor:pointer;font-size:13px;color:var(--mrh-muted);min-height:28px;line-height:28px;}
#mrh.mrh-leaves .mrh-hub-tools[open] .mrr-hub-header{margin:12px 0 4px;}
#mrh.mrh-leaves .mrr-hub-breadcrumbs-row{gap:10px;margin:0;}
#mrh.mrh-leaves .mrr-hub-breadcrumbs-row .mrr-qa{margin:0!important;gap:8px;}
#mrh.mrh-leaves .mrh-hub-top .mrr-qa .btn{min-height:40px;padding:8px 12px;font-size:13px;line-height:20px;flex:0 1 auto;}
#mrh.mrh-leaves .mrh-inbox{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:var(--mrh-r-card);padding:20px;}
#mrh .mrh-inbox-heading h2{font-size:20px;line-height:1.3;margin:0 0 6px;font-weight:650;}
#mrh .mrh-inbox-heading p{color:var(--mrh-muted);font-size:13px;line-height:1.5;margin:0 0 12px;}
#mrh .mrh-inbox-summary{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:13px;padding:12px 0;border-top:1px solid var(--mrh-border);border-bottom:1px solid var(--mrh-border);margin:0 0 12px;}
#mrh .mrh-inbox-summary strong{color:var(--mrh-ink);font-size:16px;}
#mrh .mrh-inbox-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:12px 0;}
#mrh .mrh-inbox-filter{display:flex;align-items:center;gap:10px;max-width:100%;}
#mrh .mrh-inbox-filter label{font-size:13px;margin:0;}
#mrh .mrh-inbox-filter select.form-control{height:44px!important;min-height:44px;padding:8px 30px 8px 12px!important;line-height:normal!important;font-size:14px!important;width:260px;max-width:100%;color:var(--mrh-ink);background-color:var(--mrh-surface);}
#mrh .mrh-inbox-empty{padding:24px 12px;text-align:center;border-top:1px solid var(--mrh-border);}
#mrh .mrh-inbox-empty>i{font-size:26px;color:var(--mrh-muted);}
#mrh .mrh-inbox-empty h3{font-size:18px;margin:12px 0 8px;}
#mrh .mrh-inbox-empty p{font-size:13px;line-height:1.6;max-width:460px;margin:0 auto 16px;color:var(--mrh-muted);}
#mrh .mrh-inbox .mrl-card{box-shadow:none;}
@media(max-width:768px){
#mrh.mrh-leaves .mrh-hub-top{padding:12px;margin-bottom:12px;}
#mrh.mrh-leaves .mrr-hub-breadcrumbs-row>div{width:100%;}
#mrh.mrh-leaves .mrh-hub-top .mrr-qa .btn{flex:1 1 0;min-height:40px;padding:7px 8px;font-size:12px;line-height:18px;}
#mrh.mrh-leaves .mrh-hub-top .magma-tab-link{padding:10px 4px;font-size:12px;}
#mrh.mrh-leaves .mrh-inbox{padding:16px;}
#mrh .mrh-inbox-filter{width:100%;}
#mrh .mrh-inbox-filter select.form-control{flex:1;min-width:0;width:0;}
#mrh .mrh-inbox-empty{padding:20px 0 8px;}
}

#mrh.mrh-leaves .mrh-hub-tools{padding-bottom:4px;margin-bottom:4px;}
#mrh.mrh-leaves .mrh-hub-tools summary::after{content:" ▾";}
#mrh.mrh-leaves .mrh-hub-tools[open] summary::after{content:" ▴";}
#mrh.mrh-leaves .mrh-hub-top .magma-breadcrumb{padding:0;}
#mrh.mrh-leaves .mrh-hub-top .magma-tabbar{margin-top:8px;}
@media(max-width:768px){
#mrh.mrh-leaves .mrr-hub-breadcrumbs-row{gap:4px;}
#mrh.mrh-leaves .mrh-hub-top .mrr-qa .btn{min-height:44px!important;height:auto!important;}
#mrh .mrh-inbox-heading p{margin-bottom:8px;}
#mrh .mrh-inbox-summary{gap:6px 14px;padding:8px 0;margin-bottom:8px;}
#mrh .mrh-inbox-empty{padding-top:12px;}
#mrh .mrh-inbox-empty h3{font-size:16px;}
}

/* 9-sep-2026 · Migración de las pantallas administrativas restantes. */


/* Componentes comunes: lectura, filtros, navegación y formularios. */
#mrh.mrh-screen{--magma-surface:var(--mrh-surface);--magma-surface-2:var(--mrh-surface-2);--magma-text-strong:var(--mrh-ink);--magma-text:var(--mrh-text);--magma-text-muted:var(--mrh-muted);--magma-border:var(--mrh-border);font-size:14px;line-height:1.5;}
#mrh.mrh-screen .panel_s{box-shadow:none;background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:var(--mrh-r-box);margin-bottom:16px;}
#mrh.mrh-screen .panel-body{background:var(--mrh-surface);border:0;border-radius:inherit;padding:18px;}
#mrh.mrh-screen .panel-heading{background:var(--mrh-surface);border-bottom:1px solid var(--mrh-border);color:var(--mrh-ink);}
#mrh.mrh-screen h1{font-size:24px;line-height:1.25;}
#mrh.mrh-screen h2,#mrh.mrh-screen h3{line-height:1.35;}
#mrh.mrh-screen .text-muted{color:var(--mrh-muted);}
#mrh.mrh-screen .btn{border-radius:var(--mrh-r-btn);font-weight:600;white-space:normal;}
#mrh.mrh-screen .btn-primary,#mrh.mrh-screen .btn-success,#mrh.mrh-screen .btn-info{background:var(--mrh-ink);border-color:var(--mrh-ink);color:var(--mrh-surface);}
#mrh.mrh-screen .btn-default{background:var(--mrh-surface);border-color:var(--mrh-border);color:var(--mrh-ink);}
#mrh.mrh-screen .form-control{background:var(--mrh-surface);color:var(--mrh-ink);border:1px solid var(--mrh-border);border-radius:var(--mrh-r-mini);font-size:14px;}
#mrh.mrh-screen select.form-control{height:44px!important;line-height:normal!important;padding:8px 30px 8px 12px!important;}
#mrh.mrh-screen input.form-control:not([type=checkbox]):not([type=radio]){min-height:44px;}
#mrh.mrh-screen .nav-tabs{background:var(--mrh-surface);border-bottom:1px solid var(--mrh-border);display:flex;flex-wrap:wrap;gap:2px;padding:6px 8px 0;border-radius:var(--mrh-r-box) var(--mrh-r-box) 0 0;}
#mrh.mrh-screen .nav-tabs>li{float:none;}
#mrh.mrh-screen .nav-tabs>li>a{color:var(--mrh-muted);background:transparent;border:0;border-bottom:2px solid transparent;min-height:44px;}
#mrh.mrh-screen .nav-tabs>li.active>a{color:var(--mrh-ink);border-bottom-color:var(--mrh-ink);font-weight:650;background:var(--mrh-surface);}
#mrh.mrh-screen .table>thead>tr>th{background:var(--mrh-surface-2);color:var(--mrh-muted);text-transform:none;vertical-align:bottom;font-size:12px;}
#mrh.mrh-screen .table>tbody>tr>td{vertical-align:middle;border-color:var(--mrh-border-soft);}
#mrh .mrh-list-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--mrh-surface);padding:10px 0;margin:8px 0;}
#mrh .mrh-list-tools input{min-height:44px;padding:8px 12px;border:1px solid var(--mrh-border);border-radius:8px;flex:1;min-width:140px;}
#mrh .mrh-list-tools button{min-height:44px;background:var(--mrh-surface);color:var(--mrh-ink);border:1px solid var(--mrh-border);border-radius:8px;padding:8px 12px;}
#mrh .mrh-list-tools button:disabled{opacity:.45;cursor:default;}
#mrh .mrh-list-tools [role=status]{font-size:12px;color:var(--mrh-muted);}
#mrh .mrh-page-hidden{display:none!important;}
@media(max-width:768px){
#mrh.mrh-screen .panel-body{padding:14px;}
#mrh.mrh-screen .form-inline{display:flex;flex-wrap:wrap;align-items:center;gap:8px;max-width:100%;}
#mrh.mrh-screen .form-inline .form-group{max-width:100%;margin-bottom:0;}
#mrh.mrh-screen .form-inline select,#mrh.mrh-screen .form-inline input:not([type=checkbox]):not([type=radio]){max-width:100%;}
#mrh.mrh-screen .tw-flex.tw-justify-between{flex-wrap:wrap;gap:10px;}
#mrh.mrh-screen h1{font-size:21px;}
#mrh.mrh-screen .mrl-dp-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
#mrh.mrh-screen .mrl-dp-kpi{padding:10px;}
#mrh.mrh-screen .mrl-dp-tabs{flex-wrap:wrap;gap:0;background:var(--mrh-surface);}
#mrh.mrh-screen .mrl-dp-tabs a{padding:10px;font-size:13px;}
}
@media print{#mrh .mrh-list-tools{display:none!important;}#mrh .mrh-page-hidden{display:revert!important;}}

#mrh .mrh-screen-help{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:var(--mrh-r-box);margin-bottom:14px;}
#mrh .mrh-screen-help summary{cursor:pointer;padding:12px 14px;font-size:13px;font-weight:600;min-height:44px;color:var(--mrh-ink);}
#mrh .mrh-screen-help-body{padding:0 14px 14px;color:var(--mrh-text);font-size:13px;}
#mrh .mrh-screen-help-body button{background:var(--mrh-surface);border:1px solid var(--mrh-border);border-radius:8px;padding:8px 12px;color:var(--mrh-text);}
#mrh.mrh-screen .rn-chip.on,#mrh.mrh-screen .sd-btn,#mrh.mrh-screen .rp-btn.p{background:var(--mrh-ink);border-color:var(--mrh-ink);color:var(--mrh-surface);}
#mrh.mrh-screen .mrl-dp-tabs a.active{color:var(--mrh-ink);border-bottom-color:var(--mrh-ink);}
#mrh.mrh-screen .cfg-section h3{display:flex;align-items:center;flex-wrap:wrap;gap:8px;color:var(--mrh-ink);}
#mrh.mrh-screen .cfg-section h3 .btn{float:none;}
#mrh.mrh-screen .rn-chip{min-height:44px;}

#mrh.mrh-screen .btn-primary,#mrh.mrh-screen .btn-success,#mrh.mrh-screen .btn-info,#mrh.mrh-screen a.btn-danger[href*="export"],#mrh.mrh-screen a.btn-danger[href*="pdf"]{background:var(--mrh-ink)!important;border-color:var(--mrh-ink)!important;color:var(--mrh-surface)!important;}
#mrh .mrh-hub-tools{padding-bottom:4px;margin-bottom:4px;border-bottom:1px solid var(--mrh-border);}
#mrh .mrh-hub-tools summary{cursor:pointer;font-size:13px;color:var(--mrh-muted);min-height:32px;line-height:32px;}
#mrh .mrh-hub-tools[open] .mrr-hub-header{margin:12px 0 4px;}
#mrh .magma-tabbar{background:var(--mrh-surface);padding:8px 10px 0;border-radius:var(--mrh-r-box) var(--mrh-r-box) 0 0;}

#mrh .mrh-hub-top .mrr-hub-breadcrumbs-row{gap:8px;margin:0;}
#mrh .mrh-hub-top .mrr-hub-breadcrumbs-row .mrr-qa{margin:0!important;gap:8px;}
#mrh .mrh-hub-top .magma-tabbar{margin-top:8px!important;padding-top:0;}
@media(max-width:768px){
#mrh .mrh-hub-top .magma-tab-link{flex:1 1 0;min-width:0;white-space:normal;line-height:1.35;text-align:center;justify-content:center;padding:10px 6px;}
#mrh .mrh-hub-top .mrr-qa .btn{min-height:44px!important;height:auto!important;padding:8px 10px;}
}

/* Acciones y pestañas propias de las vistas que no usan botones Bootstrap. */
#mrh.mrh-screen .rec-btn,#mrh.mrh-screen .ob-btn:not(.ob-danger),#mrh.mrh-screen .ex-btn,#mrh.mrh-screen .ll-btn,#mrh.mrh-screen .sd-btn,#mrh.mrh-screen .bv-btn,#mrh.mrh-screen .eg-btn,#mrh.mrh-screen .pn-btn,#mrh.mrh-screen .ri-btn,#mrh.mrh-screen .rd-btn:not(#rd-regen),#mrh.mrh-screen .ow-btn.primary,#mrh.mrh-screen .mrd-btn-primary,#mrh.mrh-screen .mrg-btn.primary,#mrh.mrh-screen .pa-btn-apply,#mrh.mrh-screen .re-btn-primary,#mrh.mrh-screen .mav-btn.primary,#mrh.mrh-screen .rvz-btn-primary,#mrh.mrh-screen .rn-chip.on,#mrh.mrh-screen .rp-btn.p,#mrh.mrh-screen .mrl-ww-btn-primary{background:var(--mrh-ink)!important;border-color:var(--mrh-ink)!important;color:var(--mrh-surface)!important;}
#mrh.mrh-screen .mrc-view-tabs button.active{background:var(--mrh-ink)!important;color:var(--mrh-surface)!important;}
#mrh.mrh-screen .tl-tab.active,#mrh.mrh-screen .pa-tab.active,#mrh.mrh-screen .mrr-dis-tabs a.active{color:var(--mrh-ink)!important;border-bottom-color:var(--mrh-ink)!important;}
#mrh.mrh-screen .mrc-view-tabs,#mrh.mrh-screen .tl-tabs,#mrh.mrh-screen .pa-tabs,#mrh.mrh-screen .mrr-dis-tabs{background:var(--mrh-surface);}

#mrh.mrh-screen{--magma-accent:var(--mrh-ink);--magma-on-accent:var(--mrh-surface);--magma-accent-soft:var(--mrh-surface-2);}

/* 9-sep-2026 · Vacaciones en ficha: histórico visible y detalle lateral accesible. */
#mrh .mrh-vac-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; margin:0 0 24px; }
#mrh .mrh-vac-summary > .col-md-3 { width:auto; padding:0; text-align:left; }
#mrh .mrh-vac-summary > .col-md-3 > div { padding:16px; border:1px solid var(--mrh-border); border-radius:8px; background:var(--mrh-surface-2); }
#mrh .mrh-vac-summary > .col-md-3 > div > div:first-child { font-size:28px; line-height:1.2; font-weight:650; color:var(--mrh-ink); }
#mrh .mrh-vac-summary > .col-md-3 > div > div:last-child { margin-top:6px; font-size:12px; color:var(--mrh-muted); }
#mrh .mrh-vac-summary small { display:block; font-size:11px; line-height:1.5; margin-top:8px; color:var(--mrh-muted); }
#mrh .mrh-vac-summary #mrr-ql-toggle { display:block; width:100%; margin-bottom:8px; background:var(--mrh-ink); color:var(--mrh-surface); border-color:var(--mrh-ink); }
#mrh .mrh-vac-summary a.btn { display:block; width:100%; }
#mrh .mrh-vac-history { margin:24px 0; border:1px solid var(--mrh-border); border-radius:10px; background:var(--mrh-surface); overflow:hidden; }
#mrh .mrh-vac-history__head { display:flex; justify-content:space-between; align-items:start; gap:16px; padding:20px; }
#mrh .mrh-vac-history__head h3 { margin:0 0 6px; font-size:18px; font-weight:650; color:var(--mrh-ink); }
#mrh .mrh-vac-history__head p, #mrh .mrh-vac-history__head > span { margin:0; color:var(--mrh-muted); font-size:12px; }
#mrh .mrh-vac-filters { display:grid; grid-template-columns:2fr 1fr 1fr; gap:12px; padding:0 20px 18px; }
#mrh .mrh-vac-filters label { min-width:0; margin:0; display:grid; gap:5px; font-size:12px; font-weight:500; color:var(--mrh-muted); }
#mrh .mrh-vac-filters input, #mrh .mrh-vac-filters select { width:100%; min-width:0; height:40px; padding:8px 10px; border:1px solid var(--mrh-border); background:var(--mrh-surface); color:var(--mrh-ink); border-radius:6px; font:inherit; }
#mrh .mrh-vac-table-wrap { overflow:auto; }
#mrh .mrh-vac-table { width:100%; margin:0; }
#mrh .mrh-vac-table th { color:var(--mrh-muted); background:var(--mrh-surface-2); font-size:11px; font-weight:600; padding:10px 8px; white-space:nowrap; }
#mrh .mrh-vac-table td { padding:14px 8px; font-size:12px; vertical-align:middle; border-color:var(--mrh-border-soft); }
#mrh .mrh-vac-table tbody tr { cursor:pointer; }
#mrh .mrh-vac-table tbody tr:hover { background:var(--mrh-surface-2); }
#mrh .mrh-vac-table tr[hidden] { display:none; }
#mrh .mrh-vac-reason { max-width:200px; overflow-wrap:anywhere; }
#mrh .mrh-vac-state { display:inline-block; font-weight:600; border-bottom:2px solid var(--mrh-border-strong); padding-bottom:2px; white-space:nowrap; }
#mrh .mrh-vac-state[data-state="rejected"], #mrh .mrh-vac-state[data-state="cancelled"] { color:var(--mrh-danger, #b42318); }
#mrh .mrh-vac-actions { min-width:116px; }
#mrh .mrh-vac-detail { display:block; border:0; background:none; padding:6px 0; color:var(--mrh-ink); font-weight:650; text-align:left; }
#mrh .mrh-vac-actions .mrr-leave-edit-btn { margin-top:4px; }
#mrh .mrh-vac-history__foot { display:flex; justify-content:space-between; gap:12px; padding:14px 20px; border-top:1px solid var(--mrh-border); font-size:12px; color:var(--mrh-muted); }
#mrh .mrh-vac-history__foot a, #mrh .mrh-vac-text-button { color:var(--mrh-ink); text-decoration:underline; }
#mrh .mrh-vac-text-button { border:0; background:none; padding:0; }
#mrh .mrh-vac-empty { padding:20px; color:var(--mrh-muted); }
#mrh .mrh-vac-drawer { box-sizing:border-box; position:fixed; inset:0 0 0 auto; margin:0 0 0 auto; width:min(560px,100vw); max-width:100vw; height:100vh; height:100dvh; max-height:none; padding:0; border:0; border-left:1px solid var(--mrh-border); background:var(--mrh-surface); color:var(--mrh-ink); }
#mrh .mrh-vac-drawer[open] { display:flex; flex-direction:column; }
#mrh .mrh-vac-drawer::backdrop { background:rgba(0,0,0,.34); }
#mrh .mrh-vac-drawer__head { display:flex; justify-content:space-between; gap:18px; padding:24px; border-bottom:1px solid var(--mrh-border); }
#mrh .mrh-vac-eyebrow { display:block; font-size:11px; color:var(--mrh-muted); margin-bottom:8px; }
#mrh .mrh-vac-drawer__head h2 { margin:0; font-size:20px; line-height:1.4; font-weight:650; }
#mrh .mrh-vac-drawer__head > button { flex:none; align-self:start; width:38px; height:38px; border:1px solid var(--mrh-border); background:var(--mrh-surface); color:var(--mrh-ink); border-radius:6px; font-size:26px; line-height:1; }
#mrh .mrh-vac-drawer__body { padding:24px; overflow-y:auto; overscroll-behavior:contain; flex:1; }
#mrh .mrh-vac-worker { font-size:13px; font-weight:600; margin:0 0 18px; }
#mrh .mrh-vac-detail-states { display:flex; gap:12px; flex-wrap:wrap; align-items:center; font-size:13px; margin-bottom:24px; }
#mrh .mrh-vac-facts { display:grid; grid-template-columns:1fr 1fr; gap:20px; padding:18px; background:var(--mrh-surface-2); border:1px solid var(--mrh-border); border-radius:8px; margin:0; }
#mrh .mrh-vac-facts dt { color:var(--mrh-muted); font-size:12px; font-weight:400; }
#mrh .mrh-vac-facts dd { color:var(--mrh-ink); font-size:18px; font-weight:600; margin:4px 0 0; }
#mrh .mrh-vac-detail-section { padding:24px 0; border-bottom:1px solid var(--mrh-border-soft); }
#mrh .mrh-vac-detail-section h3 { font-size:14px; font-weight:650; margin:0 0 12px; }
#mrh .mrh-vac-detail-section p { font-size:13px; line-height:1.6; margin:0; }
#mrh .mrh-vac-full-reason { white-space:pre-wrap; overflow-wrap:anywhere; }
#mrh .mrh-vac-timeline { list-style:none; margin:0; padding:0 0 0 12px; border-left:1px solid var(--mrh-border); }
#mrh .mrh-vac-timeline li { display:grid; gap:5px; padding:0 0 18px 8px; }
#mrh .mrh-vac-timeline li:last-child { padding-bottom:0; }
#mrh .mrh-vac-timeline strong { font-size:13px; font-weight:550; }
#mrh .mrh-vac-timeline span { color:var(--mrh-muted); font-size:12px; }
#mrh .mrh-vac-pdf { display:flex; justify-content:space-between; align-items:center; min-height:44px; padding:12px 16px; background:var(--mrh-ink); color:var(--mrh-surface); border-radius:6px; font-weight:600; text-decoration:none; }
#mrh .mrh-vac-pdf:hover, #mrh .mrh-vac-pdf:focus { color:var(--mrh-surface); text-decoration:underline; }
#mrh .mrh-vac-detail-section .mrh-vac-note { margin-top:10px; font-size:12px; color:var(--mrh-muted); }
#mrh .mrh-vac-secondary { padding:10px 14px; margin-top:20px; border:1px solid var(--mrh-border); color:var(--mrh-ink); background:var(--mrh-surface); border-radius:6px; }
#mrh .mrh-vac-drawer__foot { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:16px 24px; border-top:1px solid var(--mrh-border); }
#mrh .mrh-vac-drawer__foot button { padding:8px; border:0; color:var(--mrh-ink); background:none; font-size:13px; }
#mrh .mrh-vac-drawer__foot button:disabled { opacity:.4; cursor:default; }
#mrh .mrh-vac-drawer__foot span { color:var(--mrh-muted); font-size:12px; }
#mrh .mrh-vac-history button:focus-visible, #mrh .mrh-vac-drawer button:focus-visible, #mrh .mrh-vac-drawer a:focus-visible { outline:2px solid var(--mrh-ink); outline-offset:3px; }
@media (max-width:767px) {
 #mrh .mrh-vac-summary { grid-template-columns:1fr 1fr; gap:12px; }
 #mrh .mrh-vac-history__head { flex-direction:column; gap:8px; padding:16px; }
 #mrh .mrh-vac-filters { grid-template-columns:1fr 1fr; padding:0 16px 16px; }
 #mrh .mrh-vac-filters label:first-child { grid-column:1/-1; }
 #mrh .mrh-vac-table, #mrh .mrh-vac-table tbody { display:block; }
 #mrh .mrh-vac-table thead { display:none; }
 #mrh .mrh-vac-table tbody tr { display:grid; grid-template-columns:1fr 1fr; gap:10px 16px; padding:16px; border-top:1px solid var(--mrh-border); }
 #mrh .mrh-vac-table tr[hidden] { display:none; }
 #mrh .mrh-vac-table td { display:block; padding:0; border:0; text-align:left; min-width:0; }
 #mrh .mrh-vac-table td[data-label]::before { content:attr(data-label); display:block; font-size:10px; color:var(--mrh-muted); margin-bottom:4px; }
 #mrh .mrh-vac-table td.mrh-vac-reason { grid-column:1/-1; max-width:none; }
 #mrh .mrh-vac-table td.mrh-vac-actions { grid-column:1/-1; display:flex; justify-content:space-between; align-items:center; }
 #mrh .mrh-vac-history__foot { padding:14px 16px; flex-wrap:wrap; }
 #mrh .mrh-vac-drawer__head, #mrh .mrh-vac-drawer__body { padding:20px; }
}
