.cdpm-app, .cdpm-app * { box-sizing: border-box; }
.cdpm-app {
    --navy:#0f172a; --navy-2:#1e293b; --blue:#1d4ed8; --blue-2:#1e40af; --blue-soft:#eff6ff;
    --gold:#f59e0b; --gold-soft:#fef3c7; --card:#fff; --text:#334155; --muted:#64748b;
    --border:#e2e8f0; --green:#10b981; --green-soft:#d1fae5; --red:#ef4444; --red-soft:#fee2e2;
    --r-lg:16px; --r-md:10px; --r-sm:6px; --shadow:0 20px 40px -12px rgba(15,23,42,.18);
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif; color:var(--text);
}
.cdpm-app .wrap { --pad:2rem; --nav-h:66px; max-width:1240px; margin:0 auto; background:var(--card); border-radius:var(--r-lg); box-shadow:var(--shadow); padding:var(--pad); border-top:6px solid var(--gold); }
.cdpm-app h1,.cdpm-app h2,.cdpm-app h3,.cdpm-app h4 { color:var(--navy); }

/* ---------- LOGIN ---------- */
.cdpm-app .login-wrap { max-width:430px; margin:0 auto; padding:2.5rem 2rem; }
.cdpm-app .login-brand { text-align:center; margin-bottom:1.75rem; }
.cdpm-app .login-brand img { max-height:80px; margin-bottom:.75rem; }
.cdpm-app .login-brand h1 { font-size:1.5rem; margin:0 0 .25rem; font-weight:800; }
.cdpm-app .login-brand small { color:var(--muted); text-transform:uppercase; letter-spacing:1px; font-size:.72rem; font-weight:700; }
.cdpm-app .login-form { display:flex; flex-direction:column; gap:1rem; }
.cdpm-app .login-form input { padding:.8rem .9rem; border:1px solid var(--border); border-radius:var(--r-md); font-size:1rem; width:100%; }
.cdpm-app .login-form input:focus { outline:2px solid var(--blue); outline-offset:0; border-color:var(--blue); }
.cdpm-app .login-help { font-size:.78rem; color:var(--muted); text-align:center; line-height:1.5; }
/* LV - Login en escritorio: tarjeta centrada, más ancha y casi a toda la altura de la ventana (hasta un máximo en pantallas muy grandes), con el formulario centrado dentro. Antes ocupaba todo el ancho y parecía cortada. */
@media (min-width:821px) {
    .cdpm-app #screen-login:not([style*="none"]) { display:flex !important; flex-direction:column; justify-content:center;
        max-width:560px; padding:0; border:1px solid var(--border); border-top:6px solid var(--gold); border-radius:var(--r-lg);
        min-height:min(calc(100vh - 4rem), 760px); min-height:min(calc(100dvh - 4rem), 760px);
        margin:2rem auto; margin:max(2rem, calc((100vh - 760px) / 2)) auto; margin:max(2rem, calc((100dvh - 760px) / 2)) auto; }
    .cdpm-app #screen-login .login-wrap { max-width:380px; width:100%; }
}
/* LV - Login en móvil y tablet: ocupa toda la pantalla, con el formulario centrado, sin la franja blanca de debajo. El «!important» es porque la app enseña y esconde el login con un display en línea que, si no, anularía el centrado. */
@media (max-width:820px) {
    .cdpm-app #screen-login:not([style*="none"]) { display:flex !important; flex-direction:column; justify-content:center;
        min-height:100vh; min-height:100dvh; padding-bottom:var(--pad); box-shadow:none; }
}
/* LV - En móvil la barra de abajo no se enseña mientras estás en el login (antes se veía una franja oscura vacía). */
.cdpm-app #screen-app[style*="display:none"] ~ .nav-movil,
.cdpm-app #screen-app[style*="display: none"] ~ .nav-movil,
.cdpm-app .nav-movil:empty { display:none; }

/* ---------- CABECERA ---------- */
.cdpm-app .header { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:1rem; border-bottom:1px solid var(--border); padding-bottom:1.25rem; margin-bottom:1.5rem; }
.cdpm-app .brand h1 { font-size:1.5rem; margin:0; font-weight:800; letter-spacing:-.5px; }
.cdpm-app .brand small { color:var(--muted); font-weight:600; text-transform:uppercase; font-size:.72rem; letter-spacing:1px; }
.cdpm-app .user-box { display:flex; align-items:center; gap:.6rem; flex-wrap:wrap; }
.cdpm-app .user-badge { display:flex; align-items:center; gap:.6rem; background:#f8fafc; padding:.45rem .9rem; border-radius:30px; border:1px solid var(--border); font-size:.85rem; }
.cdpm-app .user-badge strong { color:var(--navy); }
.cdpm-app .role-pill { background:var(--gold); color:var(--navy); padding:.2rem .6rem; border-radius:20px; font-size:.7rem; font-weight:800; text-transform:uppercase; }
.cdpm-app .role-pill.coordinador { background:var(--blue); color:#fff; }
.cdpm-app .role-pill.administrador { background:var(--navy); color:var(--gold); }

/* ---------- NAV ----------
 * Barra de pestañas pegada arriba (sticky). Con listas largas, antes había
 * que subir toda la página para cambiar de pestaña, sobre todo en el móvil.
 * Va a sangre con márgenes negativos del acolchado del panel (--pad).      */
.cdpm-app .nav-caja { position:sticky; top:0; z-index:6; background:var(--card);
    margin:0 calc(var(--pad) * -1) 1.2rem; padding:.5rem var(--pad) 0;
    border-bottom:2px solid var(--border); }
.cdpm-app .nav-tabs { display:flex; gap:.35rem; overflow-x:auto; overflow-y:hidden;
    scroll-snap-type:x proximity; scrollbar-width:none; -ms-overflow-style:none;
    padding-bottom:.45rem; }
.cdpm-app .nav-tabs::-webkit-scrollbar { height:0; width:0; }
.cdpm-app .tab-btn { display:inline-flex; align-items:center; gap:.45rem; flex:0 0 auto;
    min-height:44px; padding:.45rem .95rem; border:1px solid transparent; border-radius:999px;
    background:none; cursor:pointer; font-weight:700; color:var(--muted); font-size:.86rem;
    white-space:nowrap; scroll-snap-align:center; font-family:inherit; }
.cdpm-app .tab-btn:hover { color:var(--navy); background:#f1f5f9; }
.cdpm-app .tab-btn:focus-visible { outline:2px solid var(--blue); outline-offset:2px; }
.cdpm-app .tab-btn.active { color:#fff; background:var(--blue); border-color:var(--blue);
    box-shadow:0 8px 16px -10px rgba(29,78,216,.9); }
.cdpm-app .tab-ico { font-size:1.02rem; line-height:1; }
.cdpm-app .tab-corto { display:none; }
/* Separador entre las pestañas del club y las del equipo elegido */
.cdpm-app .nav-sep { flex:0 0 auto; align-self:center; width:1px; height:26px;
    background:var(--border); margin:0 .4rem; }
.cdpm-app .tab-content { display:none; }
.cdpm-app .tab-content.active { display:block; }

/* ---------- BARRA INFERIOR (MÓVIL) ----------
 * Navegación tipo aplicación: barra fija abajo con los accesos más usados y
 * «Más» para el resto. En el ordenador no se ve (manda la tira de arriba). */
.cdpm-app .nav-movil { display:none; }
.cdpm-app .nav-hoja { display:none; }

@media (max-width:820px){
    .cdpm-app .nav-caja { display:none; }
    .cdpm-app .nav-movil {
        display:flex; position:fixed; left:0; right:0; bottom:0; z-index:40;
        background:var(--navy); box-shadow:0 -8px 24px -12px rgba(15,23,42,.9);
        padding:.3rem .25rem calc(.3rem + env(safe-area-inset-bottom, 0px));
    }
    .cdpm-app .nav-movil .nav-item {
        flex:1 1 0; min-width:0; display:flex; flex-direction:column; align-items:center;
        gap:3px; padding:.45rem .12rem .35rem; border:none; background:none; cursor:pointer;
        color:#9FB0D6; font-family:inherit; font-size:.58rem; font-weight:800;
        letter-spacing:0; text-transform:uppercase; border-top:3px solid transparent;
        border-radius:0; min-height:56px;
    }
    .cdpm-app .nav-movil .nav-item .nav-ico { font-size:1.25rem; line-height:1; }
    .cdpm-app .nav-movil .nav-item .nav-txt {
        max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
    }
    .cdpm-app .nav-movil .nav-item.active { color:var(--gold); border-top-color:var(--gold); }
    .cdpm-app .nav-movil .nav-item .nav-aviso {
        position:absolute; transform:translate(14px,-6px); background:var(--red); color:#fff;
        border-radius:999px; font-size:.6rem; padding:0 5px; line-height:1.5;
    }
    /* Sitio para la barra: si no, tapa el último botón de cada pantalla. */
    .cdpm-app .wrap { padding-bottom:calc(76px + env(safe-area-inset-bottom, 0px)); }

    /* Hoja de «Más» */
    .cdpm-app .nav-hoja { display:block; position:fixed; inset:0; z-index:60;
        background:rgba(15,23,42,.55); }
    .cdpm-app .nav-hoja[hidden] { display:none; }
    .cdpm-app .nav-hoja-caja { position:absolute; left:0; right:0; bottom:0;
        background:var(--card); border-radius:18px 18px 0 0; padding:.9rem 1rem
        calc(1rem + env(safe-area-inset-bottom, 0px)); max-height:80vh; overflow:auto; }
    .cdpm-app .nav-hoja-asa { width:44px; height:5px; border-radius:999px; background:var(--border);
        margin:0 auto .8rem; }
    .cdpm-app .nav-hoja-caja h3 { margin:0 0 .8rem; font-size:1rem; }
    .cdpm-app .nav-hoja-lista { display:grid; grid-template-columns:1fr 1fr; gap:.5rem;
        margin-bottom:.9rem; }
    .cdpm-app .nav-hoja-lista .nav-item {
        display:flex; align-items:center; gap:.6rem; min-height:52px; padding:.6rem .8rem;
        border:1px solid var(--border); border-radius:var(--r-md); background:#f8fafc;
        font-family:inherit; font-size:.82rem; font-weight:700; color:var(--navy);
        text-align:left; cursor:pointer;
    }
    .cdpm-app .nav-hoja-lista .nav-item.active { background:var(--blue); border-color:var(--blue); color:#fff; }
    .cdpm-app .nav-hoja-lista .nav-ico { font-size:1.15rem; }
    .cdpm-app #btn-nav-hoja-cerrar { width:100%; min-height:46px; }
}

/* ---------- BANNERS ---------- */
.cdpm-app .team-banner { background:linear-gradient(135deg,var(--navy) 0%,var(--blue) 100%); color:#fff; padding:1rem 1.4rem; border-radius:var(--r-md); margin-bottom:1.5rem; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:.6rem; }
.cdpm-app .team-banner h2 { margin:0; font-size:1.2rem; color:var(--gold); }
.cdpm-app .team-banner small { text-transform:uppercase; letter-spacing:1px; opacity:.8; font-size:.7rem; }
.cdpm-app .status { position:sticky; top:var(--nav-h); z-index:5; padding:.8rem 1.1rem;
    border-radius:var(--r-md); font-size:.85rem; font-weight:600; margin-bottom:1.25rem;
    display:none; box-shadow:0 10px 20px -16px rgba(15,23,42,.9); }
.cdpm-app .status.show { display:block; }
.cdpm-app .status.error { background:var(--red-soft); color:#991b1b; border:1px solid #fca5a5; }
.cdpm-app .status.info { background:var(--blue-soft); color:#1e3a8a; border:1px solid #93c5fd; }
.cdpm-app .status.success { background:var(--green-soft); color:#065f46; border:1px solid #a7f3d0; }

/* ---------- BOTONES ---------- */
.cdpm-app .btn { border:1px solid var(--border); background:#fff; color:var(--navy); padding:.6rem 1rem; border-radius:var(--r-md); font-weight:700; font-size:.85rem; cursor:pointer; }
.cdpm-app .btn:hover { border-color:var(--blue); color:var(--blue); }
.cdpm-app .btn-primary { background:var(--blue); border-color:var(--blue); color:#fff; }
.cdpm-app .btn-primary:hover { background:var(--blue-2); color:#fff; }
.cdpm-app .btn-save { background:var(--green); border:none; color:#fff; padding:.75rem 1.5rem; border-radius:var(--r-md); font-weight:700; cursor:pointer; margin-top:1rem; width:100%; font-size:1rem; }
.cdpm-app .btn-save:disabled { background:#94a3b8; cursor:not-allowed; }
.cdpm-app .btn-export { background:var(--blue); border:none; color:#fff; padding:.7rem 1.3rem; border-radius:var(--r-md); font-weight:700; cursor:pointer; margin-top:1rem; font-size:.88rem; }
.cdpm-app .btn-ghost { background:rgba(255,255,255,.18); border:1px solid rgba(255,255,255,.45); color:#fff; padding:.45rem .9rem; border-radius:var(--r-sm); font-weight:700; cursor:pointer; font-size:.8rem; }
@media (min-width:768px){ .cdpm-app .btn-save { width:auto; } }

/* ---------- TARJETAS EQUIPO ---------- */
.cdpm-app .teams-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(270px,100%),1fr)); gap:1.25rem; } /* LV - Evita que las columnas se salgan de la pantalla en móviles pequeños. */
.cdpm-app .team-card { border:1px solid var(--border); border-radius:var(--r-md); padding:1.25rem; background:#fff; display:flex; flex-direction:column; gap:.5rem; }
.cdpm-app .team-card h3 { margin:0; font-size:1.15rem; }
.cdpm-app .team-card .meta { font-size:.82rem; color:var(--muted); }
.cdpm-app .team-card .stats { display:flex; gap:1rem; font-size:.8rem; border-top:1px solid var(--border); padding-top:.6rem; margin-top:.2rem; }
.cdpm-app .team-card .stats b { color:var(--navy); font-size:1rem; display:block; }
.cdpm-app .action-grid { display:grid; grid-template-columns:1fr 1fr; gap:.4rem; margin-top:.5rem; }
.cdpm-app .btn-action { background:#f8fafc; border:1px solid var(--border); border-radius:var(--r-sm); padding:.55rem; font-size:.78rem; font-weight:700; color:var(--navy); cursor:pointer; }
.cdpm-app .btn-action:hover { background:var(--blue); color:#fff; border-color:var(--blue); }

/* ---------- TABLAS ---------- */
.cdpm-app table { width:100%; border-collapse:collapse; margin-top:.5rem; }
.cdpm-app th,.cdpm-app td { padding:.75rem; text-align:left; border-bottom:1px solid var(--border); font-size:.87rem; }
.cdpm-app th { background:var(--navy); color:#fff; font-weight:600; font-size:.78rem; text-transform:uppercase; letter-spacing:.3px; }
.cdpm-app th.sortable { cursor:pointer; user-select:none; }
.cdpm-app th.sortable:hover { background:var(--navy-2); }
.cdpm-app tbody tr:hover { background:#f8fafc; }
.cdpm-app .player-name { font-weight:700; color:var(--navy); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.cdpm-app .medical-badge { background:var(--red-soft); color:#b91c1c; border:1px solid #fca5a5; padding:1px 6px; border-radius:4px; font-size:.68rem; font-weight:800; cursor:help; }
.cdpm-app .dorsal { display:inline-flex; width:26px; height:26px; align-items:center; justify-content:center; background:var(--gold); color:var(--navy); border-radius:50%; font-weight:900; font-size:.75rem; }

/* ---------- FORMULARIOS ---------- */
.cdpm-app .card { background:#f8fafc; border:1px solid var(--border); border-radius:var(--r-md); padding:1rem; margin-bottom:1.25rem; }
.cdpm-app .grid-form { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr)); gap:1rem; } /* LV - Evita que las columnas se salgan de la pantalla en móviles pequeños. */
.cdpm-app .fg { display:flex; flex-direction:column; gap:.3rem; }
.cdpm-app .fg label { font-size:.72rem; font-weight:700; color:var(--muted); text-transform:uppercase; }
.cdpm-app .fg input,.cdpm-app .fg select { padding:.5rem; border:1px solid var(--border); border-radius:var(--r-sm); font-size:.88rem; font-weight:600; color:var(--navy); background:#fff; width:100%; }
.cdpm-app .fg input[readonly] { background:#f1f5f9; color:var(--muted); }
.cdpm-app .select-sm { padding:.45rem; border:1px solid var(--border); border-radius:var(--r-sm); font-size:.82rem; font-weight:600; color:var(--navy); background:#fff; cursor:pointer; width:100%; max-width:165px; }
.cdpm-app .input-stat { width:64px; padding:.35rem; border:1px solid var(--border); border-radius:var(--r-sm); text-align:center; font-weight:700; }
.cdpm-app .toolbar { display:flex; gap:.6rem; align-items:flex-end; flex-wrap:wrap; margin-bottom:1rem; }

/* ---------- ASISTENCIA ---------- */
.cdpm-app .btn-toggle { padding:.45rem .8rem; border:1px solid var(--border); border-radius:20px; cursor:pointer; font-size:.75rem; font-weight:800; min-width:112px; text-align:center; }
.cdpm-app .btn-toggle.asiste { background:var(--green-soft); color:#065f46; border-color:#a7f3d0; }
.cdpm-app .btn-toggle.falta { background:var(--red-soft); color:#991b1b; border-color:#fca5a5; }
.cdpm-app .btn-toggle.justifica { background:var(--gold-soft); color:#92400e; border-color:#fde68a; }
.cdpm-app .entrenos { display:flex; gap:6px; flex-wrap:wrap; }
.cdpm-app .entreno-col { display:flex; flex-direction:column; align-items:center; gap:2px; }
.cdpm-app .entreno-fecha { font-size:.62rem; color:var(--muted); font-weight:700; }
.cdpm-app .pill { width:21px; height:21px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:.62rem; font-weight:800; color:#fff; }
.cdpm-app .pill.asiste { background:var(--green); } .cdpm-app .pill.falta { background:var(--red); } .cdpm-app .pill.justifica { background:var(--gold); }
.cdpm-app .chip-row { display:flex; gap:.5rem; flex-wrap:wrap; margin-bottom:1rem; }
.cdpm-app .chip { padding:.35rem .8rem; border-radius:20px; font-size:.78rem; font-weight:700; background:#f1f5f9; color:var(--muted); border:1px solid var(--border); }
.cdpm-app .chip.green { background:var(--green-soft); color:#065f46; border-color:#a7f3d0; }
.cdpm-app .chip.red { background:var(--red-soft); color:#991b1b; border-color:#fca5a5; }
.cdpm-app .chip.gold { background:var(--gold-soft); color:#92400e; border-color:#fde68a; }
.cdpm-app .counter { background:var(--navy); color:var(--gold); padding:.45rem 1rem; border-radius:30px; font-weight:800; font-size:.85rem; }
/* Contador en amarillo cuando hay un dorsal repetido o sin poner. */
.cdpm-app .counter.gold { background:var(--gold); color:var(--navy); }

/* ---------- KPIs Y GRÁFICOS ---------- */
.cdpm-app .kpi-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(165px,100%),1fr)); gap:1rem; margin-bottom:1.75rem; } /* LV - Evita que las columnas se salgan de la pantalla en móviles pequeños. */
.cdpm-app .kpi { background:#f8fafc; border:1px solid var(--border); border-radius:var(--r-md); padding:1rem; text-align:center; }
.cdpm-app .kpi-title { font-size:.7rem; font-weight:700; color:var(--muted); text-transform:uppercase; margin-bottom:.35rem; }
.cdpm-app .kpi-value { font-size:1.7rem; font-weight:800; color:var(--navy); line-height:1.1; }
.cdpm-app .kpi-sub { font-size:.73rem; font-weight:600; margin-top:.2rem; color:var(--muted); }
.cdpm-app .text-green{color:var(--green);} .cdpm-app .text-red{color:var(--red);} .cdpm-app .text-blue{color:var(--blue);} .cdpm-app .text-gold{color:#d97706;}
.cdpm-app .panels { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(330px,100%),1fr)); gap:1.25rem; margin-bottom:1.25rem; } /* LV - Evita que las columnas se salgan de la pantalla en móviles pequeños. */
.cdpm-app .panel { background:#fff; border:1px solid var(--border); border-radius:var(--r-md); padding:1.15rem; }
.cdpm-app .panel h4 { margin:0 0 .9rem; font-size:1rem; border-bottom:2px solid #f1f5f9; padding-bottom:.5rem; display:flex; justify-content:space-between; align-items:baseline; gap:.5rem; }
.cdpm-app .panel h4 span { font-size:.72rem; color:var(--muted); font-weight:600; }
.cdpm-app .bar-item { margin-bottom:.75rem; }
.cdpm-app .bar-label { display:flex; justify-content:space-between; font-size:.8rem; font-weight:700; color:var(--navy); margin-bottom:.22rem; gap:.5rem; }
.cdpm-app .bar-label span:last-child { color:var(--muted); font-variant-numeric:tabular-nums; }
.cdpm-app .bar-bg { background:#e2e8f0; height:9px; border-radius:5px; overflow:hidden; }
.cdpm-app .bar-fill { height:100%; border-radius:5px; }
.cdpm-app .bar-fill.blue{background:var(--blue);} .cdpm-app .bar-fill.gold{background:var(--gold);} .cdpm-app .bar-fill.green{background:var(--green);} .cdpm-app .bar-fill.red{background:var(--red);}
.cdpm-app .donut-row { display:flex; align-items:center; gap:1.25rem; flex-wrap:wrap; }
.cdpm-app .legend { font-size:.8rem; }
.cdpm-app .legend div { display:flex; align-items:center; gap:.45rem; margin-bottom:.3rem; }
.cdpm-app .legend i { width:11px; height:11px; border-radius:3px; display:inline-block; }
.cdpm-app .form-strip { display:flex; gap:.3rem; }
.cdpm-app .form-strip span { width:23px; height:23px; border-radius:50%; color:#fff; font-weight:800; font-size:.72rem; display:inline-flex; align-items:center; justify-content:center; }
.cdpm-app .form-strip .V{background:var(--green);} .cdpm-app .form-strip .E{background:var(--gold);} .cdpm-app .form-strip .D{background:var(--red);}

/* ---------- ALERTAS ---------- */
.cdpm-app .alert-list { display:flex; flex-direction:column; gap:.6rem; }
.cdpm-app .alert { display:flex; gap:.75rem; align-items:flex-start; padding:.75rem .9rem; border-radius:var(--r-sm); border-left:4px solid; background:#f8fafc; font-size:.85rem; }
.cdpm-app .alert.alta { border-color:var(--red); background:#fef2f2; }
.cdpm-app .alert.media { border-color:var(--gold); background:#fffbeb; }
.cdpm-app .alert.baja { border-color:var(--muted); }
.cdpm-app .alert-tag { font-weight:800; font-size:.68rem; text-transform:uppercase; padding:.15rem .5rem; border-radius:4px; background:var(--navy); color:#fff; white-space:nowrap; }
.cdpm-app .alert-body b { color:var(--navy); }
.cdpm-app .alert-team { font-size:.72rem; color:var(--muted); font-weight:700; text-transform:uppercase; }

/* ---------- PDF CONVOCATORIA ---------- */
/* =====================================================================
 * CARTEL DE CONVOCATORIA (lo que se exporta a PDF)
 * ---------------------------------------------------------------------
 * UNA SOLA PAGINA, SIEMPRE. El cartel mide exactamente una hoja A4
 * (210mm x 296mm; 1mm de holgura para que jsPDF no genere una segunda
 * pagina en blanco por redondeo) y nunca crece: el listado se reescala
 * solo con ajustarListaPDF() hasta que cabe.
 *
 * Se mide en MILIMETROS a proposito: html2pdf clona el cartel dentro de un
 * contenedor cuyo ancho fija en las unidades del PDF (210mm), asi que si el
 * cartel se midiera en px habria un desajuste de medio pixel en el borde.
 *
 * Se autoabastece de variables y tipografia porque html2pdf lo clona FUERA
 * de .cdpm-app (regla de oro 11 del README): aqui no se puede prefijar nada
 * que cuelgue de .pdf-wrap. El marco y la vista previa si se prefijan,
 * porque esos no se exportan.
 * Colores del escudo: azul #06205D y amarillo #FCD800.
 * ===================================================================*/

/* Vista previa dentro del panel: el cartel se reduce con transform para que
   quepa en la pantalla. El transform va en .pdf-zoom, NUNCA en .pdf-wrap,
   porque .pdf-wrap es lo que se clona al exportar y se llevaria la escala. */
.cdpm-app .pdf-previo { margin:2rem 0 .5rem; font-size:.78rem; font-weight:700;
    letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
.cdpm-app .pdf-marco { width:100%; overflow:hidden; border-radius:10px; }
.cdpm-app .pdf-zoom { transform-origin:top left; }

.pdf-wrap {
    --pdf-fondo:#0A1330; --pdf-azul:#06205D; --pdf-azul-2:#0B2A6F;
    --pdf-oro:#FCD800; --pdf-tinta:#FFFFFF; --pdf-suave:#9FB0D6;
    --pdf-linea:rgba(255,255,255,.16);
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
    box-sizing:border-box; position:relative; overflow:hidden;
    width:210mm; height:296mm;
    background:var(--pdf-fondo); color:var(--pdf-tinta);
}
.pdf-wrap * { box-sizing:border-box; }

/* Foto de fondo. Va como background-image de un div, NO como <img>: al
   exportar, html2canvas no respeta object-fit y estiraria la foto. */
.pdf-foto { position:absolute; left:0; right:0; top:0; height:56%;
    background-color:var(--pdf-azul); background-repeat:no-repeat;
    background-size:cover; background-position:72% 38%; }
/* Velo azul del club: deja ver la foto arriba y la funde en azul abajo. */
.pdf-velo { position:absolute; left:0; right:0; top:0; bottom:0;
    background:linear-gradient(180deg,
        rgba(6,32,93,.46) 0%, rgba(6,32,93,.58) 26%, rgba(8,26,72,.92) 46%,
        var(--pdf-fondo) 58%, var(--pdf-fondo) 100%); }

.pdf-contenido { position:absolute; left:0; right:0; top:0; bottom:0;
    display:flex; flex-direction:column; }

/* Banda superior con jornada y rival */
.pdf-banda { flex:0 0 auto; background:var(--pdf-oro); color:var(--pdf-azul);
    padding:13px 30px; font-size:14px; font-weight:900; letter-spacing:3.4px;
    text-transform:uppercase; white-space:nowrap; overflow:hidden; }

/* Escudo y club */
.pdf-cabecera { flex:0 0 auto; display:flex; align-items:center; gap:14px; padding:22px 30px 0; }
/* Logos institucionales (ayuntamiento, federacion...) a la derecha del todo.
   Sin object-fit: html2canvas no lo respeta y los deformaria. */
.pdf-inst { margin-left:auto; max-height:62px; max-width:190px; display:block; }
.pdf-logo { width:74px; max-height:80px; object-fit:contain; }
.pdf-top-txt { display:flex; flex-direction:column; gap:3px; }
.pdf-club { font-size:15px; font-weight:800; letter-spacing:1.6px; text-transform:uppercase; }
.pdf-hash { font-size:10.5px; font-weight:700; letter-spacing:1.8px; color:var(--pdf-oro); }

/* Categoria y titular */
.pdf-titular { flex:0 0 auto; padding:26px 30px 0; }
.pdf-cat { display:inline-block; background:var(--pdf-oro); color:var(--pdf-azul);
    padding:7px 18px; border-radius:6px 16px 16px 6px; font-size:14px;
    font-weight:900; letter-spacing:3px; text-transform:uppercase; }
.pdf-h1 { margin:10px 0 0; font-size:62px; line-height:.94; font-weight:900;
    letter-spacing:-2px; text-transform:uppercase; color:var(--pdf-tinta); }

/* Franja del partido: dia, rival, lugar y las dos horas */
.pdf-franja { flex:0 0 auto; display:flex; align-items:center; gap:18px;
    margin:24px 30px 0; padding:12px 16px; border-radius:10px;
    background:rgba(4,14,44,.72); border-left:5px solid var(--pdf-oro); }
.pdf-dia { flex:0 0 auto; display:flex; flex-direction:column; min-width:74px; }
.pdf-dia-sem { font-size:19px; font-weight:900; letter-spacing:2px;
    text-transform:uppercase; color:var(--pdf-oro); line-height:1.1; }
.pdf-dia-num { font-size:11px; font-weight:700; letter-spacing:.4px; color:var(--pdf-suave);
    text-transform:uppercase; }
.pdf-partido { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:3px; }
/* Primero DONDE se juega (grande y en amarillo) y si es en casa o fuera; el
   rival, debajo y en pequeño. El "en campo de X" de antes se confundia con el
   nombre del rival. */
.pdf-sede { display:flex; align-items:baseline; gap:10px; min-width:0; }
.pdf-sede > span:first-child { font-size:19px; font-weight:900; letter-spacing:.2px;
    text-transform:uppercase; color:var(--pdf-oro); white-space:nowrap;
    overflow:hidden; text-overflow:ellipsis; }
.pdf-cond { flex:0 0 auto; font-size:10px; font-weight:900; letter-spacing:2px;
    text-transform:uppercase; color:var(--pdf-azul); background:var(--pdf-oro);
    border-radius:4px; padding:3px 8px; }
.pdf-vs { font-size:12px; font-weight:700; letter-spacing:1px; text-transform:uppercase;
    color:var(--pdf-tinta); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pdf-horas { flex:0 0 auto; display:flex; gap:8px; }
.pdf-hora { min-width:86px; border:1.5px solid var(--pdf-linea); border-radius:8px;
    padding:6px 10px; text-align:center; }
.pdf-hora strong { display:block; font-size:9px; letter-spacing:1.6px; font-weight:800;
    text-transform:uppercase; color:var(--pdf-suave); margin-bottom:1px; }
.pdf-hora span { display:block; font-size:25px; font-weight:900; line-height:1.05;
    letter-spacing:-1px; color:var(--pdf-tinta); }
.pdf-hora-destacada { background:var(--pdf-oro); border-color:var(--pdf-oro); }
.pdf-hora-destacada strong { color:var(--pdf-azul); opacity:.8; }
.pdf-hora-destacada span { color:var(--pdf-azul); }

/* Listado de convocados. La caja tiene altura fija (lo que sobra de la hoja)
   y el listado se reescala con --pdf-fila hasta que cabe: asi nunca hay una
   segunda pagina, por muchos convocados que haya. */
.pdf-lista-caja { flex:1 1 auto; min-height:0; overflow:hidden; padding:20px 30px 0;
    display:flex; flex-direction:column; }
.pdf-lista-titulo { flex:0 0 auto; font-size:10px; font-weight:800; letter-spacing:2.6px;
    text-transform:uppercase; color:var(--pdf-suave); padding-bottom:6px;
    border-bottom:2px solid var(--pdf-oro); margin-bottom:6px; }
.pdf-players { --pdf-fila:1; flex:1 1 auto; min-height:0;
    display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    grid-auto-flow:column; align-content:center; gap:0 26px; }
.pdf-players.pdf-tres { grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);
    gap:0 18px; }
.pdf-player { display:flex; align-items:baseline; gap:12px;
    padding:calc(8px * var(--pdf-fila)) 2px; border-bottom:1px solid var(--pdf-linea); }
.pdf-dorsal { flex:0 0 auto; min-width:calc(30px * var(--pdf-fila));
    font-size:calc(19px * var(--pdf-fila)); font-weight:900; color:var(--pdf-oro);
    letter-spacing:.5px; font-variant-numeric:tabular-nums; }
.pdf-nombre { min-width:0; font-size:calc(15px * var(--pdf-fila)); font-weight:900;
    letter-spacing:.8px; text-transform:uppercase; color:var(--pdf-tinta);
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pdf-pila { font-weight:600; letter-spacing:.4px; text-transform:none;
    color:rgba(255,255,255,.78); }
.pdf-vacio { grid-column:1/-1; padding:18px 0; text-align:center;
    color:var(--pdf-suave); font-size:14px; }

/* Pie del cartel (diseño pedido por el club, v3.7): entrenador y lema,
   linea dorada, la equipacion de partido con el patrocinador principal en
   medio, otra linea dorada y el resto de patrocinadores. Todo centrado y
   sobre el azul: los logos van en blanco, sin tarjetas. */
.pdf-pie { flex:0 0 auto; border-top:4px solid var(--pdf-oro);
    background:rgba(4,14,44,.88); padding:11px 30px 13px; text-align:center; }
.pdf-tecnico { font-size:11px; font-weight:800; letter-spacing:2.4px;
    text-transform:uppercase; color:var(--pdf-oro); margin-bottom:5px; }
.pdf-lema { font-size:12px; font-weight:700; line-height:1.4; color:var(--pdf-tinta); }

.pdf-abajo { margin-top:9px; }
.pdf-abajo[hidden] { display:none; }

.pdf-equipacion { border-top:1px solid rgba(252,216,0,.5); padding-top:8px; }
.pdf-equipacion[hidden] { display:none; }
.pdf-eq-tit { display:block; font-size:12px; font-weight:900; letter-spacing:3px;
    text-transform:uppercase; color:var(--pdf-tinta); margin-bottom:6px; }
/* Sin object-fit a proposito: html2canvas no lo respeta y deformaria la foto.
   Con max-height/max-width el propio navegador la escala proporcional. */
.pdf-eq-img { max-height:86px; max-width:620px; display:inline-block; }
.pdf-eq-nota { display:block; margin-top:4px; font-size:10px; font-weight:800;
    letter-spacing:1.6px; text-transform:uppercase; color:var(--pdf-oro); }

.pdf-patro { border-top:1px solid rgba(252,216,0,.5); margin-top:8px; padding-top:8px; }
.pdf-patro[hidden] { display:none; }
.pdf-patro-tit { display:block; font-size:11px; font-weight:900; letter-spacing:3px;
    text-transform:uppercase; color:var(--pdf-tinta); margin-bottom:5px; }
.pdf-patro img { max-height:94px; max-width:684px; display:inline-block; }

/* ---------------------------------------------------------------------
 * EDICION RAPIDA DEL LISTADO DE FICHAS (v3.3.0)
 * Dorsal y posicion se editan en la propia lista, sin abrir cada ficha.
 * -------------------------------------------------------------------*/
.cdpm-app .jl-barra { margin:0 0 .6rem; align-items:center; }
.cdpm-app .jl-edit {
    width:100%; max-width:150px; min-height:38px; padding:.35rem .5rem;
    border:1px solid var(--border); border-radius:8px; background:#fff;
    font-size:.86rem; font-weight:700; color:var(--navy); font-family:inherit;
}
.cdpm-app .jl-dorsal { max-width:82px; text-align:center; }
.cdpm-app .jl-talla { max-width:92px; text-align:center; text-transform:uppercase; }
.cdpm-app .jl-edit:focus { outline:2px solid var(--navy); outline-offset:1px; border-color:var(--navy); }
.cdpm-app tr.editado { background:var(--gold-soft); }
.cdpm-app tr.editado .jl-edit { border-color:var(--gold); }

/* ---------------------------------------------------------------------
 * AJUSTES DEL CLUB (v3.5.0)
 * -------------------------------------------------------------------*/
.cdpm-app .aj-ancho { grid-column:1 / -1; }
.cdpm-app .fg textarea { padding:.5rem; border:1px solid var(--border); border-radius:var(--r-sm);
    font-size:.88rem; font-weight:600; color:var(--navy); background:#fff; width:100%;
    font-family:inherit; resize:vertical; min-height:62px; line-height:1.45; }
.cdpm-app .fg textarea:focus, .cdpm-app .fg input:focus { outline:2px solid var(--blue); outline-offset:1px; border-color:var(--blue); }
.cdpm-app .aj-check { display:flex; align-items:center; gap:.7rem; margin-top:1.1rem;
    font-size:.86rem; font-weight:600; color:var(--navy); cursor:pointer; }
.cdpm-app .aj-check input { width:20px; height:20px; flex:0 0 auto; }
.cdpm-app .aj-previas { display:flex; gap:1rem; flex-wrap:wrap; margin-top:1.2rem; }
.cdpm-app .aj-previa { margin:0; width:160px; text-align:center; }
.cdpm-app .aj-previa img { width:100%; height:112px; object-fit:contain; background:#f8fafc;
    border:1px solid var(--border); border-radius:var(--r-sm); padding:4px; }
.cdpm-app .aj-previa figcaption { font-size:.7rem; font-weight:800; text-transform:uppercase;
    letter-spacing:.06em; color:var(--muted); margin-top:.4rem; }
.cdpm-app .aj-previa.aj-rota figcaption::after { content:' · no se pudo cargar'; color:var(--red); }

/* =====================================================================
 * RESTAURADO en v3.2.0. Estas reglas desaparecieron por error en la v3.1.0
 * al sustituir el bloque de estilos del PDF por rango de texto: el rango
 * abarcaba tambien lo que habia detras. Sin ellas las tablas no se convertian
 * en fichas en el movil, la ventana "Ver ficha" salia sin estilos y los
 * estados de convocatoria perdian el color. test/auditoria.js (seccion Q)
 * comprueba ahora que siguen existiendo.
 * ===================================================================*/
.cdpm-app .empty { padding:2rem; text-align:center; color:var(--muted); font-size:.88rem; }
.cdpm-app .hint { font-size:.8rem; color:var(--muted); margin:.4rem 0 0; }
.cdpm-app .readonly-note { background:var(--blue-soft); border:1px solid #93c5fd; color:#1e3a8a; padding:.6rem .9rem; border-radius:var(--r-sm); font-size:.8rem; font-weight:600; margin-bottom:1rem; }

@media (max-width:820px){
    .cdpm-app .wrap { --pad:1rem; --nav-h:60px; border-radius:0; }
    .cdpm-app .tab-largo { display:none; }
    .cdpm-app .tab-corto { display:inline; }
    .cdpm-app .tab-btn { padding:.45rem .8rem; font-size:.82rem; }
    .cdpm-app table,.cdpm-app thead,.cdpm-app tbody,.cdpm-app th,.cdpm-app td,.cdpm-app tr { display:block; }
    .cdpm-app thead tr { position:absolute; top:-9999px; left:-9999px; }
    .cdpm-app tr { border:1px solid var(--border); margin-bottom:1rem; border-radius:var(--r-md); padding:.5rem; background:#f8fafc; }
    .cdpm-app td { border:none; position:relative; padding:.7rem .7rem .7rem 42%; text-align:right; border-bottom:1px solid #e2e8f0; min-height:2.9rem; display:flex; justify-content:flex-end; align-items:center; }
    .cdpm-app td:last-child { border-bottom:0; }
    .cdpm-app td::before { content:attr(data-label); position:absolute; left:.7rem; width:38%; text-align:left; font-weight:700; color:var(--muted); font-size:.75rem; }
    .cdpm-app .select-sm { max-width:100%; }
}

/* =====================================================================
 * v2.4 — escudo en cabecera, historial de convocatorias, ficha del jugador
 * ===================================================================*/

/* Escudo junto al título del panel */
.cdpm-app .brand { display:flex; align-items:center; gap:.85rem; }
.cdpm-app .hdr-logo { max-height:52px; width:auto; object-fit:contain; }

/* Historial de las últimas convocatorias, dentro de la pestaña Convocatoria */
.cdpm-app .conv-hist { display:flex; gap:6px; flex-wrap:wrap; }
.cdpm-app .conv-hist .entreno-col { min-width:34px; }
.cdpm-app .pill.convocado { background:var(--green); }
.cdpm-app .pill.no_disponible { background:var(--muted); }
.cdpm-app .pill.lesionado { background:var(--red); }
.cdpm-app .pill.sancionado { background:#7c3aed; }
.cdpm-app .pill.viaje { background:var(--blue); }
.cdpm-app .pill.decision_tecnica { background:#0f766e; }
.cdpm-app .pill.falta_entrenamientos { background:#b45309; }
.cdpm-app .pill.sin_datos { background:#e2e8f0; color:var(--muted); }

/* Botón pequeño para abrir la ficha */
.cdpm-app .btn-ficha { background:#fff; border:1px solid var(--border); color:var(--blue); border-radius:var(--r-sm);
  padding:.3rem .6rem; font-weight:700; font-size:.74rem; cursor:pointer; white-space:nowrap; }
.cdpm-app .btn-ficha:hover { background:var(--blue); color:#fff; border-color:var(--blue); }

/* Ventana de ficha del jugador */
.cdpm-modal { position:fixed; inset:0; z-index:99999; background:rgba(15,23,42,.6);
  display:flex; align-items:flex-start; justify-content:center; padding:5vh 1rem; overflow-y:auto; }
.cdpm-modal[hidden] { display:none !important; }
.cdpm-modal-box { background:#fff; border-radius:12px; max-width:640px; width:100%;
  box-shadow:0 20px 60px rgba(0,0,0,.35); overflow:hidden; }
.cdpm-modal-head { display:flex; justify-content:space-between; align-items:center; gap:1rem;
  background:var(--navy); color:#fff; padding:1rem 1.25rem; }
.cdpm-modal-head h3 { margin:0; font-size:1.05rem; font-weight:800; }
.cdpm-modal-body { padding:1.25rem; }
.cdpm-modal-body .ficha-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:.75rem 1.25rem; }
.cdpm-modal-body .ficha-item strong { display:block; color:var(--muted); font-size:.66rem;
  text-transform:uppercase; letter-spacing:.5px; margin-bottom:2px; }
.cdpm-modal-body .ficha-item span { font-size:.9rem; font-weight:600; word-break:break-word; }
.cdpm-modal-body .ficha-sep { grid-column:1/-1; border-top:1px solid var(--border); margin:.35rem 0; }
.cdpm-modal-body .ficha-medica { grid-column:1/-1; background:var(--gold-soft); border:1px solid #fde68a;
  border-radius:var(--r-sm); padding:.7rem .9rem; color:#92400e; }
@media (max-width:600px) {
  .cdpm-modal-body .ficha-grid { grid-template-columns:1fr; }
  .cdpm-app .brand { gap:.6rem; }
  .cdpm-app .hdr-logo { max-height:40px; }
}


/* =====================================================================
 * v2.4.1 — desbordamiento horizontal
 * Las tablas anchas (convocatoria, plantilla, coordinación) empujaban el
 * ancho de TODA la página y obligaban a desplazarse en horizontal, cortando
 * la cabecera y las pestañas. Ahora cada tabla se desplaza dentro de su
 * propia caja y la página nunca se ensancha.
 * ===================================================================*/
.cdpm-app .table-wrap { width:100%; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }
/* overflow-x:clip y no hidden: 'hidden' convierte el contenedor en una caja de
   scroll y, si algo se desborda dentro, queda recortado SIN forma de
   desplazarlo con el dedo. 'clip' recorta igual pero no atrapa el gesto. */
.cdpm-app .wrap { max-width:100%; overflow-x:hidden; }
@supports (overflow-x:clip) { .cdpm-app .wrap { overflow-x:clip; } }
.cdpm-app .nav-tabs { max-width:100%; }
/* Las cabeceras no se parten ("DORS AL") y el nombre del jugador conserva un
   ancho mínimo legible: la tabla mantiene su tamaño natural y, si no cabe, es
   la caja .table-wrap la que se desplaza en horizontal, nunca la página. */
.cdpm-app thead th { white-space:nowrap; }
.cdpm-app td { overflow-wrap:break-word; }
.cdpm-app td .player-name { min-width:150px; }
.cdpm-app .kpi-grid, .cdpm-app .panels, .cdpm-app .teams-grid, .cdpm-app .grid-form { max-width:100%; }

@media (max-width:820px){
    /* En móvil las tablas ya se pintan como fichas apiladas: sin scroll lateral
       y sin anchos mínimos, que ahí solo estorbarían. */
    /* Nunca 'visible': si por lo que sea una tabla no se convierte en fichas,
       tiene que poder desplazarse en lateral en vez de quedar recortada. */
    .cdpm-app .table-wrap { overflow-x:auto; touch-action:pan-x pan-y; }
    .cdpm-app td .player-name { min-width:0; }
    .cdpm-app .conv-hist { justify-content:flex-end; }
}

/* =====================================================================
 * v3.2 — Plantilla en lista desplegable, fichas compactas en el móvil
 * ===================================================================*/

/* El atributo hidden debe ganar siempre, aunque otra regla fije display. */
.cdpm-app [hidden] { display:none !important; }

/* ---------- Plantilla: lista de jugadores con "+" ---------- */
.cdpm-app .pl-toolbar { display:flex; justify-content:space-between; align-items:flex-end;
  gap:.75rem; flex-wrap:wrap; margin-bottom:1rem; }
.cdpm-app .pl-toolbar .fg { max-width:220px; flex:0 1 220px; }
.cdpm-app .pl-toolbar .select-sm { max-width:none; }
.cdpm-app .pl-acciones { display:flex; gap:.5rem; align-items:center; flex-wrap:wrap; }
.cdpm-app .pl-lista { display:flex; flex-direction:column; gap:.5rem; }
.cdpm-app .pl-item { background:#fff; border:1px solid var(--border); border-radius:var(--r-md);
  overflow:hidden; transition:border-color .15s, box-shadow .15s; }
.cdpm-app .pl-item.abierto { border-color:#c7d2fe; box-shadow:0 4px 14px rgba(15,23,42,.07); }

/* Toda la fila es el botón: blanco táctil de 56 px, cómodo con el pulgar. */
.cdpm-app .pl-fila { position:relative; display:flex; align-items:center; gap:.75rem; width:100%;
  min-height:56px; padding:.6rem .8rem; margin:0; background:none; border:0; text-align:left;
  cursor:pointer; font:inherit; color:inherit; -webkit-tap-highlight-color:transparent; }
.cdpm-app .pl-fila:hover { background:#f8fafc; }
.cdpm-app .pl-fila:focus-visible { outline:3px solid var(--blue); outline-offset:-3px; }
.cdpm-app .pl-fila .dorsal { flex:0 0 auto; width:32px; height:32px; font-size:.8rem; }
.cdpm-app .pl-nombre { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:2px; }
.cdpm-app .pl-nombre strong { font-size:.95rem; font-weight:800; color:var(--navy); line-height:1.25; overflow-wrap:anywhere; }
.cdpm-app .pl-nombre small { font-size:.76rem; color:var(--muted); font-weight:600;
  display:flex; gap:.4rem; flex-wrap:wrap; align-items:center; }
.cdpm-app .pl-aviso { background:var(--red-soft); color:#991b1b; border-radius:4px;
  padding:0 .35rem; font-size:.66rem; font-weight:800; }
.cdpm-app .pl-chips { display:flex; gap:.35rem; flex:0 0 auto; }
.cdpm-app .pl-chip { font-size:.75rem; font-weight:800; padding:.2rem .55rem; border-radius:20px;
  background:#f1f5f9; color:var(--text); white-space:nowrap; }
.cdpm-app .pl-chip.asis-alta  { background:var(--green-soft); color:#065f46; }
.cdpm-app .pl-chip.asis-media { background:var(--gold-soft); color:#92400e; }
.cdpm-app .pl-chip.asis-baja  { background:var(--red-soft); color:#991b1b; }
.cdpm-app .pl-mas { flex:0 0 auto; width:34px; height:34px; border-radius:50%; background:var(--navy);
  color:#fff; display:inline-flex; align-items:center; justify-content:center;
  font-size:1.35rem; font-weight:700; line-height:1; transition:background .15s; }
.cdpm-app .pl-item.abierto .pl-mas { background:var(--gold); color:var(--navy); }
.cdpm-app .pl-sr { position:absolute; width:1px; height:1px; overflow:hidden;
  clip:rect(0 0 0 0); white-space:nowrap; }

.cdpm-app .pl-detalle { padding:.1rem .8rem .9rem; border-top:1px solid var(--border); background:#fbfcfe; }
.cdpm-app .pl-datos { display:grid; grid-template-columns:repeat(4,1fr); gap:.5rem; margin:.8rem 0; }
.cdpm-app .pl-dato { background:#fff; border:1px solid var(--border); border-radius:var(--r-sm);
  padding:.5rem .25rem; text-align:center; min-width:0; }
.cdpm-app .pl-dato-valor { display:block; font-size:1.15rem; font-weight:800; color:var(--navy); line-height:1.1; }
.cdpm-app .pl-dato-etq { display:block; font-size:.6rem; text-transform:uppercase; letter-spacing:.4px;
  color:var(--muted); font-weight:700; margin-top:3px; }
.cdpm-app .pl-dato.asis-alta  .pl-dato-valor { color:#047857; }
.cdpm-app .pl-dato.asis-media .pl-dato-valor { color:#b45309; }
.cdpm-app .pl-dato.asis-baja  .pl-dato-valor { color:#b91c1c; }
.cdpm-app .pl-dato.tarjeta-a  .pl-dato-valor { color:#b45309; }
.cdpm-app .pl-dato.tarjeta-r  .pl-dato-valor { color:#b91c1c; }
.cdpm-app .pl-entrenos { margin-bottom:.8rem; }
.cdpm-app .pl-subt { display:block; font-size:.66rem; text-transform:uppercase; letter-spacing:.5px;
  font-weight:800; color:var(--muted); margin-bottom:.35rem; }
.cdpm-app .pl-ver-ficha { display:block; width:100%; padding:.7rem; font-size:.85rem; }
.cdpm-app .pl-solo-movil { display:none; }

/* ---------- Casilla "mantener en el equipo anterior" ---------- */
.cdpm-app .j-mantener { display:flex; gap:.6rem; align-items:flex-start; margin-top:.9rem;
  padding:.7rem .9rem; background:var(--gold-soft); border:1px solid #fde68a;
  border-radius:var(--r-sm); font-size:.84rem; color:#78350f; cursor:pointer; line-height:1.4; }
.cdpm-app .j-mantener input { width:20px; height:20px; margin:1px 0 0; flex:0 0 auto; }

@media (max-width:600px) {
  /* En el móvil el % de asistencia baja bajo el nombre y la columna de
     chips desaparece: el nombre gana ~80 px y deja de partirse en 3 líneas. */
  .cdpm-app .pl-chips { display:none; }
  .cdpm-app .pl-solo-movil { display:inline-block; font-size:.68rem; padding:.05rem .4rem; }
  .cdpm-app .pl-fila { gap:.6rem; padding:.55rem .7rem; }
  .cdpm-app .pl-datos { gap:.35rem; }
  .cdpm-app .pl-dato { padding:.45rem .15rem; }
  .cdpm-app .pl-dato-valor { font-size:1.05rem; }
  /* Etiquetas en minúscula y sin espaciado: "ASISTENCIA" no cabía en la caja. */
  .cdpm-app .pl-dato-etq { font-size:.58rem; text-transform:none; letter-spacing:-.1px; white-space:nowrap; }
  .cdpm-app .pl-toolbar .fg { max-width:none; flex:1 1 150px; }
}

/* ---------- Fichas compactas en el móvil ----------
 * Con la vista genérica cada jugador ocupaba 5-6 filas "etiqueta: valor".
 * Estas reglas reordenan las MISMAS celdas en una ficha corta. Se usa
 * :nth-child y attr(data-label) en vez de escribir las etiquetas en el CSS,
 * para no depender de la codificación con la que el servidor sirve este
 * archivo (las tildes en un selector CSS pueden romperse). */
@media (max-width:820px) {

  /* Asistencia: jugador y botón de estado en una sola línea */
  .cdpm-app #tbody-asistencia tr { display:flex; align-items:center; justify-content:space-between;
    gap:.6rem; padding:.5rem .75rem; margin-bottom:.5rem; }
  .cdpm-app #tbody-asistencia td { display:block; padding:0; border:0; min-height:0; text-align:left; }
  .cdpm-app #tbody-asistencia td::before { display:none; }
  .cdpm-app #tbody-asistencia td:nth-child(1) { flex:1 1 auto; min-width:0; }
  .cdpm-app #tbody-asistencia td:nth-child(2) { flex:0 0 auto; }
  .cdpm-app #tbody-asistencia .btn-toggle { min-height:44px; }

  /* Convocatoria: dorsal + nombre + posición, estado debajo y el historial */
  .cdpm-app #tbody-convocatoria tr { display:grid; grid-template-columns:auto 1fr;
    grid-template-areas:"dorsal jugador" "dorsal posicion" "estado estado" "hist hist";
    column-gap:.7rem; row-gap:.4rem; padding:.7rem .8rem; margin-bottom:.6rem; }
  .cdpm-app #tbody-convocatoria td { display:block; padding:0; border:0; min-height:0; text-align:left; }
  .cdpm-app #tbody-convocatoria td::before { display:none; }
  .cdpm-app #tbody-convocatoria td:nth-child(1) { grid-area:estado; }
  .cdpm-app #tbody-convocatoria td:nth-child(2) { grid-area:dorsal; align-self:center; }
  .cdpm-app #tbody-convocatoria td:nth-child(3) { grid-area:jugador; }
  .cdpm-app #tbody-convocatoria td:nth-child(4) { grid-area:posicion; color:var(--muted); font-size:.8rem; }
  .cdpm-app #tbody-convocatoria td:nth-child(5) { grid-area:hist; display:flex; align-items:center;
    justify-content:space-between; gap:.6rem; flex-wrap:wrap; }
  .cdpm-app #tbody-convocatoria td:nth-child(5)::before { display:block; position:static; width:auto;
    font-size:.66rem; text-transform:uppercase; letter-spacing:.3px; }
  .cdpm-app #tbody-convocatoria .conv-select { max-width:none; width:100%; min-height:44px; font-size:.9rem; }
  .cdpm-app #tbody-convocatoria .conv-hist { justify-content:flex-start; }
  .cdpm-app #tbody-convocatoria td[colspan] { grid-column:1 / -1; }

  /* Hoja de partido: nombre, titularidad y los cuatro números en una fila */
  .cdpm-app #tbody-estadisticas tr { display:grid; grid-template-columns:1fr 1fr .75fr .75fr;
    grid-template-areas:"jug jug jug jug" "tit tit tit tit" "min gol ta tr";
    gap:.45rem .5rem; padding:.7rem .8rem; margin-bottom:.6rem; }
  .cdpm-app #tbody-estadisticas td { display:flex; flex-direction:column; align-items:flex-start;
    justify-content:flex-start; padding:0; border:0; min-height:0; text-align:left; }
  .cdpm-app #tbody-estadisticas td::before { position:static; width:auto; margin-bottom:.2rem;
    font-size:.64rem; text-transform:uppercase; letter-spacing:.3px; }
  .cdpm-app #tbody-estadisticas td:nth-child(1)::before,
  .cdpm-app #tbody-estadisticas td:nth-child(2)::before { display:none; }
  .cdpm-app #tbody-estadisticas td:nth-child(1) { grid-area:jug; }
  .cdpm-app #tbody-estadisticas td:nth-child(2) { grid-area:tit; }
  .cdpm-app #tbody-estadisticas td:nth-child(3) { grid-area:min; }
  .cdpm-app #tbody-estadisticas td:nth-child(4) { grid-area:gol; }
  .cdpm-app #tbody-estadisticas td:nth-child(5) { grid-area:ta; align-items:center; }
  .cdpm-app #tbody-estadisticas td:nth-child(6) { grid-area:tr; align-items:center; }
  .cdpm-app #tbody-estadisticas .est-tit { max-width:none; width:100%; min-height:44px; font-size:.9rem; }
  .cdpm-app #tbody-estadisticas .input-stat { width:100%; min-height:44px; font-size:1rem; }
  .cdpm-app #tbody-estadisticas input[type=checkbox] { width:26px !important; height:26px !important; margin-top:.35rem; }
  .cdpm-app #tbody-estadisticas td[colspan] { grid-column:1 / -1; }
}

/* ---------- BUSCADOR EN LAS TABLAS ---------- */
/* LV - Buscador que aparece encima de cada tabla para filtrar sus filas. */
.cdpm-app .tabla-buscador { display:flex; align-items:center; gap:.75rem; flex-wrap:wrap; margin:0 0 .75rem; }
.cdpm-app .tabla-buscador input { flex:0 1 320px; min-width:0; width:100%; padding:.55rem .8rem; border:1px solid var(--border); border-radius:var(--r-md); font-size:.9rem; font-family:inherit; color:var(--navy); background:#fff; }
.cdpm-app .tabla-buscador input:focus { outline:2px solid var(--blue); outline-offset:1px; border-color:var(--blue); }
.cdpm-app .tabla-buscador-aviso { font-size:.8rem; font-weight:600; color:var(--muted); }
.cdpm-app .tabla-buscador-aviso.vacio { color:var(--red); }
.cdpm-app tr.cdpm-fila-oculta { display:none !important; }
@media (max-width:600px) { .cdpm-app .tabla-buscador input { flex-basis:100%; } } /* LV - En móvil el buscador ocupa todo el ancho. */

/* =====================================================================
 * SISTEMA UNIFICADO DE CONTROLES
 * ---------------------------------------------------------------------
 * LV - Todos los campos (texto, fecha, hora, número, desplegables y buscadores) tienen la
 * misma altura, borde y aspecto, y se alinean entre sí aunque una etiqueta ocupe dos
 * líneas. Así los formularios se ven ordenados. Algunos anchos que venían fijos en la
 * plantilla se anulan desde aquí para que todos los campos queden iguales.
 * ===================================================================*/
.cdpm-app { --ctl-h:44px; --ctl-h-tabla:40px; --ctl-pad:.85rem; --sep:1rem; --sep-s:.75rem; }

/* Campos de formulario y de las barras de filtros */
.cdpm-app .fg input:not([type=checkbox]):not([type=radio]),
.cdpm-app .fg select,
.cdpm-app .toolbar select,
.cdpm-app .tabla-buscador input,
.cdpm-app .login-form input {
    height:var(--ctl-h); min-height:var(--ctl-h); padding:0 var(--ctl-pad);
    border:1px solid var(--border); border-radius:var(--r-md); background-color:#fff;
    font-family:inherit; font-size:.9rem; font-weight:600; line-height:1.2; color:var(--navy);
    width:100%; box-sizing:border-box;
}
.cdpm-app .fg textarea { padding:.7rem var(--ctl-pad); border-radius:var(--r-md); font-family:inherit; font-size:.9rem; }
.cdpm-app .fg input[readonly] { background-color:#f1f5f9; color:var(--muted); }
.cdpm-app .fg input::placeholder, .cdpm-app .fg textarea::placeholder,
.cdpm-app .tabla-buscador input::placeholder { color:#94a3b8; font-weight:500; }

/* Desplegables: mismo aspecto en todos los navegadores (el nativo es más alto) */
.cdpm-app select { -webkit-appearance:none; appearance:none; cursor:pointer;
    padding-right:2.25rem;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2364748b' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat:no-repeat; background-position:right .85rem center; background-size:12px 8px; }
.cdpm-app select:disabled { cursor:not-allowed; opacity:.6; }

/* Fecha y hora: que respeten la altura también en iOS */
.cdpm-app .fg input[type=date], .cdpm-app .fg input[type=time] { -webkit-appearance:none; appearance:none; }

/* Foco igual para todos */
.cdpm-app .fg input:focus, .cdpm-app .fg select:focus, .cdpm-app .fg textarea:focus,
.cdpm-app .toolbar select:focus, .cdpm-app .tabla-buscador input:focus, .cdpm-app .login-form input:focus {
    outline:2px solid var(--blue); outline-offset:1px; border-color:var(--blue); }

/* Etiquetas */
.cdpm-app .fg { gap:.4rem; min-width:0; }
.cdpm-app .fg label { font-size:.72rem; font-weight:700; line-height:1.25; letter-spacing:.2px; color:var(--muted); text-transform:uppercase; }

/* Filas de campos: separación uniforme y alineadas por abajo */
.cdpm-app .grid-form { gap:var(--sep) 1.25rem; align-items:end; }
.cdpm-app .toolbar { gap:var(--sep-s); align-items:flex-end; }
.cdpm-app .toolbar .fg { flex:1 1 180px; max-width:240px !important; }
.cdpm-app .fg .select-sm { max-width:none !important; width:100%; }
.cdpm-app .toolbar .btn, .cdpm-app .toolbar .btn-primary { min-height:var(--ctl-h); padding-top:0; padding-bottom:0; }
.cdpm-app .toolbar .fg[style*="max-width:420px"], .cdpm-app .card > .fg { max-width:420px !important; }

/* Controles dentro de las tablas: algo más compactos, pero iguales entre sí */
.cdpm-app td select.select-sm, .cdpm-app td input.jl-edit, .cdpm-app td .input-stat {
    height:var(--ctl-h-tabla); min-height:var(--ctl-h-tabla); border-radius:var(--r-md);
    font-family:inherit; font-size:.85rem; box-sizing:border-box; }
.cdpm-app td select.select-sm { padding:0 2.25rem 0 .7rem; }
.cdpm-app td input.jl-edit, .cdpm-app td .input-stat { padding:0 .5rem; }

/* Móvil: 16 px evita el zoom automático de iOS al tocar un campo */
@media (max-width:820px) {
    .cdpm-app .fg input:not([type=checkbox]):not([type=radio]), .cdpm-app .fg select, .cdpm-app .fg textarea,
    .cdpm-app .toolbar select, .cdpm-app .tabla-buscador input, .cdpm-app .login-form input,
    .cdpm-app td select.select-sm, .cdpm-app td .input-stat { font-size:1rem; }
    .cdpm-app .toolbar .fg { flex:1 1 calc(50% - var(--sep-s)); max-width:none !important; }
    .cdpm-app .toolbar .btn, .cdpm-app .toolbar .btn-primary { flex:1 1 auto; }
}
@media (max-width:480px) {
    .cdpm-app .toolbar .fg { flex-basis:100%; }
}

/* LV - Retoques de los formularios: columnas algo más anchas, y el desplegable de equipo ocupa dos columnas para que se lea entero. */
.cdpm-app .grid-form { grid-template-columns:repeat(auto-fit,minmax(min(170px,100%),1fr)); }
.cdpm-app .grid-form .fg:has(#j-equipo) { grid-column:span 2; }   /* el texto "— sin asignar a ningún equipo —" no cabe en una columna */
.cdpm-app .toolbar .fg:has(input[type=search]) { flex-basis:260px; max-width:300px !important; }
.cdpm-app .hint + .tabla-buscador, .cdpm-app p + .tabla-buscador { margin-top:1rem; }
@media (max-width:480px) { .cdpm-app .grid-form .fg:has(#j-equipo) { grid-column:auto; } }

/* LV - Devuelve la flecha a los desplegables: unas reglas antiguas la tapaban. */
.cdpm-app select, .cdpm-app .fg select, .cdpm-app select.select-sm, .cdpm-app .toolbar select, .cdpm-app td select.select-sm {
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2364748b' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat:no-repeat; background-position:right .85rem center; background-size:12px 8px;
}

/* =====================================================================
 * LV - Formularios largos (Fichas, Usuarios, Ajustes) en móvil: una sola columna, para
 * que se lean bien los textos de ayuda y las etiquetas no se partan en varias líneas.
 * ===================================================================*/
@media (max-width:560px) {
    .cdpm-app #tab-jugadores .grid-form,
    .cdpm-app #tab-usuarios .grid-form,
    .cdpm-app #tab-ajustes .grid-form { grid-template-columns:minmax(0,1fr); gap:.9rem; }
    .cdpm-app #tab-jugadores .grid-form .fg,
    .cdpm-app #tab-usuarios .grid-form .fg,
    .cdpm-app #tab-ajustes .grid-form .fg { grid-column:auto !important; }
}

/* =====================================================================
 * LV - Mis equipos: el nombre del equipo destaca. Cabecera azul suave con el nombre
 * grande y una barra azul degradada arriba (la misma del recuadro «Gestionando equipo»); las
 * cifras y los botones se ven más claros.
 * ===================================================================*/
.cdpm-app .team-card { padding:0; gap:0; overflow:hidden;
    box-shadow:0 1px 3px rgba(15,23,42,.06); transition:box-shadow .2s ease, transform .2s ease; }
.cdpm-app .team-card::before { content:""; display:block; flex:0 0 5px; height:5px;
    background:linear-gradient(135deg,var(--navy) 0%,var(--blue) 100%); }   /* LV - barra azul degradada de arriba, igual que el recuadro «Gestionando equipo» */
.cdpm-app .team-card:hover { box-shadow:0 14px 28px -14px rgba(15,23,42,.35); transform:translateY(-2px); }
.cdpm-app .team-card h3 { margin:0; padding:1.1rem 1.25rem .2rem; background:var(--blue-soft); color:var(--navy);
    font-size:1.4rem; font-weight:800; letter-spacing:-.3px; line-height:1.2; }
.cdpm-app .team-card .meta { padding:0 1.25rem 1.1rem; background:var(--blue-soft); color:var(--blue);
    font-size:.78rem; font-weight:700; text-transform:uppercase; letter-spacing:.8px;
    border-bottom:1px solid #dbeafe; }
.cdpm-app .team-card .stats { gap:2rem; padding:1rem 1.25rem .25rem; margin:0; border-top:0;
    font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.6px; color:var(--muted); }
.cdpm-app .team-card .stats b { font-size:1.7rem; font-weight:800; line-height:1.15; letter-spacing:-.5px;
    text-transform:none; color:var(--navy); }
.cdpm-app .team-card .action-grid { margin:0; padding:.9rem 1.25rem 1.25rem; gap:.5rem; }
.cdpm-app .team-card .btn-action { min-height:40px; padding:.5rem; border-radius:var(--r-md); }
@media (prefers-reduced-motion:reduce) { .cdpm-app .team-card, .cdpm-app .team-card:hover { transition:none; transform:none; } }

/* =====================================================================
 * ICONOS CENTRADOS
 * ---------------------------------------------------------------------
 * LV - Cada icono va en una caja del mismo tamaño y bien centrado, para que todos queden
 * alineados y las etiquetas a la misma altura aunque el dibujo cambie. También se quitan
 * los márgenes que WordPress añade a sus emojis, que los descolocaban.
 * ===================================================================*/
.cdpm-app .tab-ico, .cdpm-app .nav-ico {
    display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto;
    line-height:1; text-align:center; }
.cdpm-app .tab-ico { width:22px; height:22px; font-size:1.05rem; }
.cdpm-app .nav-movil .nav-item .nav-ico { width:30px; height:28px; font-size:1.3rem; }
.cdpm-app .nav-hoja-lista .nav-ico { width:26px; height:26px; font-size:1.15rem; }
.cdpm-app .tab-ico img.emoji, .cdpm-app .nav-ico img.emoji {
    display:block !important; width:1em !important; height:1em !important;
    margin:0 !important; padding:0 !important; vertical-align:middle !important; }

/* Círculos, píldoras y botones redondos con un símbolo o un número dentro */
.cdpm-app .dorsal, .cdpm-app .pill, .cdpm-app .pl-mas, .cdpm-app .form-strip span {
    display:inline-grid; place-items:center; line-height:1; text-align:center; padding:0; }

/* LV - Ajuste fino: las cifras y los símbolos se veían un pelín altos o bajos dentro de su círculo, así que se mueven una fracción para que queden centrados. */
.cdpm-app .dorsal { padding-top:.17em; }
.cdpm-app .pill { padding-top:.1em; }
.cdpm-app .pl-mas { padding-bottom:.065em; }

/* =====================================================================
 * LV - Ficha del jugador: la cabecera pasa a gris claro y muestra el nombre y apellidos
 * (antes era oscura y el nombre no se veía). El botón de cerrar se adapta a ese fondo claro,
 * solo en esta ventana.
 * ===================================================================*/
.cdpm-app .cdpm-modal-head { background:#f1f5f9; color:var(--navy); border-bottom:1px solid var(--border);
    padding:1rem 1.25rem; align-items:center; }
.cdpm-app .cdpm-modal-head h3 { color:var(--navy); font-size:1.3rem; font-weight:800; letter-spacing:-.3px;
    line-height:1.25; min-width:0; overflow-wrap:anywhere; }
.cdpm-app .cdpm-modal-head .btn-ghost { flex:0 0 auto; width:36px; height:36px; padding:0; display:inline-grid;
    place-items:center; line-height:1; font-size:1rem; background:#fff; color:var(--muted);
    border:1px solid var(--border); border-radius:50%; transition:color .15s, border-color .15s, background .15s; }
.cdpm-app .cdpm-modal-head .btn-ghost:hover { color:var(--navy); border-color:#94a3b8; background:#f8fafc; }
.cdpm-app .cdpm-modal-head .btn-ghost:focus-visible { outline:2px solid var(--blue); outline-offset:2px; }

/* =====================================================================
 * LV - Convocatoria y hoja de partido en móvil: cada campo ocupa el ancho que necesita
 * (Jornada pequeña, Rival grande, las dos horas juntas...) en vez de dos columnas iguales
 * donde los textos se cortaban.
 * ===================================================================*/
@media (max-width:560px) {
    .cdpm-app #tab-convocatoria .grid-form,
    .cdpm-app #tab-partido .grid-form { grid-template-columns:repeat(12,minmax(0,1fr)); grid-auto-flow:row dense; gap:.85rem .9rem; }

    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(1) { grid-column:span 3 !important; }   /* Jornada */
    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(2) { grid-column:span 9 !important; }   /* Rival */
    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(3) { grid-column:span 5 !important; }   /* Condición */
    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(4) { grid-column:span 12 !important; }  /* Lugar */
    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(5) { grid-column:span 7 !important; }   /* Fecha */
    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(6),
    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(7) { grid-column:span 6 !important; }   /* Horas */
    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(8) { grid-column:span 12 !important; }  /* Cuerpo técnico */

    .cdpm-app #tab-partido .grid-form > .fg:nth-child(1) { grid-column:span 3 !important; }        /* Jornada */
    .cdpm-app #tab-partido .grid-form > .fg:nth-child(2) { grid-column:span 9 !important; }        /* Rival */
    .cdpm-app #tab-partido .grid-form > .fg:nth-child(3),
    .cdpm-app #tab-partido .grid-form > .fg:nth-child(4) { grid-column:span 6 !important; }        /* Goles */

    /* Números cortos (jornada, goles): centrados, quedan más legibles en una caja estrecha */
    .cdpm-app #conv-jornada, .cdpm-app #est-jornada, .cdpm-app #est-gf, .cdpm-app #est-gc { text-align:center; padding-left:.4rem; padding-right:.4rem; }
}

/* LV - En móviles muy estrechos algunos campos no cabían (Visitante, la fecha), así que Condición y Fecha pasan a su propia fila. */
@media (max-width:370px) {
    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(1),
    .cdpm-app #tab-partido .grid-form > .fg:nth-child(1) { grid-column:span 4 !important; }
    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(2),
    .cdpm-app #tab-partido .grid-form > .fg:nth-child(2) { grid-column:span 8 !important; }
    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(3),
    .cdpm-app #tab-convocatoria .grid-form > .fg:nth-child(5) { grid-column:span 12 !important; }
}

/* LV - Jornada y Rival de la hoja de partido son de solo lectura y vuelven a verse en gris. */
.cdpm-app .fg input[readonly]:not([type=checkbox]):not([type=radio]) { background-color:#f1f5f9; color:var(--muted); cursor:default; }

/* =====================================================================
 * LV - Analítica del equipo: las cuatro tarjetas tienen el mismo tamaño y las listas largas
 * enseñan solo las primeras filas, con un botón «Ver todos» para ver el resto.
 * En móvil, además, las cifras de arriba son más compactas y «Últimos resultados» sube
 * al principio.
 * ===================================================================*/
.cdpm-app .lista-mas { display:none; }
.cdpm-app #tab-analitica .panels { align-items:stretch; }
.cdpm-app #tab-analitica .panel { display:flex; flex-direction:column; min-width:0; }
.cdpm-app #tab-analitica .panel > div[id] { margin-bottom:.75rem; }
.cdpm-app #tab-analitica { --ana-filas:5; }   /* filas visibles; el JS lee este valor para decidir si hace falta «Ver todos» */
@media (max-width:1099px), (max-height:933px) {
    .cdpm-app #ana-minutos:not(.lista-abierta) .bar-item:nth-child(n+6),
    .cdpm-app #ana-goles:not(.lista-abierta) .bar-item:nth-child(n+6),
    .cdpm-app #ana-asistencia:not(.lista-abierta) .bar-item:nth-child(n+6) { display:none; }
}
.cdpm-app .lista-mas:not([hidden]) { display:block; width:100%; min-height:44px; margin-top:auto; padding:0 1rem;
    background:#fff; border:1px solid var(--border); border-radius:var(--r-md); color:var(--blue);
    font-family:inherit; font-size:.9rem; font-weight:700; cursor:pointer; }
.cdpm-app .lista-mas:not([hidden]):hover { border-color:var(--blue); background:var(--blue-soft); }
.cdpm-app .lista-mas:focus-visible { outline:2px solid var(--blue); outline-offset:2px; }
@media (max-width:600px) {
    .cdpm-app #ana-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.6rem; margin-bottom:1.25rem; }
    .cdpm-app #ana-kpis .kpi { padding:.7rem .5rem; }
    .cdpm-app #ana-kpis .kpi-title { font-size:.62rem; margin-bottom:.2rem; letter-spacing:.2px; }
    .cdpm-app #ana-kpis .kpi-value { font-size:1.45rem; }
    .cdpm-app #ana-kpis .kpi-sub { font-size:.68rem; margin-top:.1rem; }
    .cdpm-app #ana-kpis .kpi:last-child:nth-child(odd) { grid-column:1 / -1; }

    .cdpm-app #tab-analitica .panel:nth-child(4) { order:-1; }
    .cdpm-app #tab-analitica .panels { gap:1rem; }

    .cdpm-app #ana-minutos .bar-item, .cdpm-app #ana-goles .bar-item, .cdpm-app #ana-asistencia .bar-item { margin-bottom:.65rem; }
}

/* =====================================================================
 * LV - Partido y minutos, más claro a la vista: marcador con cajas grandes (verde a favor,
 * rojo en contra), una franja de color por jugador según sea titular, suplente o no juegue,
 * y casillas de amarilla y roja con su color.
 * (El color por estado necesita un navegador reciente; en uno antiguo simplemente no se ve.)
 * ===================================================================*/

/* --- Marcador --- */
.cdpm-app #tab-partido .grid-form > .fg:nth-child(3),
.cdpm-app #tab-partido .grid-form > .fg:nth-child(4) { align-items:center; }
.cdpm-app #tab-partido .grid-form > .fg:nth-child(3) label,
.cdpm-app #tab-partido .grid-form > .fg:nth-child(4) label { text-align:center; }
.cdpm-app #est-gf, .cdpm-app #est-gc { width:100%; max-width:140px; height:60px; min-height:60px;
    font-size:1.9rem; font-weight:800; text-align:center; padding:0 .4rem; color:var(--navy);
    border:2px solid; border-radius:var(--r-md); }
.cdpm-app #est-gf { background-color:#ecfdf5; border-color:#a7f3d0; }   /* a favor: verde suave */
.cdpm-app #est-gc { background-color:#fef2f2; border-color:#fecaca; }   /* en contra: rojo suave */
.cdpm-app #est-gf:focus { background-color:#fff; border-color:var(--green); }
.cdpm-app #est-gc:focus { background-color:#fff; border-color:var(--red); }
.cdpm-app #est-gf::-webkit-outer-spin-button, .cdpm-app #est-gf::-webkit-inner-spin-button,
.cdpm-app #est-gc::-webkit-outer-spin-button, .cdpm-app #est-gc::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
.cdpm-app #est-gf, .cdpm-app #est-gc { -moz-appearance:textfield; appearance:textfield; }


/* --- Resumen (titulares / minutos / goles) --- */
.cdpm-app #est-resumen { margin:1rem 0; }
.cdpm-app #est-resumen .chip { padding:.4rem .9rem; }

/* --- Tabla: columnas numéricas centradas y casillas con color --- */
.cdpm-app #tab-partido thead th:nth-child(n+3), .cdpm-app #tbody-estadisticas td:nth-child(n+3) { text-align:center; }
.cdpm-app #tbody-estadisticas .input-stat { width:76px; height:var(--ctl-h-tabla); font-size:.95rem; font-weight:800;
    color:var(--navy); text-align:center; }
.cdpm-app #tbody-estadisticas input[type=checkbox] { width:22px !important; height:22px !important; margin:0; cursor:pointer; }
.cdpm-app #tbody-estadisticas .est-ta { accent-color:#f59e0b; }
.cdpm-app #tbody-estadisticas .est-tr { accent-color:#ef4444; }
.cdpm-app #tab-partido thead th:nth-child(5)::before, .cdpm-app #tab-partido thead th:nth-child(6)::before {
    content:""; display:inline-block; width:9px; height:13px; border-radius:2px; margin-right:6px; vertical-align:-2px; }
.cdpm-app #tab-partido thead th:nth-child(5)::before { background:#f59e0b; }
.cdpm-app #tab-partido thead th:nth-child(6)::before { background:#ef4444; }

/* --- Estado del jugador: desplegable teñido + franja de color --- */
.cdpm-app #tbody-estadisticas .est-tit { font-weight:700; }
.cdpm-app #tbody-estadisticas .est-tit:has(option[value="titular"]:checked)  { background-color:var(--green-soft); border-color:#a7f3d0; color:#065f46; }
.cdpm-app #tbody-estadisticas .est-tit:has(option[value="suplente"]:checked) { background-color:var(--gold-soft);  border-color:#fde68a; color:#92400e; }
.cdpm-app #tbody-estadisticas .est-tit:has(option[value="no_jugo"]:checked)  { background-color:#f1f5f9; border-color:var(--border); color:var(--muted); }
.cdpm-app #tbody-estadisticas td:first-child { box-shadow:inset 4px 0 0 #cbd5e1; }
.cdpm-app #tbody-estadisticas tr:has(.est-tit option[value="titular"]:checked)  td:first-child { box-shadow:inset 4px 0 0 var(--green); }
.cdpm-app #tbody-estadisticas tr:has(.est-tit option[value="suplente"]:checked) td:first-child { box-shadow:inset 4px 0 0 var(--gold); }

@media (max-width:820px) {
    /* En la tarjeta de móvil la franja va en toda la tarjeta, no solo en la primera celda */
    .cdpm-app #tbody-estadisticas td:first-child { box-shadow:none !important; }
    .cdpm-app #tbody-estadisticas tr { box-shadow:inset 4px 0 0 #cbd5e1; padding-left:1rem; }
    .cdpm-app #tbody-estadisticas tr:has(.est-tit option[value="titular"]:checked)  { box-shadow:inset 4px 0 0 var(--green); }
    .cdpm-app #tbody-estadisticas tr:has(.est-tit option[value="suplente"]:checked) { box-shadow:inset 4px 0 0 var(--gold); }
    .cdpm-app #tbody-estadisticas .input-stat { width:100%; height:44px; font-size:1.05rem; }
    .cdpm-app #tbody-estadisticas td:nth-child(n+3) { text-align:left; }
    .cdpm-app #tbody-estadisticas td:nth-child(3), .cdpm-app #tbody-estadisticas td:nth-child(4) { align-items:stretch; }
    .cdpm-app #tbody-estadisticas td:nth-child(5), .cdpm-app #tbody-estadisticas td:nth-child(6) { align-items:center; }
    .cdpm-app #tbody-estadisticas td:nth-child(5) input, .cdpm-app #tbody-estadisticas td:nth-child(6) input { margin-top:.5rem; width:26px !important; height:26px !important; }
}
@media (max-width:600px) {
    .cdpm-app #est-gf, .cdpm-app #est-gc { max-width:none; }
    .cdpm-app #est-resumen { display:grid; grid-template-columns:1fr 1.35fr 1fr; gap:.5rem; }
    .cdpm-app #est-resumen .chip { text-align:center; padding:.45rem .4rem; font-size:.72rem; line-height:1.25;
        display:flex; align-items:center; justify-content:center; }
}

/* LV - Las etiquetas de Jornada, Rival y Goles quedan alineadas por arriba. */
.cdpm-app #tab-partido .grid-form { align-items:start; }

/* LV - Analítica en escritorio: las cuatro tarjetas van en una fila (o 2 + 2 en pantallas medianas).
 * Al abrir «Ver todos», la lista se desplaza dentro de su tarjeta para que no crezca desigual. */
@media (min-width:601px) {
    .cdpm-app #tab-analitica .panels { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .cdpm-app #ana-minutos.lista-abierta, .cdpm-app #ana-goles.lista-abierta, .cdpm-app #ana-asistencia.lista-abierta {
        max-height:19rem; overflow-y:auto; padding-right:.5rem; scrollbar-width:thin; }
}
@media (min-width:1100px) {
    .cdpm-app #tab-analitica .panels { grid-template-columns:repeat(4,minmax(0,1fr)); }
}

/* =====================================================================
 * LV - Analítica en escritorio: ocupa todo el alto de la pantalla. Las tarjetas se estiran
 * hasta abajo y, cuanta más altura tiene la ventana, más filas se ven antes del botón
 * «Ver todos».
 * ===================================================================*/
@media (min-width:1100px) {
    .cdpm-app .wrap:has(#tab-analitica.active) { display:flex !important; flex-direction:column; min-height:100vh; min-height:100dvh; }
    .cdpm-app #tab-analitica.active { flex:1 1 auto; display:flex; flex-direction:column; }
    .cdpm-app #tab-analitica.active .panels { flex:1 1 auto; margin-bottom:0; }
}

/* Cuántas filas se ven según la altura de la ventana (cada fila extra necesita unos 43 px). */
@media (min-width:1100px) and (min-height:934px) and (max-height:977px) {
    .cdpm-app #tab-analitica { --ana-filas:6; }
    .cdpm-app #ana-minutos:not(.lista-abierta) .bar-item:nth-child(n+7),
    .cdpm-app #ana-goles:not(.lista-abierta) .bar-item:nth-child(n+7),
    .cdpm-app #ana-asistencia:not(.lista-abierta) .bar-item:nth-child(n+7) { display:none; }
}
@media (min-width:1100px) and (min-height:978px) and (max-height:1020px) {
    .cdpm-app #tab-analitica { --ana-filas:7; }
    .cdpm-app #ana-minutos:not(.lista-abierta) .bar-item:nth-child(n+8),
    .cdpm-app #ana-goles:not(.lista-abierta) .bar-item:nth-child(n+8),
    .cdpm-app #ana-asistencia:not(.lista-abierta) .bar-item:nth-child(n+8) { display:none; }
}
@media (min-width:1100px) and (min-height:1021px) and (max-height:1064px) {
    .cdpm-app #tab-analitica { --ana-filas:8; }
    .cdpm-app #ana-minutos:not(.lista-abierta) .bar-item:nth-child(n+9),
    .cdpm-app #ana-goles:not(.lista-abierta) .bar-item:nth-child(n+9),
    .cdpm-app #ana-asistencia:not(.lista-abierta) .bar-item:nth-child(n+9) { display:none; }
}
@media (min-width:1100px) and (min-height:1065px) and (max-height:1107px) {
    .cdpm-app #tab-analitica { --ana-filas:9; }
    .cdpm-app #ana-minutos:not(.lista-abierta) .bar-item:nth-child(n+10),
    .cdpm-app #ana-goles:not(.lista-abierta) .bar-item:nth-child(n+10),
    .cdpm-app #ana-asistencia:not(.lista-abierta) .bar-item:nth-child(n+10) { display:none; }
}
@media (min-width:1100px) and (min-height:1108px) and (max-height:1151px) {
    .cdpm-app #tab-analitica { --ana-filas:10; }
    .cdpm-app #ana-minutos:not(.lista-abierta) .bar-item:nth-child(n+11),
    .cdpm-app #ana-goles:not(.lista-abierta) .bar-item:nth-child(n+11),
    .cdpm-app #ana-asistencia:not(.lista-abierta) .bar-item:nth-child(n+11) { display:none; }
}
@media (min-width:1100px) and (min-height:1152px) and (max-height:1194px) {
    .cdpm-app #tab-analitica { --ana-filas:11; }
    .cdpm-app #ana-minutos:not(.lista-abierta) .bar-item:nth-child(n+12),
    .cdpm-app #ana-goles:not(.lista-abierta) .bar-item:nth-child(n+12),
    .cdpm-app #ana-asistencia:not(.lista-abierta) .bar-item:nth-child(n+12) { display:none; }
}
@media (min-width:1100px) and (min-height:1195px) and (max-height:1238px) {
    .cdpm-app #tab-analitica { --ana-filas:12; }
    .cdpm-app #ana-minutos:not(.lista-abierta) .bar-item:nth-child(n+13),
    .cdpm-app #ana-goles:not(.lista-abierta) .bar-item:nth-child(n+13),
    .cdpm-app #ana-asistencia:not(.lista-abierta) .bar-item:nth-child(n+13) { display:none; }
}
@media (min-width:1100px) and (min-height:1239px) and (max-height:1281px) {
    .cdpm-app #tab-analitica { --ana-filas:13; }
    .cdpm-app #ana-minutos:not(.lista-abierta) .bar-item:nth-child(n+14),
    .cdpm-app #ana-goles:not(.lista-abierta) .bar-item:nth-child(n+14),
    .cdpm-app #ana-asistencia:not(.lista-abierta) .bar-item:nth-child(n+14) { display:none; }
}
@media (min-width:1100px) and (min-height:1282px) { .cdpm-app #tab-analitica { --ana-filas:99; } }   /* ventana muy alta: se ven todas las filas */

/* =====================================================================
 * LV - Tablas en escritorio: esquinas redondeadas con un borde fino, para que no acaben en
 * punta. En móvil las tablas son tarjetas y no cambian.
 * ===================================================================*/
@media (min-width:821px) {
    .cdpm-app .table-wrap { border:1px solid var(--border); border-radius:var(--r-md); overflow-x:auto; overflow-y:hidden; }
    .cdpm-app .table-wrap table { margin-top:0; }
    .cdpm-app .table-wrap tbody tr:last-child td { border-bottom:0; }
}

/* LV - En «Partido y minutos», el bocadillo de goles anotados es verde claro en vez de amarillo. */
.cdpm-app #est-resumen .chip.gold { background:var(--green-soft); color:#065f46; border-color:#a7f3d0; }

/* =====================================================================
 * LV - Convocatoria en escritorio: los 9 campos van en 3 columnas y 3 filas, sin huecos
 * (Partido, Jornada y Rival; Condición, Lugar y Fecha; las dos horas y el cuerpo técnico).
 * Antes había una fila con un solo campo, otra con siete y otra con uno.
 * En móvil y tablet no cambia.
 * ===================================================================*/
@media (min-width:821px) {
    .cdpm-app #tab-convocatoria .card { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem 1.5rem; align-items:start; }
    .cdpm-app #tab-convocatoria .card > .fg:first-child { max-width:none !important; margin-bottom:0 !important; }
    .cdpm-app #tab-convocatoria .card > .grid-form { display:contents; }
    .cdpm-app #tab-convocatoria .card .grid-form > .fg:last-child { grid-column:auto !important; }   /* el cuerpo técnico traía «ocupar 2» y descuadraba la última fila */
}

/* LV - Ficha del jugador: la ventana sale centrada en la pantalla (antes quedaba pegada arriba). Si la ficha es más alta que la pantalla, se queda arriba y se puede desplazar. */
.cdpm-app .cdpm-modal-box { margin:auto; }

/* LV - Ficha del jugador en móvil, más compacta para que quepa en pantalla sin desplazar: los datos cortos (equipo, dorsal, posición, talla, cifras) van de dos en dos y los contactos, que traen correos largos, a todo el ancho. Menos espacio interior. */
@media (max-width:600px) {
    .cdpm-modal-body .ficha-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.55rem 1rem; }
    .cdpm-modal-body .ficha-sep ~ .ficha-item:has(~ .ficha-sep) { grid-column:1 / -1; }
    .cdpm-modal-body .ficha-sep { margin:.15rem 0; }
    .cdpm-modal-body { padding:.9rem 1rem 1rem; }
    .cdpm-app .cdpm-modal-head { padding:.75rem 1rem; }
    .cdpm-app .cdpm-modal-head h3 { font-size:1.2rem; }
    .cdpm-modal { padding:3vh .75rem; }
}

/* LV - Ficha del jugador: el recuadro de «Observaciones médicas» tenía el título y el texto pegados en la misma línea. Ahora el título va arriba, en pequeño, y el texto debajo, con algo de aire. */
.cdpm-modal-body .ficha-medica { margin-top:.35rem; padding:.8rem 1rem; }
.cdpm-modal-body .ficha-medica strong { display:block; margin-bottom:.3rem; font-size:.72rem; font-weight:800; text-transform:uppercase; letter-spacing:.5px; }
.cdpm-modal-body .ficha-medica span { display:block; font-size:.92rem; font-weight:600; line-height:1.4; word-break:break-word; }

/* =====================================================================
 * PANEL DE CONTROL, EQUIPOS DEL CLUB Y FICHA PERSONALIZADA (v3.9)
 * ===================================================================*/

/* --- Pendientes por equipo --- */
.cdpm-app .pend-equipo { border:1px solid var(--border); border-radius:var(--r-md);
    padding:.85rem 1rem; margin-bottom:.8rem; background:#fff; }
.cdpm-app .pend-cab { display:flex; align-items:center; justify-content:space-between;
    gap:.6rem; margin-bottom:.5rem; font-size:.95rem; color:var(--navy); }
.cdpm-app .pend-lista { list-style:none; margin:0 0 .7rem; padding:0; display:grid; gap:.4rem; }
.cdpm-app .pend-item { display:flex; align-items:baseline; gap:.6rem; font-size:.84rem;
    color:var(--text); line-height:1.35; padding-left:.65rem; border-left:3px solid var(--border); }
.cdpm-app .pend-item.alta { border-left-color:var(--red); }
.cdpm-app .pend-item.media { border-left-color:var(--gold); }
.cdpm-app .pend-item > span { flex:0 0 auto; font-size:.66rem; font-weight:800; text-transform:uppercase;
    letter-spacing:.06em; color:var(--muted); min-width:84px; }
.cdpm-app .btn-sm { padding:.35rem .75rem; font-size:.78rem; min-height:36px; }
.cdpm-app .btn-sm + .btn-sm { margin-left:.4rem; }

/* --- Última actividad y últimos accesos --- */
.cdpm-app .act-fila { display:flex; align-items:center; justify-content:space-between; gap:.8rem;
    padding:.5rem 0; border-bottom:1px solid #f1f5f9; font-size:.86rem; }
.cdpm-app .act-fila:last-child { border-bottom:0; }
.cdpm-app .act-nombre { font-weight:700; color:var(--navy); min-width:0; overflow-wrap:anywhere; }
.cdpm-app .act-fecha { flex:0 0 auto; font-size:.78rem; font-weight:700; color:var(--muted); }
.cdpm-app .act-fecha.green { color:var(--green); }
.cdpm-app .act-fecha.gold { color:#b45309; }
.cdpm-app .act-fecha.red { color:var(--red); }

/* --- Equipos ocultos en la tabla de gestión --- */
.cdpm-app tr.eq-oculto { background:#f8fafc; }
.cdpm-app tr.eq-oculto .player-name { color:var(--muted); }

/* --- Ficha del jugador con los colores del club --- */
.cdpm-app .ficha-head { position:relative; overflow:hidden; display:flex; align-items:center; gap:.9rem;
    background:linear-gradient(135deg, var(--navy) 0%, #1e3a8a 100%); color:#fff;
    border-bottom:4px solid var(--gold); }
.cdpm-app .ficha-head h3 { color:#fff; margin:0; font-size:1.25rem; line-height:1.2; }
.cdpm-app .ficha-escudo { position:absolute; right:-14px; top:50%; transform:translateY(-50%);
    height:120px; opacity:.13; pointer-events:none; }
.cdpm-app .ficha-dorsal { flex:0 0 auto; display:inline-grid; place-items:center; width:46px; height:46px;
    border-radius:50%; background:var(--gold); color:var(--navy); font-weight:900; font-size:1.2rem;
    letter-spacing:-.5px; }
.cdpm-app .ficha-titulo { min-width:0; flex:1 1 auto; }
.cdpm-app .ficha-sub { display:block; margin-top:2px; font-size:.74rem; font-weight:700;
    text-transform:uppercase; letter-spacing:.08em; color:var(--gold); }
.cdpm-app .ficha-head .btn-ghost { position:relative; z-index:1; background:rgba(255,255,255,.12);
    color:#fff; border-color:rgba(255,255,255,.35); }
.cdpm-app .ficha-head .btn-ghost:hover { background:rgba(255,255,255,.22); color:#fff; border-color:#fff; }
@media (max-width:600px) {
    .cdpm-app .ficha-head h3 { font-size:1.08rem; }
    .cdpm-app .ficha-dorsal { width:40px; height:40px; font-size:1.05rem; }
    .cdpm-app .ficha-escudo { height:92px; }
}

/* =====================================================================
 * TEMPORADA, AGENDA, COMPARADOR Y REGISTRO (v3.10)
 * ===================================================================*/

/* --- Temporada: lista de partidos desplegable --- */
.cdpm-app .temp-partido { border:1px solid var(--border); border-radius:var(--r-md);
    background:#fff; margin-bottom:.6rem; overflow:hidden; }
.cdpm-app .temp-partido.abierto { border-color:var(--blue); box-shadow:0 10px 24px -18px rgba(15,23,42,.6); }
.cdpm-app .temp-cab { display:flex; align-items:center; gap:.9rem; width:100%; min-height:62px;
    padding:.7rem 1rem; border:0; background:none; cursor:pointer; font-family:inherit; text-align:left; }
.cdpm-app .temp-cab:hover { background:#f8fafc; }
.cdpm-app .temp-jornada { flex:0 0 auto; display:inline-grid; place-items:center; min-width:42px; height:30px;
    padding:0 .5rem; border-radius:999px; background:var(--navy); color:var(--gold);
    font-size:.78rem; font-weight:800; }
.cdpm-app .temp-datos { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:2px; }
.cdpm-app .temp-datos b { font-size:.95rem; color:var(--navy); overflow-wrap:anywhere; }
.cdpm-app .temp-datos small { font-size:.75rem; color:var(--muted); }
.cdpm-app .temp-marcador { flex:0 0 auto; font-size:1.05rem; font-weight:800; color:var(--navy);
    min-width:62px; text-align:center; }
.cdpm-app .temp-marcador.gana { color:var(--green); }
.cdpm-app .temp-marcador.pierde { color:var(--red); }
.cdpm-app .temp-marcador.empata { color:#b45309; }
.cdpm-app .temp-flecha { flex:0 0 auto; display:inline-grid; place-items:center; width:28px; height:28px;
    border-radius:50%; background:#f1f5f9; color:var(--navy); font-weight:800; }
.cdpm-app .temp-detalle { padding:0 1rem 1rem; border-top:1px solid var(--border); }
.cdpm-app .temp-detalle .table-wrap { margin-top:.8rem; }
.cdpm-app .temp-notas { display:grid; gap:.8rem; margin-top:.9rem; }
.cdpm-app .temp-notas strong { display:block; font-size:.72rem; font-weight:800; text-transform:uppercase;
    letter-spacing:.06em; color:var(--muted); margin-bottom:.25rem; }
.cdpm-app .temp-notas p { margin:0; font-size:.9rem; line-height:1.5; color:var(--text);
    background:#f8fafc; border-left:3px solid var(--gold); border-radius:var(--r-sm); padding:.6rem .8rem; }
@media (min-width:821px) { .cdpm-app .temp-notas { grid-template-columns:1fr 1fr; } }

/* --- Notas en la hoja de partido --- */
.cdpm-app .notas-partido { margin-top:1rem; }

/* --- Agenda: qué pasa estos días --- */
.cdpm-app .agenda-dia { margin-bottom:.9rem; }
.cdpm-app .agenda-fecha { font-size:.72rem; font-weight:800; text-transform:uppercase; letter-spacing:.08em;
    color:var(--muted); padding-bottom:.35rem; border-bottom:2px solid var(--border); margin-bottom:.5rem; }
.cdpm-app .agenda-fila { display:flex; align-items:center; gap:.9rem; flex-wrap:wrap;
    padding:.55rem 0; border-bottom:1px solid #f1f5f9; }
.cdpm-app .agenda-fila:last-child { border-bottom:0; }
.cdpm-app .agenda-hora { flex:0 0 auto; min-width:52px; font-size:1rem; font-weight:800; color:var(--navy); }
.cdpm-app .agenda-equipo { flex:1 1 220px; min-width:0; display:flex; flex-direction:column; }
.cdpm-app .agenda-equipo b { font-size:.9rem; color:var(--navy); }
.cdpm-app .agenda-equipo small { font-size:.75rem; color:var(--muted); }
.cdpm-app .agenda-cita { flex:0 0 auto; display:flex; flex-direction:column; align-items:center;
    font-size:.62rem; font-weight:700; text-transform:uppercase; color:var(--muted); }
.cdpm-app .agenda-cita b { font-size:.9rem; color:var(--navy); }
.cdpm-app .agenda-estado { flex:0 0 auto; font-size:.74rem; font-weight:800; padding:.3rem .7rem;
    border-radius:999px; }
.cdpm-app .agenda-estado.ok { background:var(--green-soft); color:#065f46; }
.cdpm-app .agenda-estado.falta { background:var(--red-soft); color:#991b1b; }

/* --- Comparador de equipos --- */
.cdpm-app .cmp-tabla td:first-child { font-weight:700; color:var(--muted); }
.cdpm-app .cmp-tabla th:not(:first-child), .cdpm-app .cmp-tabla td:not(:first-child) { text-align:center; }

/* --- Registro de cambios --- */
.cdpm-app .reg-lista { max-height:420px; overflow-y:auto; }
.cdpm-app .reg-fila { display:grid; grid-template-columns:auto auto 1fr auto; gap:.25rem .9rem;
    align-items:baseline; padding:.5rem 0; border-bottom:1px solid #f1f5f9; font-size:.84rem; }
.cdpm-app .reg-fecha { font-size:.74rem; font-weight:700; color:var(--muted); white-space:nowrap; }
.cdpm-app .reg-accion { font-size:.68rem; font-weight:800; text-transform:uppercase; letter-spacing:.05em;
    color:var(--blue); white-space:nowrap; }
.cdpm-app .reg-detalle { color:var(--text); overflow-wrap:anywhere; }
.cdpm-app .reg-quien { font-size:.76rem; font-weight:700; color:var(--navy); white-space:nowrap; }
@media (max-width:820px) {
    .cdpm-app .reg-fila { grid-template-columns:1fr; gap:.15rem; }
    .cdpm-app .temp-cab { flex-wrap:wrap; }
    .cdpm-app .temp-marcador { min-width:0; }
}
