/* ===========================================================================
   Mantenimiento y activos (/mantenimiento). Extraido del <style> inline de
   Mantenimiento.razor (Ola 4). En un .css el escape razor @@media vuelve a @media.
   Colores por tokens var(--propia-*); los pocos hex restantes son semaforos.
   =========================================================================== */

/* === Estilos base prototipo PROPIA.dc.html === */
.mt-head, .mt-kpis, .mt-tabs, .mt-empty { font-family: var(--propia-font-base, 'Lexend', sans-serif); }
.mt-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 18px; }
.mt-title { font-size: 27px; font-weight: 800; letter-spacing: -0.6px; color: var(--propia-text-h1); margin: 0; }
.mt-sub { font-size: 14px; color: var(--propia-text-muted); margin: 4px 0 0; }
.mt-head-actions { display: flex; align-items: center; gap: 9px; }
.mt-btn-ghost { padding: 10px 16px; border-radius: 9px; border: 1px solid var(--propia-border-card); background: var(--propia-bg-card); font-size: 13px; font-weight: 600; color: var(--propia-text-secondary); cursor: pointer; font-family: inherit; }
.mt-btn-ghost:hover { border-color: var(--propia-brand, var(--propia-brand)); color: var(--propia-brand, var(--propia-brand)); }
.mt-btn-brand {
    display: inline-flex; align-items: center; gap: 7px;
    padding: 11px 17px; border-radius: 10px; border: 0;
    background: var(--propia-brand, var(--propia-brand)); color: var(--propia-text-inverse);
    font-size: 13.5px; font-weight: 700; cursor: pointer; font-family: inherit;
    box-shadow: 0 6px 16px rgba(109,79,227,.32);
}
.mt-btn-brand:hover { background: var(--propia-brand-hover, var(--propia-brand-hover)); }

.mt-empty { background: var(--propia-bg-app); border: 1px dashed var(--propia-border-input); border-radius: 12px; padding: 30px; text-align: center; color: var(--propia-text-faint); }

.mt-kpis { display: grid; grid-template-columns: repeat(8, 1fr); gap: 8px; margin-bottom: 16px; }
.mt-kpi { background: var(--propia-bg-card); border: 1px solid var(--propia-border-card); border-radius: 11px; padding: 11px 13px; }
.mt-kpi-val { font-size: 22px; font-weight: 800; color: var(--propia-text-h1); letter-spacing: -0.3px; }
.mt-kpi-lbl { font-size: 10.5px; color: var(--propia-text-faint); font-weight: 600; margin-top: 1px; }
.mt-kpi--verde .mt-kpi-val { color: #15703F; }
.mt-kpi--amarillo .mt-kpi-val { color: #B45309; }
.mt-kpi--rojo .mt-kpi-val { color: #DC2626; }
.mt-kpi--rojo { background: #FEF2F2; border-color: #FECACA; }

.mt-tabs { display: flex; gap: 6px; margin-bottom: 16px; border-bottom: 1px solid var(--propia-border-divider); padding-bottom: 0; }
.mt-tab {
    padding: 9px 16px; border: 0; border-bottom: 2px solid transparent;
    background: transparent; font-size: 13.5px; font-weight: 700; color: var(--propia-text-muted);
    cursor: pointer; font-family: inherit; transition: color .15s, border-color .15s;
}
.mt-tab:hover { color: var(--propia-text-h1); }
.mt-tab--on { color: var(--propia-brand, var(--propia-brand)); border-bottom-color: var(--propia-brand, var(--propia-brand)); }

[data-bs-theme="dark"] .mt-title { color: var(--propia-text-body); }
[data-bs-theme="dark"] .mt-kpi { background: var(--propia-bg-card-soft); border-color: var(--propia-border-card); }
[data-bs-theme="dark"] .mt-kpi-val { color: var(--propia-text-body); }

.kpi-mini { border-radius: 12px; border: 1px solid #e6e6ee; }
.semaforo-verde { border-left: 4px solid #22c55e; }
.semaforo-amarillo { border-left: 4px solid #f59e0b; }
.semaforo-rojo { border-left: 4px solid #ef4444; }
.semaforo-negro { border-left: 4px solid #6b7280; }
/* === Tarjetas de activos al estilo Zonas Comunes (icono con color del semaforo) === */
.mt-acards { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 10px; }
.mt-acard { display: flex; align-items: center; gap: 11px; padding: 12px 14px; border: 1px solid var(--propia-border-card); border-radius: 12px; background: var(--propia-bg-card); }
.mt-acard-ic { width: 38px; height: 38px; border-radius: 10px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.mt-sem-verde { background: var(--propia-ok-soft); color: #15703F; }
.mt-sem-amarillo { background: #FEF3C7; color: #B45309; }
.mt-sem-rojo { background: #FEE2E2; color: #B91C1C; }
.mt-sem-negro { background: var(--propia-border-divider); color: var(--propia-text-secondary); }
.mt-acard-id { flex: 1; min-width: 0; }
.mt-acard-nom { font-size: 13.5px; font-weight: 700; color: var(--propia-text-h1); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mt-acard-meta { font-size: 11px; color: var(--propia-text-faint); }
.mt-acard-plan { font-size: 11.5px; color: var(--propia-text-secondary); margin-top: 3px; }
.mt-acard-plan--off { color: var(--propia-text-faint); font-style: italic; }
.mt-acard-venc { color: #B91C1C; font-weight: 700; }
.mt-acard-prox { color: #B45309; font-weight: 700; }
.mt-acard-chip { flex: 0 0 auto; font-size: 10.5px; font-weight: 700; color: var(--propia-brand, var(--propia-brand)); background: var(--propia-brand-soft); border-radius: 7px; padding: 4px 9px; white-space: nowrap; }
@media (max-width: 640px) { .mt-acards { grid-template-columns: 1fr; } }

/* === Calendario de programaciones (mismo patron visual del calendario de PQRSD) === */
.mt-cal { border: 1px solid var(--propia-border-card); border-radius: 14px; overflow: hidden; background: var(--propia-bg-card); margin-bottom: 30px; }
.mt-cal-bar { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--propia-border-divider); }
.mt-cal-nav { font-size: 18px; border: 1px solid var(--propia-border-card); border-radius: 8px; width: 30px; height: 30px; background: var(--propia-bg-card); color: var(--propia-text-secondary); cursor: pointer; }
.mt-cal-title { font-size: 15px; font-weight: 800; color: var(--propia-text-h1); min-width: 150px; text-align: center; }
.mt-cal-hoy { padding: 6px 12px; border: 1px solid var(--propia-border-card); border-radius: 8px; background: var(--propia-bg-card); color: var(--propia-text-secondary); font-size: 12px; font-weight: 700; cursor: pointer; font-family: inherit; }
/* Toggle de vista Mes / Semana */
.mt-cal-vistas { display: inline-flex; border: 1px solid var(--propia-border-card); border-radius: 8px; overflow: hidden; }
.mt-cal-vbtn { padding: 6px 13px; border: 0; background: var(--propia-bg-card); color: var(--propia-text-secondary); font-size: 12px; font-weight: 700; cursor: pointer; font-family: inherit; }
.mt-cal-vbtn.on { background: var(--propia-brand); color: var(--propia-text-inverse); }
.mt-cal-hint { margin-left: auto; font-size: 11.5px; color: var(--propia-text-faint); }
/* Vista Semana: una sola fila de 7 dias, celdas altas para ver muchas ejecuciones. */
.mt-cal-grid--wk .mt-cal-cell { min-height: 440px; }
.mt-cal-head { display: grid; grid-template-columns: repeat(7, 1fr); background: var(--propia-bg-table-head); border-bottom: 1px solid var(--propia-border-divider); }
.mt-cal-dow { padding: 8px 10px; font-size: 10px; font-weight: 800; letter-spacing: .4px; color: var(--propia-text-faint); }
.mt-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; background: var(--propia-border-divider); }
.mt-cal-cell { background: var(--propia-bg-card); min-height: 92px; padding: 6px 7px; display: flex; flex-direction: column; gap: 3px; }
.mt-cal-cell--off { background: #FBFCFE; }
.mt-cal-cell--off .mt-cal-daynum { color: var(--propia-text-faint); }
.mt-cal-cell--hoy { background: #F6F3FE; }
.mt-cal-daynum { font-size: 11.5px; font-weight: 700; color: var(--propia-text-secondary); }
.mt-cal-cell--hoy .mt-cal-daynum { color: var(--propia-brand, var(--propia-brand)); }
.mt-cal-ev { font-size: 10.5px; font-weight: 700; color: #1D4ED8; background: #EFF6FF; border-radius: 5px; padding: 2px 6px; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mt-cal-ev:hover { filter: brightness(.96); }
.mt-cal-ev--ok { color: #15703F; background: var(--propia-ok-soft); }
.mt-cal-ev--err { color: #B91C1C; background: #FEE2E2; }
.mt-cal-ev--plan { color: var(--propia-brand, var(--propia-brand)); background: var(--propia-brand-soft); }
.mt-cal-more { font-size: 10px; font-weight: 700; color: var(--propia-text-muted); padding: 1px 4px; }
/* === Celdas propias de la tabla de Planes preventivos (reusa .mtp-* de la tabla de Programacion) === */
.mtp-tag { font-size: 10px; font-weight: 700; color: var(--propia-text-faint); background: var(--propia-bg-app); border-radius: 6px; padding: 1px 6px; margin-left: 4px; }
.mtp-dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; background: var(--propia-text-faint); margin-right: 5px; vertical-align: middle; }
.mtp-dot.mt-sem-verde { background: var(--propia-ok); }
.mtp-dot.mt-sem-amarillo { background: var(--propia-warn); }
.mtp-dot.mt-sem-rojo { background: var(--propia-danger); }
.mtp-dot.mt-sem-negro { background: var(--propia-text-faint); }
.mtp-muted { color: var(--propia-text-faint); }
/* Edicion inline de celda existente (violeta = edicion activa; canon regla 9-B). */
.mtp-cell-inp { width: 100%; box-sizing: border-box; border: 1px solid var(--propia-border-input); border-radius: 6px; padding: 4px 7px; font-size: 12.5px; color: var(--propia-text-body); background: var(--propia-bg-card); outline: none; font-family: inherit; }
.mtp-cell-inp:focus { border-color: var(--propia-brand); box-shadow: 0 0 0 2px rgba(109,79,227,.12); }
.mtp-cell-inp:disabled { opacity: .55; }
.mtp-cell-inp.is-busy { opacity: .5; }
.mtp-estado-btn { border: 1px solid var(--propia-border-card); background: var(--propia-bg-card); color: var(--propia-text-secondary); border-radius: 7px; font-size: 11.5px; font-weight: 700; padding: 5px 10px; cursor: pointer; font-family: inherit; }
.mtp-estado-btn:hover { border-color: var(--propia-brand); color: var(--propia-brand); }
.mtp-estado-btn.on { border-color: var(--propia-ok); color: var(--propia-ok); }
.mtp-nf-chk { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; color: var(--propia-text-secondary); cursor: pointer; }
/* Fila recien creada (canon regla 10-E): verde + marca en la 1a celda hasta el proximo refresco. */
.mtp-row--nuevo { background: var(--propia-brand-soft-2); box-shadow: inset 3px 0 0 var(--propia-brand); }

/* === Tabla de PROGRAMACIONES (patron vista-tabla; canon Tareas/Zonas) === */
/* Botones de la barra (Agrupar / Campos): mismo aspecto que el resto de modulos. */
.mtp-menuwrap { position: relative; }
.mtp-fbtn { display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 8px 12px; border-radius: 9px; border: 1px solid var(--propia-border-input); background: var(--propia-bg-card); font-size: 13px; font-weight: 600; color: var(--propia-text-secondary); cursor: pointer; font-family: inherit; }
.mtp-fbtn:hover { border-color: var(--propia-brand); color: var(--propia-brand); }
.mtp-fbtn.on { background: var(--propia-brand-soft); color: var(--propia-brand); border-color: var(--propia-brand-soft); }
.mtp-menu-bd { position: fixed; inset: 0; z-index: 40; }
.mtp-menu { position: absolute; top: calc(100% + 6px); right: 0; z-index: 41; min-width: 190px; background: var(--propia-bg-card); border: 1px solid var(--propia-border-card); border-radius: 10px; box-shadow: 0 12px 30px rgba(27,42,58,.16); padding: 6px; display: flex; flex-direction: column; gap: 2px; }
.mtp-menu-it { text-align: left; padding: 7px 10px; border: 0; background: transparent; border-radius: 7px; font-size: 12.5px; font-weight: 600; color: var(--propia-text-secondary); cursor: pointer; font-family: inherit; }
.mtp-menu-it:hover { background: var(--propia-bg-app); }
.mtp-menu-it.on { background: var(--propia-brand-soft); color: var(--propia-brand); }
.mtp-menu-chk { display: flex; align-items: center; gap: 8px; padding: 6px 10px; font-size: 12.5px; color: var(--propia-text-secondary); cursor: pointer; }

/* Menu "Columnas" (inline, canon = Unidades/Equipos): orden/visibilidad/borrar campo propio. */
.mtp-colmenu { min-width: 252px; padding: 8px; }
.mtp-col-search { display: flex; align-items: center; gap: 7px; border: 1px solid var(--propia-border-card); border-radius: 8px; padding: 0 9px; background: var(--propia-bg-card); margin-bottom: 6px; }
.mtp-col-search svg { color: var(--propia-text-faint); flex-shrink: 0; }
.mtp-col-search input { border: 0; outline: none; background: transparent; padding: 7px 0; font-size: 12.5px; color: var(--propia-text-body); font-family: inherit; width: 100%; }
.mtp-col-list { display: flex; flex-direction: column; max-height: 320px; overflow: auto; }
.mtp-col-it { display: flex; align-items: center; gap: 6px; padding: 5px 6px; border-radius: 7px; }
.mtp-col-it:hover { background: var(--propia-brand-soft-2); }
.mtp-col-mv { width: 22px; height: 22px; border: 1px solid var(--propia-border-card); background: var(--propia-bg-card); border-radius: 6px; cursor: pointer; color: var(--propia-text-muted); font-size: 10px; line-height: 1; display: inline-flex; align-items: center; justify-content: center; }
.mtp-col-mv:hover:not(:disabled) { color: var(--propia-brand); border-color: var(--propia-brand); }
.mtp-col-mv:disabled { opacity: .35; cursor: default; }
.mtp-col-name { flex: 1; font-size: 13px; color: var(--propia-text-body); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mtp-col-dyn { font-size: 9px; font-weight: 800; letter-spacing: .3px; text-transform: uppercase; color: var(--propia-brand); background: var(--propia-brand-soft); border: 1px solid var(--propia-brand-border, var(--propia-brand-soft)); border-radius: 5px; padding: 1px 5px; margin-left: 4px; }
.mtp-col-fija { font-size: 10.5px; color: var(--propia-text-faint); background: var(--propia-bg-app); border: 1px solid var(--propia-border-card); border-radius: 6px; padding: 2px 7px; }
.mtp-col-eye { width: 26px; height: 24px; border: 1px solid var(--propia-border-card); background: var(--propia-bg-card); border-radius: 6px; cursor: pointer; color: var(--propia-text-faint); display: inline-flex; align-items: center; justify-content: center; }
.mtp-col-eye.on { color: var(--propia-brand); border-color: var(--propia-brand-border, var(--propia-brand-soft)); }
.mtp-col-del { width: 26px; height: 24px; border: 1px solid var(--propia-border-card); background: var(--propia-bg-card); border-radius: 6px; cursor: pointer; color: var(--propia-text-faint); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.mtp-col-del:hover { color: var(--propia-danger); border-color: var(--propia-danger-soft); background: var(--propia-danger-soft); }
.mtp-col-massacts { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--propia-border-divider); }
.mtp-col-mass { flex: 1 1 auto; display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 7px 8px; border: 1px solid var(--propia-border-card); background: var(--propia-bg-card); border-radius: 8px; cursor: pointer; font-size: 11.5px; font-weight: 700; color: var(--propia-text-secondary); font-family: inherit; white-space: nowrap; }
.mtp-col-mass:hover { border-color: var(--propia-brand); color: var(--propia-brand); }
.mtp-col-reset { flex: 1 1 100%; padding: 8px; border: 1px dashed var(--propia-border-card); background: transparent; border-radius: 8px; cursor: pointer; font-size: 12.5px; font-weight: 600; color: var(--propia-text-secondary); font-family: inherit; }
.mtp-col-reset:hover { color: var(--propia-brand); border-color: var(--propia-brand); }

.mtp-table { border: 1px solid var(--propia-border-card); border-radius: 12px; overflow: hidden; background: var(--propia-bg-card); }
/* altura 47px (= Unidades); antes padding 10px -> 55px. */
.mtp-head { display: grid; align-items: center; height: 47px; box-sizing: border-box; padding: 0 14px 0 0; background: var(--propia-bg-app); font-size: 10.5px; font-weight: 700; letter-spacing: .4px; color: var(--propia-text-faint); text-transform: uppercase; border-bottom: 1px solid var(--propia-border-divider); position: sticky; top: 0; z-index: 8; }
/* Divisor controles->datos (homogeneo, Alex 2026-10-08): el expander del header (2do hijo, 34px fijo)
   lleva separador full-height. Solo Programaciones (.mtp-table--wide): Planes no tiene expander (su 2do
   hijo es dato) y ademas es vista inactiva. Margen negativo compensa el padding vertical del head (10px). */
.mtp-table--wide .mtp-head > div:nth-child(2) { align-self: stretch; margin-top: -10px; margin-bottom: -10px; border-right: 1px solid var(--propia-border-divider); box-shadow: inset -1px 0 0 var(--propia-border-divider); }
.mtp-group { display: flex; align-items: center; gap: 8px; padding: 7px 14px; background: var(--propia-bg-app); border-bottom: 1px solid var(--propia-border-divider); font-size: 12px; font-weight: 700; color: var(--propia-text-secondary); }
.mtp-group-n { font-size: 10.5px; font-weight: 700; color: var(--propia-brand); background: var(--propia-brand-soft); border-radius: 20px; padding: 1px 8px; }
.mtp-row { display: grid; padding: 8px 14px 8px 0; border-bottom: 1px solid var(--propia-border-divider); font-size: 13px; color: var(--propia-text-body); }
.mtp-row:last-child { border-bottom: none; }
.mtp-exp-col { width: 34px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; padding: 0 4px; }
/* Columna de seleccion (canon 38px) + barra de accion masiva. */
.mtp-sel-col { width: 38px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; padding: 0 4px; }
.mtp-chk { display: inline-flex; align-items: center; justify-content: center; cursor: pointer; margin: 0; }
.mtp-chk input { width: 16px; height: 16px; cursor: pointer; accent-color: var(--propia-brand); }
.mtp-chk input:disabled { cursor: default; opacity: .4; }
.mtp-row-sel { background: var(--propia-brand-soft); }
.mtp-selbar { display: flex; align-items: center; gap: 12px; padding: 8px 14px; background: var(--propia-brand-soft); border: 1px solid var(--propia-brand-border, var(--propia-border-card)); border-radius: 10px; margin-bottom: 10px; }
.mtp-selbar-n { font-size: 12.5px; font-weight: 800; color: var(--propia-brand); }
.mtp-selbar-del { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--propia-danger-soft); background: var(--propia-bg-card); color: var(--propia-danger); font-size: 12px; font-weight: 700; cursor: pointer; border-radius: 8px; padding: 5px 11px; font-family: inherit; margin-left: auto; }
.mtp-selbar-del:hover:not(:disabled) { background: var(--propia-danger-soft); }
.mtp-selbar-del:disabled { opacity: .6; cursor: default; }
.mtp-selbar-x { border: 0; background: transparent; color: var(--propia-brand); font-size: 12px; font-weight: 700; cursor: pointer; text-decoration: underline; }
/* expander 26x26 bare (= .tbl-exp-btn de Unidades): padding 6, radius 7, transparente, color muted; oculto hasta hover de fila. */
.mtp-exp { border: 0; padding: 6px; border-radius: 7px; background: transparent; color: var(--propia-text-muted); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: opacity .12s, background .12s, color .12s; }
.mtp-row .mtp-exp { opacity: 0; }
.mtp-row:hover .mtp-exp { opacity: 1; }
.mtp-exp:hover { color: var(--propia-brand); background: var(--propia-brand-soft); }
.mtp-exp:disabled { opacity: .4; cursor: default; }
.mtp-exp-fijo { color: var(--propia-brand); border-color: var(--propia-brand-soft); background: var(--propia-brand-soft); }
.mtp-nom { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mtp-act { display: flex; align-items: center; justify-content: flex-end; gap: 6px; }
.mtp-del { width: 26px; height: 26px; border-radius: 7px; border: 1px solid var(--propia-border-card); background: var(--propia-bg-card); color: var(--propia-text-faint); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.mtp-del:hover { color: var(--propia-danger); border-color: var(--propia-danger); }
/* Toggle Activa (mismo patron que el switch del panel de programaciones). */
.mtp-toggle { position: relative; width: 30px; height: 17px; border-radius: 10px; border: 0; background: var(--propia-text-faint); cursor: pointer; padding: 0; }
.mtp-toggle.on { background: var(--propia-ok); }
.mtp-toggle-knob { position: absolute; top: 2px; left: 2px; width: 13px; height: 13px; border-radius: 50%; background: var(--propia-bg-card); transition: left .15s; }
.mtp-toggle.on .mtp-toggle-knob { left: 15px; }
/* Fila de alta: input "fantasma" punteado (canon regla 9-A), boton "+ Programar" violeta suave. */
.mtp-newrow { display: grid; padding: 9px 14px 9px 0; border-top: 1px solid var(--propia-border-divider); background: var(--propia-bg-app); }
.mtp-nf-inp { width: 100%; box-sizing: border-box; border: 1px solid transparent; border-radius: 8px; padding: 10px 12px; font-size: 13px; color: var(--propia-text-body); background: transparent; outline: none; font-family: inherit; transition: border-color .12s, box-shadow .12s; }
.mtp-nf-inp:focus { border: 1.5px solid var(--propia-brand); box-shadow: 0 0 0 3px rgba(109,79,227,.14); }
.mtp-nf-num { text-align: right; }
.mtp-num { text-align: right; font-variant-numeric: tabular-nums; }
.mtp-add { border: 1px solid var(--propia-brand-soft); background: var(--propia-brand-soft); color: var(--propia-brand); border-radius: 7px; font-size: 11.5px; font-weight: 700; padding: 6px 12px; cursor: pointer; font-family: inherit; white-space: nowrap; }
.mtp-add:hover { filter: brightness(.97); }
.mtp-add:disabled { opacity: .5; cursor: default; }
.mtp-footer { display: flex; align-items: center; padding: 10px 16px; background: var(--propia-bg-app); border-top: 1px solid var(--propia-border-divider); font-size: 12.5px; color: var(--propia-text-muted); }
/* Caja de tabla con FAB flotante (canon vista-tabla): reserva una franja inferior para el FAB. */
.mtp-tablebox { position: relative; }
.mtp-cta-row { cursor: default; }
/* Fila de alta ABIERTA (canon clic-para-abrir, = .dst-newrow--edit de Unidades): realce lavanda suave
   que la distingue del resto mientras se captura; se cierra al guardar o con Esc. */
.mtp-newrow--edit { background: var(--propia-brand-soft-2); }
.mtp-nf-ctacell { display: flex; align-items: center; }
@media (max-width: 1000px) { .mtp-table { overflow-x: auto; } .mtp-head, .mtp-row, .mtp-newrow { min-width: 920px; } }
/* La tabla de Programacion tiene mas columnas (tipo/tercero/contrato): scroll horizontal propio. */
.mtp-table--wide { overflow-x: auto; }
.mtp-table--wide .mtp-head, .mtp-table--wide .mtp-row, .mtp-table--wide .mtp-newrow,
.mtp-table--wide .mtp-group, .mtp-table--wide .mtp-footer { min-width: 1330px; }

/* Tercero en la fila de alta (SelectorPersona) compacto: que NO deforme la celda.
   El panel de resultados ya flota (Flotante); aqui solo se compacta el input y el chip elegido. */
.mtp-terc { min-width: 0; }
.mtp-terc .sp { gap: 0; }
.mtp-terc .sp-search { border-style: dashed; border-color: var(--propia-border-input); border-radius: 7px; padding: 0 8px; }
.mtp-terc .sp-search:focus-within { border-style: solid; border-color: var(--propia-brand); box-shadow: 0 0 0 2px rgba(109,79,227,.12); }
.mtp-terc .sp-search-inp { padding: 6px 0; font-size: 12.5px; }
/* Chip elegido: una sola linea a la altura del input (sin avatar ni documento). */
.mtp-terc .sp-chip { padding: 4px 6px 4px 9px; border-radius: 7px; gap: 6px; min-height: 32px; }
.mtp-terc .sp-chip-ava, .mtp-terc .sp-chip-doc { display: none; }
.mtp-terc .sp-chip-nom { font-size: 12.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mtp-terc .sp-chip-x { width: 22px; height: 22px; }

/* === Movil (hasta 640px): colapsar la fila de 8 KPIs === */
@media (max-width: 640px) {
    .mt-kpis { grid-template-columns: repeat(2, 1fr); }
}

/* === Modal del Selector de Campos de la programacion (mismo patron que zc-cfg-*) === */
.mtp-selcfg-back { position: fixed; inset: 0; background: rgba(20,26,38,.45); display: flex; align-items: center; justify-content: center; z-index: 3000; padding: 20px; }
/* Ancho homogeneo con el gestor de Unidades (.cg-modal--wide: 980px). */
.mtp-selcfg-modal { background: var(--propia-bg-card); border-radius: 14px; width: 980px; max-width: calc(100vw - 32px); max-height: 88vh; overflow: auto; box-shadow: 0 20px 60px rgba(20,30,50,.3); }
.mtp-selcfg-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 18px 20px 12px; border-bottom: 1px solid var(--propia-border-divider); }
.mtp-selcfg-title { font-size: 16px; font-weight: 700; color: var(--propia-text-h1); }
.mtp-selcfg-sub { font-size: 12.5px; color: var(--propia-text-muted); margin-top: 2px; }
.mtp-selcfg-x { border: none; background: none; font-size: 24px; line-height: 1; color: var(--propia-text-faint); cursor: pointer; }
.mtp-selcfg-body { padding: 16px 20px 20px; }

/* ===== Modales de alta de Mantenimiento (shell + campos por tokens; reemplaza Bootstrap crudo) ===== */
.mtm-back { position: fixed; inset: 0; background: rgba(20,26,38,.45); display: flex; align-items: center; justify-content: center; z-index: 3000; padding: 20px; }
.mtm-modal { background: var(--propia-bg-card); border-radius: 14px; width: 560px; max-width: calc(100vw - 32px); max-height: 90vh; overflow: auto; box-shadow: 0 20px 60px rgba(20,30,50,.3); }
.mtm-modal.mtm-lg { width: 760px; }
.mtm-head { display: flex; align-items: center; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--propia-border-divider); }
.mtm-head-tt { flex: 1; min-width: 0; }
.mtm-title { font-size: 16px; font-weight: 700; color: var(--propia-text-h1); }
.mtm-sub { font-size: 12.5px; color: var(--propia-text-muted); margin-top: 2px; }
.mtm-body { padding: 16px 20px 20px; }
.mtm-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 12px 14px; }
.mtm-c4 { grid-column: span 4; }
.mtm-c6 { grid-column: span 6; }
.mtm-c8 { grid-column: span 8; }
.mtm-c12 { grid-column: span 12; }
.mtm-fld { display: flex; flex-direction: column; gap: 4px; }
.mtm-lbl { font-size: 12px; font-weight: 600; color: var(--propia-text-secondary); }
.mtm-inp { width: 100%; box-sizing: border-box; border: 1px solid var(--propia-border-card); border-radius: 8px; padding: 8px 10px; font-size: 13px; font-family: inherit; color: var(--propia-text-body); background: var(--propia-bg-card); outline: none; }
.mtm-inp:focus { border-color: var(--propia-brand); box-shadow: 0 0 0 2px var(--propia-brand-soft); }
.mtm-inp:disabled { opacity: .7; background: var(--propia-bg-app); }
textarea.mtm-inp { resize: vertical; }
.mtm-check { display: flex; align-items: center; gap: 7px; font-size: 12.5px; color: var(--propia-text-secondary); cursor: pointer; }
.mtm-check input { width: 15px; height: 15px; accent-color: var(--propia-brand); }
.mtm-hint { font-size: 12px; color: var(--propia-text-muted); margin: 6px 0 0; }
.mtm-msg { font-size: 12.5px; border-radius: 8px; padding: 7px 10px; margin-top: 10px; }
.mtm-msg--ok { background: var(--propia-success-soft, var(--propia-brand-soft)); color: var(--propia-success-hover, var(--propia-brand)); }
.mtm-msg--err { background: var(--propia-danger-soft, var(--propia-brand-soft)); color: var(--propia-danger, var(--propia-brand)); }
@media (max-width: 640px) {
    .mtm-c4, .mtm-c6, .mtm-c8 { grid-column: span 12; }
}

/* ===== Ficha Detalle de intervencion (reemplaza el modal Bootstrap xl) ===== */
.mtm-modal.mtm-xl { width: 860px; }
.mtm-stat .mtm-stat-l { font-size: 11px; color: var(--propia-text-muted); text-transform: uppercase; letter-spacing: .3px; }
.mtm-stat .mtm-stat-v { font-size: 13.5px; color: var(--propia-text-body); margin-top: 3px; }
.mtm-link { color: var(--propia-brand); font-size: 12.5px; text-decoration: none; }
.mtm-link:hover { text-decoration: underline; }
.mtm-desc { font-size: 13px; color: var(--propia-text-body); margin: 4px 0 14px; }
.mtm-sec-h { font-size: 13px; font-weight: 700; color: var(--propia-text-h1); margin: 18px 0 8px; }
.mtm-act-row { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.mtm-btn { display: inline-flex; align-items: center; gap: 6px; padding: 7px 13px; border-radius: 8px; font-size: 12.5px; font-weight: 600; cursor: pointer; border: 1px solid var(--propia-border-card); background: var(--propia-bg-card); color: var(--propia-text-secondary); font-family: inherit; }
.mtm-btn:hover:not(:disabled) { border-color: var(--propia-brand); color: var(--propia-brand); }
.mtm-btn:disabled { opacity: .55; cursor: default; }
.mtm-btn--brand { background: var(--propia-brand); border-color: var(--propia-brand); color: var(--propia-text-inverse); }
.mtm-btn--brand:hover:not(:disabled) { background: var(--propia-brand-hover); border-color: var(--propia-brand-hover); color: var(--propia-text-inverse); }
.mtm-btn--danger { color: var(--propia-danger, #C0392B); border-color: var(--propia-danger-border, var(--propia-border-card)); }
.mtm-btn--danger:hover:not(:disabled) { border-color: var(--propia-danger, #C0392B); color: var(--propia-danger, #C0392B); }
.mtm-btn--danger-solid { background: var(--propia-danger, #C0392B); border-color: var(--propia-danger, #C0392B); color: var(--propia-text-inverse); }
.mtm-btn--ok-solid { background: var(--propia-success, #1A8754); border-color: var(--propia-success, #1A8754); color: var(--propia-text-inverse); }
.mtm-bita { border-left: 3px solid var(--propia-brand); padding-left: 12px; margin-bottom: 12px; }
.mtm-bita-meta { font-size: 11.5px; color: var(--propia-text-muted); }
.mtm-bita-txt { font-size: 13px; color: var(--propia-text-body); margin: 2px 0 0; }
.mtm-card { border: 1px solid var(--propia-border-card); border-radius: 10px; padding: 14px; margin-top: 14px; background: var(--propia-bg-card-soft, var(--propia-bg-app)); }
.mtm-card--ok { border-color: var(--propia-success, #1A8754); }
.mtm-card--danger { border-color: var(--propia-danger, #C0392B); }
.mtm-card-h { font-size: 13px; font-weight: 700; color: var(--propia-text-h1); margin: 0 0 10px; }
.mtm-card-h--danger { color: var(--propia-danger, #C0392B); }
